ChatRaj
How-to guide

How to add an AI chatbot to Substack in 2026

Substack blocks custom scripts. Here are the four real workarounds, the tradeoffs of each, and a full walkthrough of the recommended satellite landing page path.

Jump to the 4 paths
Bottom line
Substack does not allow custom JavaScript, script tags, or third-party widget embeds in posts or on the homepage. There are four honest workarounds: host the chatbot on a satellite Carrd or Webflow landing page at a subdomain and link from every Substack post, use a Substack custom domain plus an external loader if your setup allows it, run an email-only pseudo-chatbot via an inbound mail handler, or lean on Substack's own limited AI features. The satellite-page path is the recommended one.
Reviewed by ··9 min read
Jump to section

What Substack does and does not allow in 2026

Substack publishes hundreds of thousands of writers, but it is not a website builder. It is a hosted newsletter platform with a deliberately narrow editor. That narrowness is the reason every "how to add a chatbot to Substack" tutorial you read in 2026 is either wrong, misleading, or quietly recommends a different tool.

Here is the honest summary of what Substack does and does not allow in 2026, based on the current Substack Help Center documentation:

  • No custom HTML in posts. The Substack post editor accepts text, images, video embeds from a small allowlist (YouTube, Vimeo, Twitter, a few others), buttons, polls, and code blocks for syntax-highlighted display. It does not accept raw HTML, and it strips anything that looks like a script tag on save.
  • No custom CSS on your publication. You cannot edit your theme's CSS or inject a stylesheet. The closest you get is the publication appearance settings (colors, fonts from a fixed list, header layout).
  • No third-party JavaScript widgets. No chat widgets, no live chat bubbles, no popup tools, no quiz embeds, no scheduling widgets. The platform's content security policy will not load them even if you paste the snippet into a code block, and the editor will not preserve a script tag through a save.
  • A small analytics allowlist. Substack does allow Google Analytics 4 and Google Tag Manager via dedicated fields in Settings, plus a small set of ad pixels (Facebook, Twitter, LinkedIn). This is not a general-purpose script injection escape hatch. The GTM container is loaded inside a sandbox that blocks most non-analytics tags.
  • Custom domain is a paid one-time upgrade. For a one-time $50 fee per publication, you can point a domain you own (newsletter.yourbrand.com or yourbrand.com) at your Substack. This changes the URL bar. It does not unlock script injection or HTML editing. The editor and the content security policy still apply.

If you came here hoping that Substack Pro or the custom domain upgrade would unlock a script-tag install, the honest answer is no. The upgrade swaps the domain in the URL bar and that is the entire feature.

Why writers want a chatbot on their Substack

Once a Substack newsletter has run for a year, the archive becomes the asset. New subscribers do not read backwards through 80 issues. Existing subscribers who half-remember a post from last winter cannot find it via Substack's search, because Substack search is shallow and slow.

What subscribers actually want is a way to ask the writer's archive a question. "What did you write about the 2024 election predictions?" "Did you ever recommend a book on Stoic philosophy?" "What was the framework you used for evaluating that startup?" These are knowledge-base questions over the writer's archive, and a small AI chatbot trained on the writer's posts is the right shape of answer.

The friction point is everything in the previous section. The writer wants a chat bubble on every post. Substack will not let them put one there.

The 4 workarounds (honest about each tradeoff)

There are exactly four ways to give your Substack readers an AI chatbot experience in 2026. Three are real workarounds, the fourth is what Substack itself ships natively.

Path 1: Satellite landing page (recommended). Build a one-page site on Carrd, Webflow, Framer, or any host that accepts script tags. Put it at a subdomain you control (chat.yourpub.com). Drop the chatbot widget on that page. Train the bot on your Substack archive via RSS or a manual upload. Then link to chat.yourpub.com from your Substack header, your Substack footer pinned post, and the footer of every new post you publish. Readers tap the link, land on the satellite page, and chat with the bot there.

Path 2: Substack custom domain plus external loader. If you have already paid the $50 custom domain fee and you also have a separate marketing site on a domain you fully control, you can sometimes co-locate the chatbot widget on a parent landing page and treat your Substack subdomain as one section of a larger site. This is not a script-injection escape hatch on Substack itself; it is a way to keep your brand at one domain while routing newsletter traffic through Substack on a subdomain. We cover the limits below.

Path 3: Email-only "Reply to this post" pseudo-chatbot. Substack lets readers reply to your posts by email. Pipe replies to an AI agent that reads the original post plus the reader's question and replies with an answer. This is not a chatbot in the chat-bubble sense. It is a one-shot Q&A by email. For some audiences (older, email-native, reflective readers) it is closer to the right experience anyway.

