Substack Signup Form on Your Website: Embed or Custom
By the newsletterapi team · Published · Updated · 6 min read
The problem: “I want people to subscribe from my own website's form, but Substack has no API, so my Webflow or Carrd form can't add them.”
Short answer
Substack's official signup form is an iframe embed: copy the code from Settings → Growth features and paste it into any site that supports iframes. For a form that matches your design, collect the email and consent on your own page, then hand off to Substack so the reader clicks Subscribe themselves. Never post emails to Substack from your server or import people who didn't opt in.
The problem
"Substack doesn't appear to be on Zapier, so are there any workarounds for automating someone signing up for the newsletter through our native Webflow form and adding them to Substack?" (r/Substack, May 2026)
"Carrd.co works with many newsletter platforms, but not Substack.com due to its current lack of an API." (Indie Hackers, 2020)
"Substack doesn’t have an API, so I can’t keep the existing yellow sign-up form." (We Switched to Substack, 2022)
Your website is where people find you, and its signup form is part of your brand. When the newsletter moves to Substack, that form suddenly has nowhere to send emails. The question has been asked for six years, and the answer hasn't changed much: Substack wants each reader to subscribe themselves. A commenter in the Webflow thread put it bluntly: "The only way to solicit newsletter subscriptions from an external website is to use the embeddable subscribe button" (r/Substack).
That's not quite the only way. This guide covers the official embed, the /subscribe link, and how to run your own styled form that hands off to Substack while keeping consent clean.
What are my options for a Substack signup form?
| Option | Looks like your site? | Reader subscribes on | Status (October 2026) |
|---|---|---|---|
| Signup embed (iframe) | No; only the logo can be hidden | Your page, inside Substack's iframe | Documented (embed help) |
Link or button to /subscribe |
Your button, Substack's page | Substack's sign-up page | Documented (subscribe help) |
Your form, then hand-off to /subscribe |
Yes | Substack's page, after your form | Uses documented pages; you record consent first |
| Your form, posted by the reader's browser to Substack's form endpoint | Yes | Your page; the reader's own click sends it | Undocumented; mirrors Substack's own embed and can change |
| Server-side "add subscriber" API | n/a | n/a | Doesn't exist publicly; don't fake it |
How do I add Substack's signup embed?
- In your publication, open Settings → Growth features. You'll see "a unique code for your publication" (embed help).
- Optional: switch off "Show pub logo on embed" to hide your name and logo, then copy the new code.
- Paste it into your site's custom HTML or embed block. The code is an iframe that points at your publication's
/embedpage; copy it exactly from your settings rather than retyping it.
Substack says the form works "on any platform that supports iFrames (WordPress, Squarespace, custom websites, etc.) but this excludes Medium", and that it "is not customizable" (embed help). After clicking Subscribe, readers see your paid plans or pledge options if you have them.
If you want stronger proof of consent, turn on Settings → Emails → "Require email address confirmation" (double opt-in). Substack notes it "will reduce the number of readers who receive emails" (double opt-in help).
How do I use my own form and hand off to Substack?
The idea: your form collects the email and a clear opt-in, you store a consent record, and then Substack takes over so the reader subscribes themselves. Nobody is added who didn't click.
Pattern A: your form, then Substack's /subscribe page
Every publication has a sign-up page at /subscribe, on a custom domain too. If Substack doesn't recognise the visitor, "they'll be asked for their email address first" (subscribe help). The reader types their email once on your form and confirms on Substack.
<form id="signup">
<label for="signup-email">Email</label>
<input id="signup-email" type="email" required autocomplete="email">
<label>
<input id="signup-consent" type="checkbox" required>
Email me the Your Pub newsletter (sent via Substack). I can unsubscribe at any time.
</label>
<button type="submit">Continue to subscribe</button>
</form>
<script>
const SUBSTACK = "https://yourpub.substack.com"; // or your custom domain
const CONSENT_TEXT = "Email me the Your Pub newsletter (sent via Substack). I can unsubscribe at any time.";
document.getElementById("signup").addEventListener("submit", (event) => {
event.preventDefault();
navigator.sendBeacon("/api/newsletter-consent", new URLSearchParams({
email: document.getElementById("signup-email").value,
consent_text: CONSENT_TEXT,
consent_version: "2026-10-24",
page: location.href, // keeps your UTM tags with the record
at: new Date().toISOString(),
}));
location.href = `${SUBSTACK}/subscribe`;
});
</script>
/api/newsletter-consent is an endpoint on your own site that saves the record. sendBeacon is built for this: it queues a small POST that the browser sends even as the page navigates away (MDN). The record says the person agreed on your form; they're only a subscriber once they finish on Substack.
Pattern B: your form, submitted by the reader's browser
Substack's own embed is a plain HTML form. In its page source (observed 24 October 2026 on a public publication) the form posts to /api/v1/free?nojs=true with the email in a field named email (embed page). A form on your site can do the same thing: the reader's browser sends it when the reader clicks Subscribe, exactly as it would inside the iframe.
<form id="signup" action="https://yourpub.substack.com/api/v1/free?nojs=true" method="post">
<label for="signup-email">Email</label>
<input id="signup-email" name="email" type="email" required autocomplete="email">
<label>
<input id="signup-consent" type="checkbox" required>
Email me the Your Pub newsletter (sent via Substack). I can unsubscribe at any time.
</label>
<p>By subscribing you agree to Substack's <a href="https://substack.com/tos">Terms of Use</a>
and <a href="https://substack.com/privacy">Privacy Policy</a>.</p>
<button type="submit">Subscribe</button>
</form>
<script>
document.getElementById("signup").addEventListener("submit", () => {
navigator.sendBeacon("/api/newsletter-consent", new URLSearchParams({
email: document.getElementById("signup-email").value,
consent_version: "2026-10-24",
page: location.href,
at: new Date().toISOString(),
}));
// No preventDefault: the browser now submits the form to Substack.
});
</script>
The consent checkbox has no name, so it isn't sent to Substack. Substack's embed shows a notice that subscribing means agreeing to Substack's Terms of Use and Privacy Policy; the sample keeps that.
Know the trade-offs before you choose Pattern B:
- It's undocumented. Substack documents the embed, not this endpoint. It can change without notice, so test it with your own address after any Substack update.
- The reader lands on Substack. After submitting they leave your site for a Substack page; we didn't test which one, because we don't subscribe addresses we don't own. Try it with your own email first.
- It must stay a reader action. The point is that the reader's own click sends the form. Don't move this call to your server.
How do I record consent properly?
Substack says publishers "are the data controllers of that audience" (Substack help), so the records are yours to keep. The ICO's checklist is a good standard. Record who consented, when, what they were told ("a master copy of the document or data capture form containing the consent statement in use at that time"), how they consented, and whether they later withdrew. It also says you "cannot rely on silence, inactivity, pre-ticked boxes, opt-out boxes" (ICO).
In practice:
- Name your newsletter and Substack in the checkbox text.
- Version the wording (
consent_versionabove) and keep every version. - If you also want the person in Kit or your CRM, ask with a second unticked box. If they leave Substack later, remove them there too; see syncing Substack unsubscribes to your CRM.
- Keep the UTM tags with the record; that's the per-person attribution Substack can't give you (attribution guide).
What should I never do?
- Don't add people for them. Substack's guidelines say: "Don't add people to your mailing list without their consent, and don't import your contacts list or social graphs" (Content Guidelines).
- Don't proxy signups through your server. Posting emails to Substack from a backend, or faking browser headers, turns a reader action into an automated one. It's the pattern that gets blocked and puts your publication at risk.
- Don't batch-import form leads without an opt-in that names your newsletter. Substack screens imports and requires "lists contain only those who have explicitly opted in to receiving messages from your publication" (imports help). More in adding subscribers to Substack.
- Don't use bots that type emails into Substack for you.
Where newsletterapi fits
None of newsletterapi's products is a signup form, and we don't add subscribers for you. What sits well next to your form is newsletterapi embeds: your latest Substack posts as JSON or widgets on the same page, so visitors see what they're signing up for. Embedding posts is covered in embedding Substack posts on your website, and company sites in Substack for business. For everything you can and can't automate, read the Substack API guide. To get access, email hello@newsletterapi.io.
Questions people ask
- Can I customise Substack's embed signup form?
- Only slightly. As of October 2026 Substack says the embed "is not customizable", apart from a toggle that hides your publication's name and logo. For your own design, use a custom form that hands off to Substack.
- Does the Substack embed work on Webflow, Carrd or WordPress?
- Substack says the embed works on any platform that supports iframes, naming WordPress, Squarespace and custom websites, and excluding Medium. If your builder has a custom HTML or embed block, paste the code there.
- Can my website form add subscribers to Substack automatically?
- Not through an official API, Zapier app or webhook as of October 2026. Your form can hand the reader to Substack, where they subscribe themselves. Sending emails to Substack from your server, without the reader clicking, isn't a supported or consented route.
- Do I need a consent checkbox?
- Use an unticked box or clear wording that says what they're signing up for, and keep a record of who agreed, when and to what. The ICO says you cannot rely on pre-ticked boxes for consent.
- Can I add website signups to Kit or my CRM too?
- Only with separate, explicit consent for those emails. Ask with a second unticked checkbox, store the answer, and don't assume that subscribing to your Substack covers your other marketing.
Sources
- Substack Help: Can I embed a signup form for my Substack publication? (accessed 2026-10-24)
- Substack Help: How do readers subscribe to my Substack publication? (accessed 2026-10-24)
- Substack Help: How do I require new subscribers to confirm their email on Substack? (accessed 2026-10-24)
- Substack Help: How do email list imports work? (accessed 2026-10-24)
- Substack Help: Is Substack a data controller or a data processor? (accessed 2026-10-24)
- Substack Content Guidelines (Last Updated September 29, 2026) (accessed 2026-10-24)
- Substack embed signup page (page source, observed on a public publication) (accessed 2026-10-24)
- ICO: How should we obtain, record and manage consent? (accessed 2026-10-24)
- r/Substack: Webflow form to Substack (2026-05-13) (accessed 2026-10-21)
- Indie Hackers: How do I automate subscribing with Carrd + Substack? (2020-12-29) (accessed 2026-10-21)
- We Switched to Substack (2022-07-03) (accessed 2026-10-21)
- MDN: Navigator.sendBeacon() (accessed 2026-10-24)
Related guides
How-to · Writers
How to Embed Substack Posts on Your Website
Every way to embed Substack on your site: the post and Note embed code, the signup form iframe, RSS-based post lists, and why browser fetches fail.
5 min read · Updated 2026-10-21
How-to · Writers
How to Add Subscribers to Substack Without Getting Blocked
Add or import subscribers to Substack the safe way: CSV import steps, the 72-hour review, consent rules, the signup embed, lead forms and Meta ads.
6 min read · Updated 2026-10-21
How-to · Teams & agencies
Facebook Lead Ads to Substack: How to Get Leads In
Running Meta ads for your Substack but stuck moving leads in by hand? Consent-first setups: landing page plus signup embed, opt-in relay, batch import, pixel.
5 min read · Updated 2026-10-21