Skip to main content
ASoc
Tutorial

Email Signup Landing Pages: Where the Capture Point Actually Goes

Squeeze-page advice says strip the page to one form. Only 14 of 66 landing templates in this catalog do — audited against this storefront's own single, sitewide capture point.

The ASoc Team10 min read

An email signup landing page is usually taught as a single-purpose squeeze page: one form, no nav, nothing else to click. That advice is right for a dedicated capture page, but it isn't how most marketing sites actually convert email addresses — in this catalog, only 14 of 66 landing templates give the ask its own section; the rest fold it into a page built to do several other jobs first.

What "landing page" means changes the answer

The squeeze-page rule — strip the page to one CTA — comes from paid-traffic playbooks where the visitor already clicked an ad promising exactly one thing. A SaaS marketing site, a real-estate template, a publication homepage: none of those have a single job. They sell the product first and the email address second, if at all.

That split shows up directly in this storefront's own catalog. A quick census of the 66 landing products in src/data/catalog.ts for anything resembling a dedicated capture point (newsletter, email capture, email CTA in the feature/description copy):

Count
Landing templates in the catalog66
Ship a dedicated capture section14 (21%)
Fold it into an existing section (footer, blog)52 (79%)

Fourteen products call it out as its own block: ASoc Haven pairs a free-valuation form with a newsletter signup for real-estate leads, ASoc Nimbus and ASoc Weave both ship it as a named "email CTA," and ASoc Quill — a publication template — gives it a full "newsletter subscribe block" next to the categories list, because a reading habit is exactly the kind of intent an email address is worth capturing for. The other 52 don't skip email capture; they just don't treat it as a page section, because it isn't the page's job.

This storefront is one of the 52. The working example isn't a landing-page feature at all — it's a single, sitewide placement:

// src/components/organisms/Footer.tsx
<h2 className="mb-4 text-lg font-semibold text-white">Newsletter</h2>
<p className="text-base text-[#98A2B3]">
  Get new components and updates in your inbox
</p>
<NewsletterForm />

One <NewsletterForm /> call site, rendered once, in the footer that ships on every route. No product page, no pricing page, no blog post carries its own capture form — because none of them is the reason someone would give us an email address; the newsletter itself is. That's a legitimate third pattern search advice rarely names: not "squeeze page" and not "embedded section," but sitewide-and-out-of-the-way, for a site whose primary conversion isn't an email address at all.

Four placement patterns, and where each one earns its keep

PatternWhere it livesWhat it optimizes forFits
Squeeze pageThe whole page, no navConversion rate on paid traffic that already opted in to the offerAd landing pages, lead magnets, pre-launch waitlists
Hero-embedded inputAbove the fold, next to the headlineCapturing intent before the visitor reads anything elseProducts whose only CTA is "get notified" — few marketing sites qualify
Dedicated sectionA named block mid-page, after the sellReaders who've already been convinced enough to want moreContent-heavy sites (publications, blogs) and products whose value compounds over time — the 14 above
Footer, sitewideEvery route, same placementPassive capture that never competes with the page's real CTAA marketing site whose primary ask is not an email address — this storefront

The mistake is picking a pattern by copying whatever a template markets, rather than by what the page's primary CTA actually is. A product landing page whose real job is "click Buy Now" doesn't need a hero-embedded email field competing with that button — a footer or a closing section does the job without the fight. A publication or a waitlist page where the email address is the conversion earns the dedicated real estate.

The backend is one Server Action, already covered

Whichever pattern you pick, the form itself doesn't need new backend work — a landing page's email capture and a dedicated waitlist page can be the exact same call:

// src/lib/actions/newsletter.ts
export async function subscribeToWaitlist(
  _prev: FormState,
  formData: FormData,
): Promise<FormState> {
  // Honeypot: real users never fill this hidden field.
  if (formData.get("company")) return { ok: true, message: "…" };
  // …validates, then posts to Resend's Contacts API
}

