---
type: blog
title: "Newsletter Signup Form: Check That It Saves Every Email"
description: "A newsletter signup form can show a success message and save nothing. Learn what a working form does, how to test it end to end, and how to find a fake one."
date: "2026-11-09"
lastModified: "2026-11-09"
authors: "Runner AI Team"
tags: ["Email Marketing", "Storefront", "Testing"]
featured: false
readTime: "6 min read"
seo:
  title: "Newsletter Signup Form: How to Test It Saves Subscribers"
  description: "Test your store's newsletter signup form end to end. See what a working form must do, the fake-success pattern to look for, and a five-minute check."
---

A **newsletter signup form** is the small form on a store where a shopper enters an email address to get marketing email. It has one job: add that address to the list your campaigns go to. A form can look finished, take the address, and show "Subscribed!" while it sends the address nowhere. Nobody notices until a campaign goes out to a list that stopped growing.

This guide covers what a working form must do, the most common way a form fakes success, and a short test you can run on your own store.

Disclosure: Runner AI publishes this guide. The Runner details come from inspected source code, tests, and interface text on November 9, 2026, not from customer results. Labels and rules can change in later releases.

> **Key Takeaways**
>
> - A signup form works only if the address reaches your subscriber list. A success message proves nothing.
> - The common fake is a form that waits on a timer and then shows success, with no request to any server.
> - Test the form the way a shopper uses it, then look for the address in your subscriber list.
> - Check every place the form appears: home page, footer, shared layout, and popups.
> - Runner AI's Email marketing page now warns about an unconnected form wherever the store renders it.

## What a newsletter signup form must do

A working form does four things, in this order:

1. **Takes a valid address.** The field uses an email input, so the browser rejects text that is not an address.
2. **Sends the address to a server.** A request goes to your email platform or store backend. Without this step, nothing is saved.
3. **Waits for the answer.** The form shows success only after the server confirms that it saved the subscriber.
4. **Shows the truth.** If the request fails, the shopper sees an error and can try again.

Step 3 is where forms go wrong. A form that shows success before, or instead of, a real answer will hide every failure from you and from the shopper.

## How a signup form fakes success

Store templates and generated storefronts sometimes ship a placeholder form. The designer needs the success state to look right, so the code pretends to submit. The pattern looks like this:

```tsx
async function handleSubmit(event) {
  event.preventDefault();
  setStatus('loading');
  await new Promise((resolve) => setTimeout(resolve, 1000));
  setStatus('success');
}
```

The form waits one second, then says "Subscribed!". There is no `fetch`, no API call, and no form `action`. The address stays in the shopper's browser and disappears when they leave the page.

A placeholder like this is fine in a mockup. In a live store it loses every signup, and it looks exactly like a working form from the outside.

## A five-minute test for your own form

Run this on the live store, not on a preview with test data.

1. Open the store in a private browser window, so a saved login or cookie does not change the result.
2. Find every signup form. Look at the home page, the footer, any page with its own layout, and any popup that appears after a delay or on exit intent.
3. Use a fresh address you control, such as `you+signup-test-1@yourdomain.com`. Use a new address for each form, so you know which form saved it.
4. Submit the form. Note the message you see.
5. Open your email platform and search for the address. It should appear in the subscriber list within a minute or two.
6. If you use double opt-in, check the inbox for the confirmation email and confirm. Then check the list again.
7. Submit the same address a second time. The form should not show an error that blames the shopper, and the list should not hold a duplicate.

If the form says success and the address never appears, the form is not connected. If you can open the browser's developer tools, the **Network** tab tells you quickly: a working form makes a request when you press the button, and a fake one makes none.

For a broader way to test shopper journeys like this one, see our guide to [end-to-end testing](./end-to-end-testing).

## Check every copy of the form

Most stores have more than one signup form. A footer form appears on every page, and the home page often has a second, larger one. Fixing one does not fix the other. A store can connect the home page form and keep losing signups from a footer form that every page shows.

When you test, list each form with its page and the address you used. Mark a form as working only when its own address reached the list.

## How Runner AI handles an unconnected form

Runner AI stores created before August 19, 2026, came with a newsletter form that waited one second, showed "Subscribed!", and saved nothing. The newsletter form in newer stores sends the address to Runner's Email marketing subscribers.

A change merged on November 9, 2026, widened how Runner finds the old form. It now reads the store's published code under `src/` and treats a form as unconnected when all of these are true:

- The file has an email input and signup wording.
- A timer decides that the form succeeded.
- The timer is the form's only asynchronous work. There is no other request, `fetch`, mutation, or form `action`.
- Neither the form nor a file it imports calls the subscribe function.
- Another file in the store renders it, so an unused or test-only form is left alone.

Before this change, the check looked only at the home page and the newsletter file. A fake form in the footer, the shared layout, or another page got no warning.

When the check finds one or more such forms, the **Email marketing** page shows this note: "Your newsletter form isn't connected, so shoppers who sign up don't become subscribers." The **Ask agent to connect it** button opens a chat that runs the *Connect newsletter form* workflow on every flagged file. The note stays until you publish the agent's change. Subscribers who come from a connected form show **Sign-up form** as their source.

The [Email marketing guide](https://www.runnerai.com/docs/en/guides/automate-test-and-create/email-marketing) explains subscribers and campaigns in Runner.

## After the form works

A connected form is the start of the list, not the end. Decide what a new subscriber gets first. A welcome email that sends when someone subscribes is the most common first step. Our guide to [email marketing for ecommerce](./email-marketing-for-ecommerce) covers which emails to build from there.

Re-run the five-minute test after any change to the theme, the footer, or the layout. Those are the changes that most often replace a working form with a new copy.

## Related questions

### Why does my newsletter signup form say success but no subscribers appear?

The form most likely shows success without sending the address to a server. Some templates use a timer to show the success message. Submit a test address, then search your subscriber list for it. If it is missing, connect the form to your email platform.

### Where should a newsletter signup form go on an online store?

The footer is the usual place, because it appears on every page. Many stores add a second form on the home page or in a popup. Each copy needs its own test.

### Should a newsletter signup form use double opt-in?

Double opt-in sends a confirmation email before the address joins the list. It keeps typos and fake addresses off the list, but some people never confirm. Choose based on the consent rules where your customers live and how clean you need the list to be.

### How often should I test my signup form?

Test it after every change to the theme, footer, or layout, and after you change email platforms. A quick test once a month also catches a form that broke without anyone noticing.