Path 4: Substack's own AI features. Substack has shipped some AI tooling, mostly around Notes (its short-form post format) and recommendations, plus draft assistance for writers. As of 2026 there is no Substack-native "chat with my archive" widget for subscribers. If one ships, it will be the simplest path. Today it does not exist.

The recommended path is #1. The math and the steps are below.

Path 1: satellite landing page (Webflow / Carrd) at a subdomain

The satellite-page pattern is straightforward. You already own a domain (the same one or one related to your Substack publication). You create a DNS record for chat.yourpub.com that points at a hosted one-page site. The one-page site is built in Carrd, Webflow, Framer, or a similar tool that supports custom code embeds. On that page you paste your chatbot's script tag, configure the bot to ingest your Substack archive, and publish. From every Substack post you link to https://chat.yourpub.com with a "Ask my archive a question" call to action.

The cost picture is friendly. Carrd Pro Standard is $19 per year and includes custom domains and custom code embeds. Carrd Pro Plus at $49 per year explicitly allows direct script tag embeds. Webflow Basic is in the $14 per month range and Framer Mini is around $5 per month. The chatbot itself sits in your existing budget. ChatRaj Pro at $29 per month plus a $19 per year Carrd works out to about $367 per year all-in for a fully working "ask my archive" experience.

The friction point is the click. Your subscriber is on a Substack post, sees a link in the footer, and has to tap it to leave the post and land on the satellite page. That is one extra click compared to a native chat bubble. In practice it is a tolerable amount of friction, especially if you frame the link as "Ask my archive a question" rather than as "open chatbot". Curiosity-driven clicks convert well.

What does not work: you cannot iframe the chatbot widget into a Substack post and have it actually render. Substack strips iframes outside its allowlist and the content security policy blocks the iframe even if the markup survives. The link-out pattern is the only reliable shape.

Path 2: custom domain on Substack plus injected widget loader (limited)

Substack's custom domain feature swaps the URL. It does not unlock new editor capabilities. If you point newsletter.yourbrand.com at Substack, your readers see your brand in the URL bar, but the editor still strips script tags and the content security policy still blocks third-party widgets.

The narrow case where the custom domain helps with chatbot install is this: you already have a marketing site at yourbrand.com (on Webflow, Framer, Next.js, anything), and you use the Substack custom domain to put your newsletter at newsletter.yourbrand.com. Your marketing site at the root domain has the chatbot widget loaded normally. Subscribers who land on your marketing site see and use the chatbot there. Subscribers who land directly on a newsletter post do not see the chatbot, because Substack still blocks the script. From the post you link back to the marketing site's chat surface.

In other words, Path 2 is really a variant of Path 1 where the satellite page is your existing marketing site rather than a new Carrd. The constraint Substack imposes is identical: the chat widget cannot live inside the post itself.