The honeypot field, the Resend Audience integration, and the accessible success/error message are the hard half of this problem, and they're already the whole subject of A Waitlist Landing Page Is One Server Action and a Honeypot and React Toast Notification (the live-region defect this exact form used to have). Neither is repeated here — what changes between a squeeze page and a footer widget is only where the form is called from, not what it does when submitted.

No pattern above removes the two things a compliant, honest capture form needs written by hand:

  • One field, one ask. Every pattern in the table above asks for an email address alone — no name, no company, no "tell us about your project." Every extra field measurably drops completion, and a landing page's job is the sell, not lead qualification.
  • What they're signing up for, stated in the form itself, not assumed from context. "New components and updates in your inbox" (this storefront's own copy) is one sentence, sits directly under the field, and means the confirmation email a subscriber gets isn't a surprise.
  • A visible unsubscribe path in every email sent afterward — Resend's own sending API refuses to guarantee deliverability without it, independent of any legal requirement.

None of that needs a design decision about section placement. It needs someone to write the one sentence honestly, wherever the form ends up living.

Troubleshooting

SymptomLikely causeFix
Signup rate is near zero on a content-heavy pageCapture is buried in the footer on a page where email is the primary goalPromote it to a dedicated section — see the 14-product pattern above
A hero-embedded field is hurting the primary CTA's click-throughTwo competing asks above the foldDemote the email field to a footer or closing section; the primary CTA should have no rival
The success message never announces to screen readersThe aria-live region was mounted only when there's a message to showMount the live region unconditionally, always — see React Toast Notification
Bot signups are polluting the listNo honeypot, or a honeypot with display: none in the DOM but not visually hidden from assistive tech tooPair display: none with aria-hidden and tabIndex={-1}, as in subscribeToWaitlist's form
Subscribers report they didn't expect the follow-up emailsThe signup copy described the page's product, not what the newsletter itself sendsState what's actually in the newsletter, in the sentence next to the field

FAQ

Does an email signup need its own landing page, or can it live on an existing page? Both are legitimate — the choice depends on traffic source. Paid traffic that already opted in to "get the ebook" converts best on a dedicated squeeze page with no nav. Organic visitors browsing a marketing site convert on whichever section matches how convinced they already are: a dedicated block for content-driven sites, a footer widget for everyone else.

Where should the form sit if the page has more than one goal? Below whatever the primary goal is. Only 14 of 66 templates surveyed here give email capture its own section, and every one of them is a product where reading or returning content is the point — not a one-time purchase decision competing for the same click.

Is one email field enough, or should the form ask for more? One. Every field beyond email address is a qualification question, and a landing page's job is conversion, not qualification — that's what a proper CRM form or an onboarding flow is for, after the address is already captured.

Do I need a double opt-in confirmation email? Not universally — it depends on your sending region's consent rules and your ESP's own policy. What every pattern in this post shares regardless is a single-field ask, a stated purpose next to the field, and an unsubscribe link in every send; add double opt-in on top of that where your jurisdiction or provider requires it.

Templates in this post

ASoc Nexus is a SaaS-app marketing site, ASoc Nimbus is a cloud-SaaS template whose "Convert" section names an "Email CTA & newsletter" block directly, and ASoc Nova is a crypto-platform site that — like most of the 66 — leaves email capture to the sitewide footer instead.

Browse the full set: Next.js landing page templates and Tailwind landing page templates. For the backend this pattern reuses, see A Waitlist Landing Page Is One Server Action and a Honeypot.

Keep reading

Tutorial8 min read

forEach in TypeScript: 4 Uses Against 149 Maps

A census of a real TypeScript codebase: 4 forEach calls, 149 .map() and 137 for...of. What the four have in common, and the async trap that explains the ratio.

Read more
Tutorial12 min read

Generative Engine Optimization: Building a Site AI Answers Can Cite

An audit of our own site against the standard, including the two places it falls short and the checklist item we deliberately do not ship. The unit of success is a passage, not a page.

Read more
Tutorial8 min read

Building an HTML/CSS Navigation Bar (and the Bug That Hides It)

Six ingredients build an accessible nav bar — and this site's own mobile drawer shipped the pointer-events-none bug that leaves closed links keyboard-reachable.

Read more