The kafka write mode buffers data in Kafka before writing it to ClickHouse. This mode is useful when you have a high volume of data and want to avoid overwhelming ClickHouse. This mode takes advantage of ClickHouse’s kafka table engine.
Setup
To set up Dittofeed with the kafka write mode, you can make use of the following environment variables:
# necessary to use the write modeWRITE_MODE=kafka# the kafka host and portnames to write toKAFKA_BROKERS=host1:port1,host2:port2# the username and password to use for the kafka connectionKAFKA_USERNAME=my-kafka-usernameKAFKA_PASSWORD=my-kafka-password# whether to use SSL for the kafka connectionKAFKA_SSL=true# the kafka sasl mechanism to use# possible values are: plain, scram-sha-256, scram-sha-512KAFKA_SASL_MECHANISM=plain# the number of partitions to use for the user events topic when bootstrappingKAFKA_USER_EVENTS_PARTITIONS=1# the replication factor to use for the user events topic when bootstrappingKAFKA_USER_EVENTS_REPLICATION_FACTOR=1# the name of the user events topic to create when bootstrappingUSER_EVENTS_TOPIC_NAME=dittofeed-user-events
ClickHouse Kafka SASL Configuration
When using Kafka with SASL authentication, ClickHouse requires additional configuration in its config file. Create or modify the ClickHouse configuration file to include SASL settings:
SASL authentication settings cannot be configured at the table level in ClickHouse and must be set in the server configuration file. ClickHouse requires a restart when SASL configuration changes.
Bootstrap
Finally, you can run the bootstrap script to create the necessary Kafka topic:
BOOTSTRAP_KAFKA=true ./admin.sh bootstrap
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Dittofeed","colors":{"primary":"#FF8101","light":"#FFDA71","dark":"#FF8101"},"logo":{"light":"https://mintcdn.com/dittofeed/abmbv2I9puhRd1Zb/logo/light.png?fit=max\u0026auto=format\u0026n=abmbv2I9puhRd1Zb\u0026q=85\u0026s=bdd0cf89297f94a24d09411bb12cea58","dark":"https://mintcdn.com/dittofeed/abmbv2I9puhRd1Zb/logo/dark.png?fit=max\u0026auto=format\u0026n=abmbv2I9puhRd1Zb\u0026q=85\u0026s=bc60648977c0f46358a8dce1c687e3b1","href":"https://dittofeed.com"},"favicon":"/favicon_1.png","api":{"playground":{"display":"interactive"},"mdx":{"auth":{"method":"key","name":"Authorization"},"server":"http://localhost:3001"}},"navbar":{"links":[{"label":"Community","href":"https://discord.gg/HajPkCG4Mm"}],"primary":{"type":"github","href":"https://github.com/dittofeed/dittofeed"}},"footer":{"socials":{"twitter":"https://twitter.com/dittofeed","github":"https://github.com/dittofeed/dittofeed","linkedin":"https://www.linkedin.com/company/dittofeed"}},"integrations":{"posthog":{"apiKey":"phc_nAONMdL3n31UGZLr5QmIpPlyHqHV327DgxPCRjMusrG"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Get Instant Help","icon":"discord","href":"https://discord.gg/HajPkCG4Mm"},{"anchor":"Tutorial Videos","icon":"youtube","href":"https://www.youtube.com/@Dittofeed"},{"anchor":"Demo App","icon":"bullseye-pointer","href":"https://demo.dittofeed.com/dashboard/journeys"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dittofeed","hasAudioNarration":false,"actualSubdomain":"dittofeed","customDomains":["docs.dittofeed.com"],"gitSource":{"type":"github","owner":"dittofeed","repo":"dittofeed","deployBranch":"main","contentDirectory":"packages/docs","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae9144ef004577547957259:success","clientVersion":"0.0.4131","searchFilterCounts":[{"language":"default","tag":"Documentation","count":108},{"language":"default","tag":"API Reference","count":94},{"language":"default","tag":"Workspace Resources","count":38},{"language":"default","tag":"Deployment","count":26},{"language":"default","tag":"Self-Hosting Options","count":24},{"language":"default","tag":"Integrations","count":22},{"language":"default","tag":"Upgrade Guide","count":14},{"language":"default","tag":"User Guides","count":14},{"language":"default","tag":"Message Channel Types","count":10},{"language":"default","tag":"Segment Nodes","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"deployment/self-hosted/write-modes/kafka","slug":"/deployment/self-hosted/write-modes/kafka","pageMetadata":{"title":"Kafka Write Mode","description":"Buffer data in Kafka before writing to ClickHouse","href":"/deployment/self-hosted/write-modes/kafka"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Buffer data in Kafka before writing to ClickHouse\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`kafka`}),` write mode buffers data in Kafka before writing it to ClickHouse. This mode is useful when you have a high volume of data and want to avoid overwhelming ClickHouse. This mode takes advantage of ClickHouse’s `,_jsx(_components.a,{href:`https://clickhouse.com/docs/en/integrations/kafka/kafka-table-engine`,children:`kafka table engine`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`setup`,children:`Setup`}),`\n`,_jsxs(_components.p,{children:[`To set up Dittofeed with the `,_jsx(_components.code,{children:`kafka`}),` write mode, you can make use of the following environment variables:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# necessary to use the write mode`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`WRITE_MODE=kafka`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# the kafka host and portnames to write to`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_BROKERS=host1:port1,host2:port2`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# the username and password to use for the kafka connection`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_USERNAME=my-kafka-username`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_PASSWORD=my-kafka-password`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# whether to use SSL for the kafka connection`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_SSL=true`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# the kafka sasl mechanism to use`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# possible values are: plain, scram-sha-256, scram-sha-512`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_SASL_MECHANISM=plain`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# the number of partitions to use for the user events topic when bootstrapping`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_USER_EVENTS_PARTITIONS=1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# the replication factor to use for the user events topic when bootstrapping`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`KAFKA_USER_EVENTS_REPLICATION_FACTOR=1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# the name of the user events topic to create when bootstrapping`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`USER_EVENTS_TOPIC_NAME=dittofeed-user-events`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`clickhouse-kafka-sasl-configuration`,children:`ClickHouse Kafka SASL Configuration`}),`\n`,_jsx(_components.p,{children:`When using Kafka with SASL authentication, ClickHouse requires additional configuration in its config file. Create or modify the ClickHouse configuration file to include SASL settings:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`xml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\u003c!-- clickhouse_config.xml -->`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`clickhouse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kafka`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`security_protocol`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`sasl_plaintext`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`security_protocol`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_mechanism`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`PLAIN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_mechanism`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`your-kafka-username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`your-kafka-password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kafka`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`clickhouse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`For SSL-enabled Kafka connections, use:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`xml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\u003c!-- clickhouse_config.xml -->`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`clickhouse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kafka`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`security_protocol`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`sasl_ssl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`security_protocol`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_mechanism`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`PLAIN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_mechanism`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`your-kafka-username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_username`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`your-kafka-password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`sasl_password`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`kafka`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`clickhouse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`SASL authentication settings cannot be configured at the table level in ClickHouse and must be set in the server configuration file. ClickHouse requires a restart when SASL configuration changes.`})}),`\n`,_jsx(Heading,{level:`2`,id:`bootstrap`,children:`Bootstrap`}),`\n`,_jsx(_components.p,{children:`Finally, you can run the bootstrap script to create the necessary Kafka topic:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`BOOTSTRAP_KAFKA=true ./admin.sh bootstrap`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Kafka Write Mode","description":"Buffer data in Kafka before writing to ClickHouse","href":"/deployment/self-hosted/write-modes/kafka"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Setup","slug":"setup","depth":2,"children":[]},{"title":"ClickHouse Kafka SASL Configuration","slug":"clickhouse-kafka-sasl-configuration","depth":2,"children":[]},{"title":"Bootstrap","slug":"bootstrap","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dittofeed","siteName":"Dittofeed","title":"Kafka Write Mode - Dittofeed","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-12-03T21:41:12.566Z","originalFileLocation":"deployment/self-hosted/write-modes/kafka.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Buffer data in Kafka before writing to ClickHouse\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dittofeed\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Kafka Write Mode - Dittofeed\">\u003cmeta data-mint-head property=\"og:description\" content=\"Buffer data in Kafka before writing to ClickHouse\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dittofeed\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dittofeed.mintlify.site/_mintlify/api/og/v2?division=Write+Modes\u0026amp;title=Kafka+Write+Mode\u0026amp;description=Buffer+data+in+Kafka+before+writing+to+ClickHouse\u0026amp;theme=157fbe8b52da582ed89636c0\u0026amp;signature=dfe5fdaa8cbe047ba298e5b71e5166f085d84bc64a328602470c4204a006ee36\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Kafka Write Mode - Dittofeed\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Buffer data in Kafka before writing to ClickHouse\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dittofeed.mintlify.site/_mintlify/api/og/v2?division=Write+Modes\u0026amp;title=Kafka+Write+Mode\u0026amp;description=Buffer+data+in+Kafka+before+writing+to+ClickHouse\u0026amp;theme=157fbe8b52da582ed89636c0\u0026amp;signature=dfe5fdaa8cbe047ba298e5b71e5166f085d84bc64a328602470c4204a006ee36\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/dittofeed/WmOcDbx6WUy8pMCI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dittofeed\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF8101\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/deployment/self-hosted/write-modes/kafka.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dittofeed.com/#organization\",\"name\":\"Dittofeed\",\"url\":\"https://docs.dittofeed.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dittofeed/abmbv2I9puhRd1Zb/logo/light.png?fit=max\u0026auto=format\u0026n=abmbv2I9puhRd1Zb\u0026q=85\u0026s=bdd0cf89297f94a24d09411bb12cea58\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dittofeed.com#website\",\"name\":\"Dittofeed\",\"url\":\"https://docs.dittofeed.com\",\"publisher\":{\"@id\":\"https://docs.dittofeed.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka#webpage\",\"url\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka\",\"name\":\"Kafka Write Mode\",\"description\":\"Buffer data in Kafka before writing to ClickHouse\",\"dateModified\":\"2025-12-03T21:41:12.566Z\",\"isPartOf\":{\"@id\":\"https://docs.dittofeed.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deployment\",\"item\":\"https://docs.dittofeed.com/deployment/self-hosted\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Self-Hosting Options\",\"item\":\"https://docs.dittofeed.com/deployment/self-hosted/render\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kafka Write Mode\",\"item\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka#article\",\"headline\":\"Kafka Write Mode\",\"name\":\"Kafka Write Mode\",\"description\":\"Buffer data in Kafka before writing to ClickHouse\",\"url\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dittofeed.com/deployment/self-hosted/write-modes/kafka#webpage\"},\"dateModified\":\"2025-12-03T21:41:12.566Z\",\"publisher\":{\"@id\":\"https://docs.dittofeed.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dittofeed.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dittofeed\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Dittofeed\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/deployment/self-hosted/write-modes/kafka.md","siteName":"Dittofeed","nav":{"global":{"anchors":[{"anchor":"Get Instant Help","icon":"discord","href":"https://discord.gg/HajPkCG4Mm"},{"anchor":"Tutorial Videos","icon":"youtube","href":"https://www.youtube.com/@Dittofeed"},{"anchor":"Demo App","icon":"bullseye-pointer","href":"https://demo.dittofeed.com/dashboard/journeys"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quick Start","href":"/quick-start"},{"title":"Video Walkthrough","href":"/video-walkthrough"},{"title":"dittofeed-ee","href":"/dittofeed-ee"},{"title":"Glossary","href":"/glossary"}]},{"group":"Deployment","pages":[{"title":"Self-hosting Dittofeed","href":"/deployment/self-hosted"},{"group":"Self-Hosting Options","pages":[{"title":"Self-Host with Render","href":"/deployment/self-hosted/render"},{"title":"Self-Host with Docker Compose","href":"/deployment/self-hosted/docker-compose"},{"title":"Self-Host with Kubernetes","href":"/deployment/self-hosted/kubernetes"},{"title":"Self-Host with AWS Cloudformation","href":"/deployment/self-hosted/cloudformation"},{"title":"dittofeed-ee","href":"/deployment/self-hosted/dittofeed-ee"},{"title":"Authentication and Authorization in Dittofeed","href":"/deployment/self-hosted/auth-modes"},{"group":"Auth Modes","pages":[{"title":"multi-tenant Auth Mode","href":"/deployment/self-hosted/auth-modes/multi-tenant"}]},{"group":"Upgrade Guide","pages":[{"title":"Upgrading from v0.22.0 to v0.23.0","href":"/deployment/self-hosted/upgrade-guide/v0-23-0"},{"title":"Upgrading from v0.21.0 to v0.22.0","href":"/deployment/self-hosted/upgrade-guide/v0-22-0"},{"title":"Upgrading from v0.20.0 to v0.21.0","href":"/deployment/self-hosted/upgrade-guide/v0-21-0"},{"title":"Upgrading from v0.19.0 to v0.20.0","href":"/deployment/self-hosted/upgrade-guide/v0-20-0"},{"title":"Upgrading from v0.18.1 to v0.19.0","href":"/deployment/self-hosted/upgrade-guide/v0-19-0"},{"title":"Upgrading from v0.17.0 to v0.18.1","href":"/deployment/self-hosted/upgrade-guide/v0-18-0"},{"title":"Upgrading from v0.16.0 to v0.17.0","href":"/deployment/self-hosted/upgrade-guide/v0-17-0"},{"title":"Upgrading from v0.15.0 to v0.16.0","href":"/deployment/self-hosted/upgrade-guide/v0-16-0"},{"title":"Upgrading from v0.14.0 to v0.15.0","href":"/deployment/self-hosted/upgrade-guide/v0-15-0"},{"title":"Upgrading from v0.13.13 to v0.14.0","href":"/deployment/self-hosted/upgrade-guide/v0-14-0"},{"title":"Upgrading from v0.12.1 to v0.13.1","href":"/deployment/self-hosted/upgrade-guide/v0-13-0"},{"title":"Upgrading from v0.11.0 to v0.12.1","href":"/deployment/self-hosted/upgrade-guide/v0-12-0"},{"title":"Upgrading from v0.10.0 to v0.11.2","href":"/deployment/self-hosted/upgrade-guide/v0-11-0"},{"title":"Upgrading from v0.9.0 to v0.10.0","href":"/deployment/self-hosted/upgrade-guide/v0-10-0"}]},{"title":"Write Modes","description":"How Dittofeed writes data from its API layer to ClickHouse.","href":"/deployment/self-hosted/write-modes"},{"group":"Write Modes","pages":[{"title":"Kafka Write Mode","href":"/deployment/self-hosted/write-modes/kafka"}]},{"title":"Blob Storage","description":"Learn how to configure Dittofeed to use a custom blob storage.","href":"/deployment/self-hosted/blob-storage"}]},{"title":"Using Dittofeed Cloud","href":"/deployment/cloud"}]},{"group":"Integrations","pages":[{"title":"Data Sources","href":"/integrations/sources"},{"group":"Data Source Types","pages":[{"title":"Using Segment.io as a Source","href":"/integrations/sources/segment"},{"title":"Using Dittofeed's REST API as a source","href":"/integrations/sources/api"},{"title":"Using Dittofeed's Polytomic Integration","href":"/integrations/sources/polytomic"}]},{"title":"Message Channels","href":"/integrations/channels"},{"group":"Message Channel Types","pages":[{"title":"Sending Email with Dittofeed","href":"/integrations/channels/email"},{"title":"SendGrid Integration","href":"/integrations/channels/sendgrid"},{"title":"Postmark Integration","href":"/integrations/channels/postmark"},{"title":"Resend Integration","href":"/integrations/channels/resend"},{"title":"SMTP Server Integration","href":"/integrations/channels/smtp"},{"title":"Amazon SES Integration","href":"/integrations/channels/amazonses"},{"title":"Sending SMS with Dittofeed","href":"/integrations/channels/sms"},{"title":"Twilio SMS Integration","href":"/integrations/channels/twilio"},{"title":"Triggering Webhooks with Dittofeed","href":"/integrations/channels/webhooks"},{"title":"Mailchimp Integration via Mandrill","href":"/integrations/channels/mailchimp"}]},{"title":"SDK's","href":"/integrations/sdks"},{"group":"Available SDK's","pages":[{"title":"Web SDK","href":"/integrations/sdks/web"},{"title":"Node.js SDK","href":"/integrations/sdks/node"},{"title":"React Native SDK","href":"/integrations/sdks/react-native"}]},{"title":"Data Destinations","href":"/integrations/destinations"},{"group":"Data Destination Types","pages":[{"title":"Hubspot Destination","href":"/integrations/destinations/hubspot"},{"title":"CSV Export Destination","href":"/integrations/destinations/csv"}]}]},{"group":"Workspace Resources","pages":[{"title":"Resources","href":"/resources/introduction"},{"title":"Journeys","href":"/resources/journeys"},{"group":"Journey Nodes","pages":[{"title":"Entry - Journey Node","href":"/resources/journey-nodes/entry"},{"title":"Message - Journey Node","href":"/resources/journey-nodes/message"},{"title":"Wait For - Journey Node","href":"/resources/journey-nodes/wait-for"},{"title":"Delay - Journey Node","href":"/resources/journey-nodes/delay"},{"title":"Segment Split - Journey Node","href":"/resources/journey-nodes/segment-split"},{"title":"Exit - Journey Node","href":"/resources/journey-nodes/exit"}]},{"title":"Segments","href":"/resources/segments"},{"group":"Segment Nodes","pages":[{"title":"Trait - Segment Node","href":"/resources/segment-nodes/trait"},{"title":"Performed - Segment Node","href":"/resources/segment-nodes/performed"},{"title":"And - Segment Node","href":"/resources/segment-nodes/and"},{"title":"Or - Segment Node","href":"/resources/segment-nodes/or"},{"title":"Manual - Segment Node","href":"/resources/segment-nodes/manual"},{"title":"Subscription Group - Segment Node","href":"/resources/segment-nodes/subscription-group"},{"title":"Email - Segment Node","href":"/resources/segment-nodes/email"},{"title":"Random Bucket - Segment Node","href":"/resources/segment-nodes/random-bucket"},{"title":"Keyed Performed Segment","href":"/resources/segment-nodes/keyed-performed"},{"title":"Includes - Segment Node","href":"/resources/segment-nodes/includes"}]},{"title":"Templates","href":"/resources/templates"},{"group":"Template Types","pages":[{"title":"Email Template Editor","href":"/resources/templates/email-editor"},{"title":"MJML Responsive Email","href":"/resources/templates/mjml"},{"title":"Liquid Presets","href":"/resources/templates/liquid-presets"},{"title":"Free MJML Email Templates","href":"/resources/templates/free-mjml-email-templates"},{"title":"SMS Template Editor","href":"/resources/templates/sms-editor"},{"title":"Webhook Template Editor","href":"/resources/templates/webhook-editor"}]},{"title":"Workspaces","href":"/resources/workspaces"},{"title":"Subscription Groups","href":"/resources/subscription-groups"},{"title":"User Properties","href":"/resources/user-properties"},{"group":"User Property Types","pages":[{"title":"Trait - User Property","href":"/resources/user-property-types/trait"},{"title":"Performed - User Property","href":"/resources/user-property-types/performed"},{"title":"Any Of - User Property","href":"/resources/user-property-types/any-of"},{"title":"File - User Property","href":"/resources/user-property-types/file"},{"title":"User Id - User Property","href":"/resources/user-property-types/id"},{"title":"Anonymous Id - User Property","href":"/resources/user-property-types/anonymous-id"},{"title":"Keyed Performed - User Property","href":"/resources/user-property-types/keyed-performed"}]},{"title":"Broadcasts","href":"/resources/broadcasts"},{"title":"Groups","href":"/resources/groups"}]},{"group":"User Guides","pages":[{"title":"Submitting User Events","href":"/guide/submitting-user-events"},{"title":"Internal Events","href":"/guide/internal-events"},{"title":null,"href":"/guide/roadmap"},{"title":"Frequently Asked Questions (FAQ)","href":"/guide/faq"},{"title":"Creating Journeys","href":"/guide/creating-journeys"},{"title":"Custom Recipient Properties","href":"/guide/custom-recipient-properties"},{"group":"Sample Journeys","pages":[{"title":"Appointment Reminders","href":"/guide/sample-journeys/appointment-reminders"}]},{"title":"Accessing the Admin API","href":"/guide/accessing-admin-api"},{"title":"Submitting Broadcasts via API","href":"/guide/submitting-broadcasts-api"},{"title":"Mailing List / Newsletter","href":"/guide/mailing-list"},{"title":"View in Browser","href":"/guide/view-in-browser"},{"title":"Custom Subscription Management Page","href":"/guide/custom-subscription-page"},{"title":"Git Based Workflows","href":"/guide/git-workflows"},{"title":null,"href":"/guide/license"}]},{"group":"Contributing","pages":[{"title":"Running Dittofeed Locally","href":"/contributing/running-locally"},{"title":"System Architecture","href":"/contributing/architecture"},{"title":"Updating Dittofeed's API Docs","href":"/contributing/updating-api-docs"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/endpoints/apps/identify"}]},{"tab":"Embedded Components","pages":[{"title":"Embedded Components","href":"/embedded/getting-started"}]}]},"basePath":"","title":"Kafka Write Mode - Dittofeed","buildId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","deploymentId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","dynamics":[],"chunks":[]}