Verify the current Substack help docs before committing $50 to the custom domain. Substack does occasionally update policies, and the custom domain trade-off (you lose visibility inside Substack's internal recommendation network when you switch off the substack.com domain) is real. For many writers the recommendation network is worth more than the brand control.

Path 3: email-only "Reply to this post" pseudo-chatbot

This path is the most "Substack native" of the four because it leans on what Substack already does well, which is email.

The setup: every Substack post that lands in a subscriber's inbox has a reply-to address. By default replies go to the writer. You can route those replies instead to an inbound email handler service (SendGrid Inbound Parse, Postmark Inbound, Mailgun Routes, Cloudflare Email Routing, or your own SMTP listener). The handler hands the email body to an AI agent that has been trained on your Substack archive. The agent generates a reply that answers the reader's question, references the relevant archived post by link, and sends it back to the reader.

From the reader's point of view, this looks like an unusually attentive writer who answers every email within seconds with a thoughtful reply that links to old posts they vaguely remembered. It is not a chat bubble experience. It is closer to a personal correspondence experience.

The tradeoffs are real. Email is asynchronous; the back-and-forth latency is one round trip per reader question. The handler-to-AI plumbing is more work than dropping a script tag into Carrd. You need to be careful about reply attribution so the reader does not think a human author wrote the AI reply (a short disclaimer at the top of the AI reply is the standard practice). And email-only conversations leave no record on a web page, so the experience does not compound into searchable content.

This path is the right choice for newsletters whose audience reads in email and not on the web, where the brand voice is highly personal, and where the writer is willing to invest in the email-handler infrastructure. For most writers, Path 1 is simpler.

Path 4: Substack's own AI features (limited)

Substack has been slowly adding AI features to the platform. As of 2026 the surface area includes draft assistance for writers, recommendations powered by AI matching, and some AI features around Notes (Substack's short-form post format).

What does not exist as of 2026: a Substack-native "subscribers can chat with this writer's archive" widget. The platform's current AI investment is on the writer side (helping writers draft) and the discovery side (helping readers find new writers), not on the reader-archive-conversation side.

If Substack ships a native archive chat feature in the future, it will almost certainly be the simplest path: zero plumbing, zero satellite pages, zero risk. Until then, this path is a placeholder. Watch the Substack changelog and the On Substack publication for announcements.

Below is the end-to-end install of the satellite-page pattern using Carrd Pro Standard. The same steps work on Webflow, Framer, and any other host that accepts custom code embeds.

  1. Buy a Carrd Pro Standard plan and pick a subdomain. Carrd Pro Standard at $19 per year unlocks custom domain support and embeds. In your DNS provider, create a CNAME record for chat.yourpub.com pointing at the Carrd value documented in their custom-domain help article.
  2. Build a one-page chat site. In Carrd, start a new site with a minimal template. The page should have your publication name at the top, one paragraph that frames the chat ("Ask my archive a question. The bot has read every issue since 2023."), and a placeholder div for the widget.
  3. Paste the chatbot script tag into an Embed element. In Carrd add an Embed element. Paste the chatbot's loader script. For ChatRaj it looks like a one-line script tag with your bot ID. Save the embed and preview the page.
  4. Train the bot on your Substack archive. In your chatbot's dashboard, ingest the writer's archive. The simplest input is the Substack RSS feed at yourpub.substack.com/feed, which exposes the most recent posts. For deeper coverage, export your full archive from Substack Settings, upload the resulting file, and let the bot index everything.
  5. Publish, then add an "Ask my archive" link to every Substack post footer. Publish the Carrd site at chat.yourpub.com. Then in Substack, edit your post template (or each new post's footer) to include a short call-to-action: "Have a question about something I wrote? Ask my archive at chat.yourpub.com." Add the same link to your About page and your welcome email.

The whole flow above is a one-time setup of about 60 to 90 minutes plus the time it takes to train the bot on your archive (which runs in the background).

Common pitfalls

A few traps catch first-time installs that are worth flagging up front.

Trying to paste the script tag into a Substack post. It will not work. Substack strips script tags on save and the content security policy blocks them at load time even if they survived. Do not waste an hour on this; the platform will not let you in.

Using a free Carrd site at username.carrd.co. The free Carrd plan does not include custom code embeds or custom domains. You need Pro Standard or higher to drop a working script tag and to put the site at chat.yourpub.com. The $19 a year is the price of admission.

Forgetting to train the bot on the archive. A chatbot that does not know your archive is a chatbot that disappoints. Always ingest the writer's full archive (RSS plus exported back issues) before publishing the link from Substack posts. An untrained bot generating generic AI answers is worse than no bot at all.

Burying the link. A single "Ask my archive" link in the footer of a 4,000-word post will get tapped by less than 1% of readers. Put the link in the post intro, the post footer, the publication header, and the welcome email. Frame it as a curiosity hook ("Want to ask the archive a question?") rather than as a chatbot ("Open chatbot").

Forgetting subscriber privacy. Your bot will receive questions from your subscribers. Be explicit on the chat page about what you do with the transcripts (you keep them, you do not, you use them to improve the bot, etc.). A two-line privacy note above the chat is the standard pattern.

Once the satellite page is live and the link is in the footer of every post, you have a working "ask the archive" experience on a platform that does not officially support one. The honesty about Substack's constraints is also the honesty about why this pattern works at all.

Install guide

Install the satellite-page path (recommended)

5 steps. Most operators finish in 60 seconds.

  1. Buy a Carrd Pro Standard plan and pick a subdomain

    Carrd Pro Standard is $19 per year and unlocks both custom domains and custom code embeds, which are the two features the satellite-page path needs. Sign up at carrd.co. In your DNS provider, create a CNAME record for chat.yourpub.com pointing at the value Carrd documents in their custom domain help article. The DNS change typically propagates inside an hour.

  2. Build a one-page chat site in Carrd

    Start a new Carrd site. Pick a minimal one-page template. Add three blocks: your publication name as a header, a single paragraph that frames the chat ('Ask my archive a question. The bot has read every issue since 2023.'), and a placeholder area where the chatbot widget will render. Keep the page short. Subscribers should land, read one sentence, and start typing.

  3. Paste your chatbot's script tag into a Carrd Embed element

    In the Carrd editor, add an Embed element where the chat widget should appear. Paste your chatbot's loader. For ChatRaj it looks like a single async script tag with your bot ID. Save the embed. Preview the page. The chat bubble should render inside the embed area within a second or two.

  4. Train the bot on your Substack archive

    In your ChatRaj dashboard, ingest your Substack archive. The easiest input is your Substack RSS feed at yourpub.substack.com/feed, which surfaces the most recent posts. For full historical coverage, export your archive from Substack Settings and upload the resulting file. Let the bot index everything before you publish the link from Substack posts.

  5. Publish, then link to chat.yourpub.com from every Substack post footer

    Publish the Carrd site. Visit chat.yourpub.com in an incognito window and confirm the chat bubble loads and answers a test question. Then edit your Substack post template (or each new post) to include a short footer line: 'Have a question about something I wrote? Ask my archive at chat.yourpub.com.' Add the same link to your About page and your subscriber welcome email.

ChatRaj on Substack chatbots

Satellite page vs custom domain vs email-only vs Substack AI

Tradeoffs across cost, setup time, and Substack policy risk.

The plugin approach

Other Substack chatbots chatbot tools

Typical when you install a WordPress plugin, Shopify app, or third-party chatbot widget.

  • Setup time: Path 3 (email-only): hours of inbound-mail plumbing. Path 4 (Substack AI): waiting on Substack roadmap.
  • All-in annual cost: Path 2 (Substack custom domain + Webflow): $50 one-time + about $168 per year for Webflow Basic + chatbot.
  • Subscriber friction: Path 3 (email): one full email round-trip per question. Path 2: depends on whether the chat is on the marketing site or the newsletter subdomain.
  • Substack policy risk: Trying to paste script tags inside Substack posts: blocked by editor and content security policy.
  • Searchable transcript / shareable URL: Path 3 (email): no public URL. Path 4 (Substack AI): no archive chat surface exists yet.
  • Works with Substack custom domain: Path 2 requires the $50 custom domain upgrade. Path 4 is independent of custom domain.
  • Ingests the writer's archive: Path 4 (Substack AI): not currently a feature. Path 3: the AI can read posts on demand but does not pre-index the archive.
  • Native chat bubble inside a Substack post: All four paths: not possible. Substack blocks third-party widgets inside posts.
  • Requires DNS configuration: Path 3: only inbound mail routing. Path 4: nothing.
  • Recommended for non-technical writers: Path 3 (email plumbing): too much engineering. Path 2 (Webflow + custom domain): real but heavier.
The ChatRaj approach

One script tag. Everything bundled.

Hosted, configured, and maintained by us. You add a single line to your site.

  • Setup time: Path 1 (satellite Carrd): about 60 to 90 minutes from signup to live link.
  • All-in annual cost: Path 1: $19 per year for Carrd Pro Standard + chatbot subscription. About $367 per year with ChatRaj Pro.
  • Subscriber friction: Path 1: one tap from the post footer to the satellite page, then native chat.
  • Substack policy risk: Path 1: zero policy risk. The widget lives on a domain you control. Substack only sees an outbound link.
  • Searchable transcript / shareable URL: Path 1: chat.yourpub.com is a real URL you can share, link to, and SEO.
  • Works with Substack custom domain: Path 1 is independent of the Substack custom domain. Both yourpub.substack.com and newsletter.yourpub.com can link out to chat.yourpub.com.
  • Ingests the writer's archive: Path 1: ChatRaj indexes the Substack RSS feed plus the exported archive file.
  • Native chat bubble inside a Substack post: Path 1 redirects to a satellite page where the bubble lives. The post itself stays a Substack post.
  • Requires DNS configuration: Path 1: one CNAME record for chat.yourpub.com. Carrd documents the exact value.
  • Recommended for non-technical writers: Path 1 (Carrd): yes. No code beyond pasting a script tag into the Embed element.
FAQ: Substack chatbot install

Common Substack chatbot questions

No. The Substack post editor strips script tags on save, and the platform's content security policy will not load third-party JavaScript widgets even if a tag somehow survives the save. This is a deliberate policy choice, not a bug. The only workable patterns are off-Substack: a satellite landing page at a subdomain you control, an email-only flow, or waiting on Substack's native AI features.

Was this helpful?

Ship your first chatbot in 60 seconds.

Sign in with Google and you'll be answering visitor questions before your coffee gets cold.

60-second setup · One-line install · Works on any site

Works on any website
SShopify
WWebflow
WPWordPress
SqSquarespace
FFramer
</>Plain HTML