Topics are the logical “buckets” your events are split into. They serve to indicate the different types of events you’re sending, and act as the signpost for sending events to downstream subscriptions.
A topic, identified by it’s slug, is the destination you send events to. Subscriptions are then attached to a topic, and consume the events that their given topic has recieved.When sending an event, you send it to a single specific topic.
client.publish("topic-slug", event);
The topic then distributes the event to all the child subscriptions for consumption in your application.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Sailhouse","colors":{"primary":"#ff8e3c","light":"#ff8e3c","dark":"#ff8e3c"},"logo":{"light":"https://mintcdn.com/sailhouse/YV_RX8UqlSyMKR-i/logo/light.svg?fit=max\u0026auto=format\u0026n=YV_RX8UqlSyMKR-i\u0026q=85\u0026s=728ed364a11a203156cb574800daf309","dark":"https://mintcdn.com/sailhouse/YV_RX8UqlSyMKR-i/logo/dark.svg?fit=max\u0026auto=format\u0026n=YV_RX8UqlSyMKR-i\u0026q=85\u0026s=68f8e39947f8b14654923d815840097e"},"favicon":"/favicon.png","api":{"openapi":["api-reference/openapi.json"]},"navbar":{"links":[{"label":"Support","href":"mailto:support@sailhouse.dev"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.sailhouse.dev"}},"footer":{"socials":{"twitter":"https://twitter.com/sailhousedev","github":"https://github.com/sailhouse","linkedin":"https://www.linkedin.com/company/sailhousedev"}},"integrations":{"plausible":{"domain":"docs.sailhouse.dev"}},"contextual":{"options":["copy","view"]},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://sailhouse.dev/blog"},{"anchor":"Changelog","icon":"calendar","href":"https://sailhouse.dev/changelog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sailhouse","hasAudioNarration":false,"actualSubdomain":"sailhouse","customDomains":["docs.sailhouse.dev"],"gitSource":{"type":"github","owner":"sailhouse","repo":"docs-new","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21e61b4c43fec466d793e0","collectionId":"445c3c44-5a44-4cba-a367-954610034572","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21e61b4c43fec466d793e0:success","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Documentation","count":22},{"language":"default","tag":"Guides","count":7},{"language":"default","tag":"Concepts","count":5},{"language":"default","tag":"SDKs","count":5},{"language":"default","tag":"API Reference","count":4},{"language":"default","tag":"Processing","count":2},{"language":"default","tag":"Get Started","count":2},{"language":"default","tag":"Reference","count":2},{"language":"default","tag":"Sending events","count":1},{"language":"default","tag":"API Documentation","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"concepts/topics","slug":"/concepts/topics","pageMetadata":{"title":"Topics","description":null,"href":"/concepts/topics"},"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}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Topics are the logical “buckets” your `,_jsx(_components.a,{href:`/concepts/events`,children:`events`}),` are split into. They serve to indicate the different types of events you’re sending, and act as the signpost for sending events to downstream `,_jsx(_components.a,{href:`/concepts/subscriptions`,children:`subscriptions`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`summary`,children:`Summary`}),`\n`,_jsxs(_components.p,{children:[`A topic, identified by it’s `,_jsx(_components.code,{children:`slug`}),`, is the destination you send events to. Subscriptions are then attached to a topic, and consume the events that their given topic has recieved.`]}),`\n`,_jsx(_components.p,{children:`When sending an event, you send it to a single specific topic.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`publish`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"topic-slug\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The topic then distributes the event to all the child subscriptions for consumption in your application.`})]})}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":"Topics","description":null,"href":"/concepts/topics"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Summary","slug":"summary","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"sailhouse","siteName":"Sailhouse","title":"Topics - Sailhouse","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-07T00:51:48.345Z","originalFileLocation":"concepts/topics.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=\"application-name\" content=\"Sailhouse\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_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/sailhouse/LM-ZcuAYI-HuJw2M/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Topics - Sailhouse\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sailhouse\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sailhouse.dev/concepts/topics\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sailhouse.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Topics\u0026amp;theme=3c0015df2b2c00cbd9c01ff0\u0026amp;signature=5ad9e64421dcd36cfd483c329b593c998f16363eb2bcf88fb5d354177b886f17\">\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=\"Topics - Sailhouse\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sailhouse.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Topics\u0026amp;theme=3c0015df2b2c00cbd9c01ff0\u0026amp;signature=5ad9e64421dcd36cfd483c329b593c998f16363eb2bcf88fb5d354177b886f17\">\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/sailhouse/LM-ZcuAYI-HuJw2M/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sailhouse\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff8e3c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sailhouse.dev/concepts/topics\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/topics.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.sailhouse.dev/#organization\",\"name\":\"Sailhouse\",\"url\":\"https://docs.sailhouse.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/sailhouse/YV_RX8UqlSyMKR-i/logo/light.svg?fit=max\u0026auto=format\u0026n=YV_RX8UqlSyMKR-i\u0026q=85\u0026s=728ed364a11a203156cb574800daf309\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sailhouse.dev#website\",\"name\":\"Sailhouse\",\"url\":\"https://docs.sailhouse.dev\",\"publisher\":{\"@id\":\"https://docs.sailhouse.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sailhouse.dev/concepts/topics#webpage\",\"url\":\"https://docs.sailhouse.dev/concepts/topics\",\"name\":\"Topics\",\"dateModified\":\"2026-01-07T00:51:48.345Z\",\"isPartOf\":{\"@id\":\"https://docs.sailhouse.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sailhouse.dev/concepts/topics#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sailhouse.dev/concepts/topics#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sailhouse\",\"item\":\"https://docs.sailhouse.dev\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Topics\",\"item\":\"https://docs.sailhouse.dev/concepts/topics\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.sailhouse.dev/concepts/topics#article\",\"headline\":\"Topics\",\"name\":\"Topics\",\"url\":\"https://docs.sailhouse.dev/concepts/topics\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sailhouse.dev/concepts/topics#webpage\"},\"dateModified\":\"2026-01-07T00:51:48.345Z\",\"publisher\":{\"@id\":\"https://docs.sailhouse.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sailhouse.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sailhouse\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Sailhouse","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://sailhouse.dev/blog"},{"anchor":"Changelog","icon":"calendar","href":"https://sailhouse.dev/changelog"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Guides","pages":[{"title":"Sending events","href":"/guides/sending-events"},{"title":"Receiving push events","href":"/guides/receiving-push-events"},{"title":"Pulling events","href":"/guides/pulling-events"},{"title":"Workflows","href":"/guides/workflows"},{"title":"Cron jobs","href":"/guides/cron-jobs"},{"title":"Scheduling events","href":"/guides/scheduling-events"},{"title":"Advanced Filtering","description":"Learn how to use complex filters, rate limiting, and deduplication","href":"/guides/advanced-filtering"}]},{"group":"Concepts","pages":[{"title":"Topics","href":"/concepts/topics"},{"title":"Subscriptions","description":null,"href":"/concepts/subscriptions"},{"title":"Events","href":"/concepts/events"},{"title":"Self Healing","href":"/concepts/self-healing"},{"title":"Wait groups","href":"/concepts/wait-groups"}]},{"group":"SDKs","pages":[{"title":"Introduction","href":"/sdks/introduction"},{"title":"TypeScript / JavaScript","icon":"js","href":"/sdks/typescript"},{"title":"Go","icon":"golang","href":"/sdks/go"},{"title":"Python (Beta)","icon":"python","href":"/sdks/python"},{"title":"Rust (Beta)","icon":"rust","href":"/sdks/rust"}]},{"group":"Observability","pages":[{"title":"Tracing events","href":"/observability/tracing"}]},{"group":"Reference","pages":[{"title":"Frequently Asked Questions","sidebarTitle":"Frequently Asked Questions","href":"/reference/faq"},{"title":"Tokens","href":"/reference/tokens"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli-reference/introduction"}]}]},"title":"Topics - Sailhouse","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}