Newsletter signup popup — build the full capture-to-inbox flow
How to wire an exit-intent popup, email form, and subscriber destination — from first field to first welcome email
A newsletter signup popup has three moving parts: the popup that catches the visitor's attention at exit intent, the form that captures their email and preferences, and the destination that routes those details to Mailchimp, Klaviyo, or a webhook. This playbook walks your business through each part in sequence. Read it start to finish on a first build; skip to the section you need on subsequent campaigns.
Integration management is in active development. Adding, editing, and enabling individual Mailchimp / Klaviyo destinations in SGEN's Form Integrations UI is being built out now and is not yet fully released. For production use today, follow Step 4 (manual webhook fallback). The integrations list view is fully functional. See Manage form integration destinations.
What is this for?
This playbook is for SGEN admins who want to grow an email list through their site — specifically using a popup that fires when a visitor shows exit intent or after a short delay on first load. The form, delivery destination, and confirmation flow you build here also work for an inline footer signup with no popup involved.
The playbook covers seven steps:
- Build the newsletter form — fields, mail notification, success message
- Build the popup wrapper — exit-intent trigger, frequency cap, display settings
- Connect the integration destination — Mailchimp, Klaviyo, or generic webhook
- Set up the manual webhook fallback — for production use while native integrations roll out
- Configure the confirmation flow — success message and thank-you page redirect
- Test the full path on staging — verify SGEN and the destination both receive the data
- Review GDPR / CAN-SPAM — single vs double opt-in tradeoffs
Good use cases
Example 1: Exit-intent popup with a 10%-off coupon hook. your business wants to capture email addresses before visitors leave, offering a 10% discount in exchange for subscribing to the Roast Notes newsletter. The popup fires when the visitor's cursor moves toward the browser chrome (exit intent) or after 5 seconds on the first visit, whichever comes first. Subscribers are added to a Mailchimp audience tagged roast-notes and receive a welcome email with coupon code ROACOAST10.
The four components the flow needs, and their build order:
Example 2: Embedded inline form on the footer — no popup. your business's footer has a one-field email input: "Stay in the loop — subscribe to Roast Notes." No popup is involved. The same form built in this playbook can be embedded anywhere using Err: Form not found! — footer template, sidebar, or a dedicated Subscribe page. The delivery path (webhook or Mailchimp destination) is identical.
Example 3: Two-list preference selector. your business runs two lists: a weekly Roast Notes digest and a monthly gear-and-brewing newsletter. The form includes a Preferences select field — visitors choose "Roast Notes only", "Gear & Brewing only", or "Both". Zapier reads the preferences field from the webhook payload and routes each subscriber to the correct Mailchimp audience.
After all three flows have been running for a week, the Submissions inbox for the Newsletter Signup form reads like this:
What NOT to use this for
Visitors who dismiss or block popups never see the form. Always pair it with an inline form somewhere — footer, sidebar, or a dedicated Subscribe page.
Popup bodies load alongside every page when Autoload is on. Keep it to one heading, one sentence, and the form shortcode. See Create a popup for the full anti-patterns list.
Pre-ticking a marketing checkbox or using opaque consent language is not valid consent under GDPR. Read Step 7 before publishing.
The per-destination create/edit paths are in active development. Use the manual webhook path in Step 4 until they are confirmed stable.
How this connects to other features
— the popup is the visible wrapper. Build the form first, then reference it in the popup body with Err: Form not found!. See Create a popup.
— the form lives independently of the popup. The same shortcode works in the popup body, the footer template, and a standalone page simultaneously. See Build a form.
— every signup lands in Forms → Submissions regardless of integration state. This is your safety net if the destination fails. See View and manage submissions.
— the list view of configured destinations is fully functional at Forms → [Form] → Integrations. Per-destination editing is in active development. See Manage form integration destinations.
Before you start
- You are signed in to SGEN as an Administrator.
- You have the admin email address that should receive a notification on each new subscriber.
- You have decided on single opt-in vs double opt-in (read Step 7 before choosing if EEA visitors are expected).
- If using Mailchimp or Klaviyo: have the API key, audience / list ID, and any tag names ready.
- If using the manual webhook path: have your Zapier or Make webhook URL ready.
Where to go
The three areas you will move between during this build:
| Component | Admin path |
|---|---|
| Form builder | Forms → All Forms → + Add New |
| Popup builder | Popups → All Popups → + Add New |
| Integration destinations | Forms → [form row] → Integrations |
| Submissions inbox | Forms → Submissions |
Steps
The form is the data-collection layer. Build it first so you have its shortcode before touching the popup.
Go to Forms → All Forms → + Add New.
In the My Form card, set Title to something explicit — Newsletter Signup — Roast Notes — not a generic label like "Email Signup". Specific names matter once you have several forms on the site.
Add these three fields to the form canvas:
| Field label | Internal name | Field type | Required |
|---|---|---|---|
| Email address | email | Yes | |
| First name | first_name | Text | No |
| Preferences | preferences | Select | No |
For Preferences, add three options in the field's option list: Roast Notes only / Gear & Brewing only / Both.
In Mail Settings, tick Send email on submission, then set:
- Subject:
New subscriber — [field name="first_name"] [field name="email"] - To:
hello@yourdomain.com - Body: paste the template below
New newsletter subscriber on [form_title]: Email: [field name="email"] First name: [field name="first_name"] Preferences: [field name="preferences"]
[all_fields]
— SGEN DocumentationThe [all_fields] table catches any future fields you add to the form without needing to update the mail template.
In Settings, set Success Message to:
You're in — check your inbox for the 10% off code. It arrives within a few minutes.
Optional: set Redirect URL to /thank-you if you prefer the visitor to land on a dedicated confirmation page. If you set a Redirect URL, the Success Message field is ignored — pick one or the other.
The form builder as it looks for this setup — three fields on the canvas, Mail Settings wired to the admin inbox:
Set Status to Publish and click Create a Form. After saving, the edit screen shows the shortcode — for example Err: Form not found!. Copy it now. You paste it into the popup body in Step 2.
Go to Popups → All Popups → + Add New.
Set Title to Newsletter Signup — Exit Intent (admin label only — visitors never see this). Leave Editor on Text Editor. In Content, paste:
<h2>Before you go — get 10% off</h2>
<p>Subscribe to the your business Roast Notes newsletter and we'll send your discount code straight to your inbox.</p>Err: Form not found!Replace 4 with your form's actual ID from Step 1. The shortcode renders the full form — email field, first name field, preferences select, and submit button — inside the popup body at display time.
Configure the checkboxes as follows:
| Setting | Value | Reason |
|---|---|---|
| Autoload | On | Fires on page load or exit intent |
| Frequency | 7 | Re-shows after 7 page views (roughly weekly for a casual visitor) |
| Avoid Multiple Popup | On | Prevents a second popup on the same page view |
| Disable Popup Title | On | Body already has <h2> — avoids a duplicate heading |
| Disable Close Button | Off | Visitors must be able to dismiss without subscribing |
Frequency note. SGEN's Frequency field counts page views, not calendar days. Frequency 7 means the popup re-fires after the visitor has viewed 7 pages since dismissing it. Frequency 0 means show once only, never repeat.
Set Popup Width to 480 and Status to Draft (switch to Publish only after verifying the full path in Step 6).
The popup create form filled in for this scenario:
What visitors see when the popup fires — three-field form embedded in the overlay, close button top-right:
In active development. The Create / Edit screens for individual destinations are being built. Use Step 4 (manual webhook) for production today. The steps below describe the intended final UX once the create/edit paths ship.
When available, navigate to Forms → All Forms → [Newsletter Signup row] → Integrations → + Add Destination and select your provider.
Mailchimp — you will provide: API key, Audience ID, optional tag (e.g. roast-notes), double opt-in on/off.
Klaviyo — you will provide: Private API key, List ID.
Webhook — paste a URL that accepts a POST payload. This is the path available today; see Step 4.
After destinations are configured, the Form Integrations list for the Newsletter Signup form reads like this — Mailchimp primary with Stop on Success, webhook as fallback:
Mailchimp fires first. Because Stop on Success is Yes, a successful Mailchimp dispatch skips the webhook for the same submission. If Mailchimp fails, the webhook at position 2 receives the data as a fallback.
Use this path today for production subscriber routing while the native Form Integrations destination management is in active development.
Get a webhook URL. In Zapier: New Zap → Trigger: Webhooks by Zapier → Catch Hook → copy the webhook URL. In Make: New Scenario → Webhooks → Custom Webhook → copy the URL.
Add a Webhook destination in SGEN. The Webhook provider type is available now via + Add Destination in Form Integrations. Paste your webhook URL into the Webhook URL field and save.
Configure the Zapier / Make action. In Zapier, add an action step — Mailchimp → "Add Subscriber to Audience". Map these fields:
- Email address →
fields.email - First name →
fields.first_name - Tag →
roast-notes(hardcoded) or branch onfields.preferences
The payload SGEN sends to your webhook on each form submission:
{ "form_id": "4", "form_title": "Newsletter Signup — Roast Notes", "submitted_at": "2026-05-05T09:14:00Z", "fields": { "email": "ada@lovelace.dev", "first_name": "Ada", "preferences": "Both" }, "source": { "page": "/", "referrer": "https://www.google.com/" }
}Map fields.email, fields.first_name, and fields.preferences in your action step. The source.page value tells you whether the submission came from the popup or an inline form on another page.
After a visitor submits, one of two things happens depending on what you set in the form's Settings card.
Redirect URL set (e.g. /thank-you): the visitor lands on a dedicated confirmation page. Build it at Pages → Add New with path /thank-you. Suggested content: heading "You're in — look out for the Roast Notes!", a note on delivery timing, and a link back to the shop. When Redirect URL is set, the Success Message field is ignored.
Redirect URL blank: the form replaces itself in-page with the Success Message. The visitor stays on the same page — or inside the popup if they subscribed through the overlay.
The inline success state inside the popup after a visitor submits:
Run through the complete flow in a private / incognito window before publishing the popup.
Open your staging site, navigate to any page, and let the popup fire (or wait 5 seconds on first load). Fill in a test email address, a first name, and a preference. Click Subscribe.
Verify three things:
SGEN received it — go to Forms → Submissions, filter to the Newsletter Signup form, confirm the test row appears with correct field values and a green Email Sent check.
The destination received it — open your Zapier scenario history (or Mailchimp audience / Klaviyo list) and confirm the test email is present with the correct mapped values.
The popup does not re-fire in the same session — close the popup and visit another page in the same incognito window. The popup should not reappear.
Once all three pass, go to Popups → All Popups, open the Newsletter Signup popup, change Status from Draft to Publish, and save.
Email marketing law applies the moment you collect an address.
CAN-SPAM (United States): single opt-in is compliant provided every commercial email you send includes a working unsubscribe mechanism and your physical mailing address. Confirm your Mailchimp or Klaviyo templates include the required footer before the first welcome email sends.
GDPR (European Economic Area): consent must be freely given, specific, informed, and unambiguous. Pre-ticking a marketing checkbox is not valid. A visible "Subscribe" button with accompanying privacy text qualifies.
Double opt-in (sending a confirmation email before adding the subscriber) is not legally required by GDPR but is strongly recommended for EEA subscribers because it produces a verifiable consent record and keeps the list cleaner. The tradeoff is a 20–30% reduction in list growth — some visitors do not complete the confirmation step.
Add a consent line below the subscribe button in your popup body:
<p style="font-size:11px; color:#6b7280; margin-top:10px; text-align:center;"> By subscribing you agree to our <a href="/privacy">privacy policy</a>. Unsubscribe any time.
</p>Enable double opt-in in Mailchimp at Audience → Settings → Signup forms → Opt-in confirmation. In Klaviyo at Lists & Segments → [List] → Settings.
What success looks like
After the full flow is live and verified:
- A new submission appears in Forms → Submissions within seconds of the visitor clicking Subscribe.
- The admin inbox at
hello@yourdomain.comreceives a notification for each signup with email, first name, and preference values. - The Mailchimp audience (or Zapier scenario) shows the subscriber's data within 60 seconds of form submit.
- The popup fires on incognito page load (Autoload on), displays the three-field form, accepts a submission, and shows the success message or redirects to
/thank-you. - The popup does not re-fire on the same session after being dismissed.
- The Form Integrations list at Forms → [Newsletter Signup] → Integrations shows the correct destinations as Enabled.
What to do if it does not work
Confirm Status is Published on the popup row in Popups → All Popups. Confirm Autoload is ticked. Hard-refresh (Ctrl+Shift+R) once — Autoload fires after the page finishes loading, not during the spinner.
Sample 3-email welcome sequence
Once a subscriber confirms (or submits via single opt-in), trigger a welcome automation in Mailchimp or Klaviyo:
Email 1 — Immediate (0 minutes after signup) Subject: Your 10% off code is inside, [first_name] Content: Welcome, deliver the coupon code ROACOAST10, link to the three bestsellers (Canvas Tote Bag $30 / Barista T-Shirt $24.99 / your detailed content piece $9). Keep it short — this email exists to deliver the code, not to tell your brand story.
Email 2 — Day 3 Subject: The story behind every bag we roast Content: Origin story — where your business sources its beans, the roasting process, what "single-origin" means in practice. No coupon. Builds trust and differentiates the brand. Link to the About page. Include one customer quote.
Email 3 — Day 7 Subject: What's brewing at your business this month Content: One new product, one origin spotlight, one brew tip. This is the shape of every subsequent Roast Notes issue — by day 7 the subscriber knows what to expect and has received one discount incentive and one story email.
Next step
mocks: 8 1. status-badge-grid (build order) 2. admin-list-view (submissions inbox, Example 3) 3. admin-edit-form (form builder, Step 1) 4. settings-save-success (form save flash, Step 1) 5. admin-edit-form (popup create, Step 2) 6. public-site-result (popup live view, Step 2) 7. admin-list-view (form integrations list, Step 3) 8. public-site-result (success state, Step 5) code fences: 3 (mail body template, webhook data shape, GDPR consent HTML) named Example N scenarios: 3 (Examples 1-3 in Good use cases) H3 sections: What is this for / Good use cases / What NOT / How this connects / Before you start / Where to go / Steps / What success looks like / What to do if it does not work / Sample welcome sequence / Next step ### Steps has #### 1 through #### 7 (7 numbered items — gate requires >=3) audience: sgen-admins (customer) classification: PUBLIC brand sweep: your business only dev-isms: 0 integration caveat: in intro callout + Steps 3 and 4 pile docs verified: popups/02, forms/02-03, form-integration/01 approved fictional names: an editor, a teammate, a developer, an admin, an analyst hero ack-guess markers: canonical_url (production URL set at publish time), yourdomain.com (approved fictional brand domain), webhook payload shape (illustrative — exact shape verified against feature card intent, not live-tested)
-->
