My signup forms stopped working after the move

A signup form that swallows an email address and does nothing is worse than no form — every visitor who tries it is a subscriber you lost silently. This is the most common casualty when a site moves off WordPress, and it's fixable without touching your mailing provider's setup.

Why it happens

On the old site, the form you saw was only half the machinery. It posted to WordPress, and a plugin inside WordPress relayed each signup to your mailing provider — adding the contact, applying a tag, starting the welcome automation. That relay lived in WordPress's own database, invisible in the page itself. The move carries your pages faithfully; it cannot carry a machine that no longer exists. So the form still renders, still accepts a name and email — and posts them into the void. The same applies to short links that used to redirect (fixable the same way as any A link on my site doesn't work) and to buttons that opened a signup popup.

Your options — pick one per form

Tell the AI which of these you want for each broken form. They can be mixed — reconnect the funnels you still run, remove the ones you've retired.

  1. Reconnect it to your mailing provider (keeps the old funnel). The form is rebuilt to deliver signups straight to a form in your provider's account — same list, same tag, same automation as before. Needs a form to exist in the provider; if one doesn't, create it there first (a couple of minutes in their form builder). The rest of this article walks through this option.
  2. Capture signups into your own people list instead (no provider needed — works immediately). Ask for the dead form to be replaced with one of this site's own signup forms: submissions land in your people list here, you get an email for every signup, and a consent box can be included (never pre-ticked). Nothing external to set up, no lead ever lost — and you can still move to option 1 later, with everyone captured in the meantime safely in your list.
  3. Remove or replace it. If the funnel is retired, have the form taken out cleanly — or replaced with a link to a funnel that works. A form that swallows details silently is worse than no form.
  4. Recover the old wiring first. Not sure which form fed which list or automation? If you still have a backup of your old WordPress site (especially a database export), share it — the exact form-to-provider wiring can be read out of it, so every funnel is reconnected precisely as it was, nothing guessed.

Whichever you choose, the change lands on a draft for your approval before anything goes live. New to how forms work here? How forms and signups work on my site is the map.

Option 1 in detail — point the form at the provider itself

Every form in your mailing provider's account has a public address that receives submissions directly — it's what the provider's own embed code talks to. The fix is to rebuild the form in your page as plain markup that posts straight to that address:

  1. Find the matching form in your provider's account. It's usually still there from the WordPress days, wired to the same list, tag and automation as before. With ActiveCampaign, for example, every form has a hosted page at youraccount.activehosted.com/f/<number> — opening it shows exactly which fields and hidden values the form expects.
  2. Ask for the page's form to be rebuilt against it. Tell the AI which page is broken and which provider form it should feed (use the prompt above). It rebuilds the form in the page's own style, carrying the provider's hidden fields exactly, so submissions arrive as if the provider's own embed had sent them — same list, same tag, and the same automation fires.
  3. Preview, approve, then test for real. The change waits on a draft until you approve it. After it's live, sign up once with your own email and confirm the contact lands in your provider correctly. Ask the AI to check the whole site for other dead forms while it's at it — funnels usually break together, as I added the email records but they're not working yet readers discover from the other direction.

What to know before you start

  • A destination must exist. If no form exists in your provider for that funnel, create one there first (two minutes in their form builder, wired to the automation you want). The page can only deliver to a form that exists.
  • Plain forms beat script embeds here. Scripts added to pages are stripped for safety, so a provider's JavaScript embed won't survive — and doesn't need to. The plain form posts the identical payload.
  • The confirmation page is the provider's choice. Until you set a redirect on the form inside your provider, subscribers see the provider's confirmation rather than your own thank-you page. Setting that redirect is a provider-side setting.
  • Don't test with strangers' addresses. Every test submission creates a real contact and may fire a real automation — test with your own email only.

The prompt

The signup form on my [page name] page accepts details but nothing happens. My mailing list is with [provider, e.g. ActiveCampaign] and the form there is called [form name]. Rebuild the form so submissions reach that provider form again, and show me a preview first.

The [bracketed] parts are yours to fill in. First time? Connect bernard to your AI over MCP — a one-time setup in bernard → your site → Use your own AI — then paste the prompt above.

Questions people ask

Why did my opt-in forms break when my site moved off WordPress?
On WordPress, form plugins post submissions to WordPress itself, which then passes each contact to your mailing provider behind the scenes. That relay lived in WordPress, not in your pages — so when the site moved, the visible form came along but the machinery it posted to didn't. The form looks fine and does nothing.
Do I have to change anything in my mailing provider to fix this?
Usually not. If a form already exists in your provider's account, it already has a public submission address, and your page's form can post straight to it — same lists, same tags, same automations as before. You only need to create a form in the provider if none exists for that funnel; the page can't deliver submissions to a destination that isn't there.
What are my options for each broken form?
Four: reconnect it to a form in your mailing provider (the funnel behaves as it did before); swap it for one of this site's own signup forms, so submissions land in your people list and you're emailed on each one — no provider needed; remove or replace it if the funnel is retired; or share a backup of your old WordPress site and the exact form-to-provider wiring can be recovered from it first. You can mix and match per form.
Can I capture signups without a mailing provider at all?
Yes — the site's own forms collect signups into your people list directly, with an email to you on every submission and an optional consent checkbox the visitor must tick themselves. It's the fastest way to stop losing leads while you decide about a provider, and everyone captured stays with you if you reconnect a provider later.
Why not just paste in my provider's embed code?
Provider embed codes rely on a script, and scripts added to pages this way are removed as a safety measure. A plain form posting to the provider's own submission address does the same job with nothing to strip, nothing for ad-blockers to eat, and no code to load — it works even with JavaScript switched off.
Will the fix go live straight away?
No — like any change, the rebuilt form lands on a draft you can preview, and nothing is live until you approve it. Once you approve, do one real test signup with your own email and check the contact arrives in your provider with the right tag before telling the world.
After someone signs up, where do they end up?
By default, the provider shows its own confirmation page. If you want people sent to a thank-you page on your site instead, set the redirect on the form inside your provider's dashboard — that setting lives with them, not in your page.

You might also want to…