How to make the signup form on your AI-made page actually work
Quick answer
A form that ChatGPT, Claude, or Gemini writes has nowhere to send entries until something receives them. The usual fix is a form service such as Formspree, which emails you each entry on a free plan of 50 submissions a month once you paste its address into the form action. If your page has no host yet, Convika hosts it and adds a form that stores every entry and emails it to you, with CSV export and visit stats, free for 50 entries a month and entries past that kept for Pro.
Free plan: no credit card, 1 published page, 50 form entries a month.
On this page
- Why the form on your page doesn't go anywhere
- 6 ways to make the form work, compared
- Option A: pasting a Formspree form into your page
- Option B: Using your host's own forms (Netlify Forms)
- Option C: A signup form from Mailchimp or Kit
- Option D: Hosting the page on Convika and adding a form in 6 steps
- Get entries by email or send them to your tools
- Add the form from Claude or another MCP client
- Waitlist pages: what to ask the AI for
- Send a test entry before you share the link
- What Convika doesn't do
- Frequently asked questions
You asked ChatGPT or Claude for a landing page with a signup form. The form looks finished, with an email field, a button, and maybe a “Thanks, you're on the list!” message. You type your own address and press the button. Nothing arrives anywhere. This guide explains why and compares 6 ways to make the form work. It walks through 4 of them, from pasting one line into the page to hosting it where entries are stored for you.
Prices and limits come from each vendor's own pages, checked October 4, 2026.
Why the form on your page doesn't go anywhere
A form needs a receiver. That is an address that accepts what visitors type, then stores or forwards it. An AI writing one HTML file has no server to point at. It usually writes one of these:
- A
<form>with noaction, or withaction="#". Pressing the button reloads the page. - A script that stops the submit and shows a message, like the example below:
<form onsubmit="event.preventDefault(); alert('Thanks! We\'ll be in touch.')">
<input type="email" placeholder="you@example.com" required>
<button>Join the waitlist</button>
</form>
The alert makes the signup look done. Nothing was sent. If the address starts with file:///, the page is a file on your own computer. Nobody else can reach the form at all.
The fix is to give the form a receiver. The table compares 6 kinds. Options A to D below walk through 4 of them.
6 ways to make the form work, compared
| Option | Where entries are stored | Free limit | Another account | Code to change | Works on any host | Visit stats | |
|---|---|---|---|---|---|---|---|
| Formspree | Formspree inbox, 30 days on Free | Emails you each entry, up to 2 addresses | 50 a month | Yes, Formspree | One action line | Yes | No |
| Netlify Forms | Netlify dashboard | Emails you each entry once you set up notifications | Unlimited, until the 300 monthly credits run out | No, if Netlify hosts the page | One attribute, then deploy again | No, the page must be on Netlify | Web Analytics with top sources, kept for 1 day |
| Google Forms embed | The form's responses, or a linked Google Sheet | Emails you once you turn on notifications | No price published. Up to 500,000 responses per form | Yes, Google | Paste embed code | Yes | No |
| Mailchimp or Kit signup form | Your mailing list | Emails the subscriber, such as a confirmation | Mailchimp: 250 contacts. Kit: 10,000 subscribers | Yes | Paste embed code | Yes | No |
| Your own function and database (Supabase) | A table in your database | Only if you build it | Supabase: 500 MB, paused after 1 week idle | Yes, plus a function host | A handler you write | Depends on the host | No |
| Convika | Convika dashboard, with CSV and JSON export | Emails you each entry; teammates can turn it on | 50 a month; entries past that are kept for Pro | No, Convika also hosts the page | None | No, only pages Convika hosts | Yes, visits, sources, devices, and clicks |
Here is the short version.
- The page already has a host, and you need an email for every entry: Pick Formspree, or choose Netlify Forms if Netlify hosts the page.
- You'll send the list newsletters: Choose Mailchimp or Kit so signups land where you'll email them from.
- You want a free form that never caps submissions: Choose Netlify Forms, as long as your sites stay within Netlify's monthly credits.
- The page isn't online yet, and you want the page, the entries, an email for each one, and the visitor stats in one place: Choose Convika.
Option A: pasting a Formspree form into your page
Formspree receives the form's data and emails it to you. The free plan gives you 50 submissions a month across unlimited forms, emails up to 2 linked addresses, and keeps 30 days of submission history. Export starts on paid plans. The Personal plan costs $15 a month for 200 submissions, and the Professional plan costs $30 a month for 2,000.
- Sign up at Formspree and create a form. Formspree gives it an endpoint, such as
https://formspree.io/f/abcdwxyz. - Ask your AI, word for word: “Change the form so it posts to
https://formspree.io/f/abcdwxyzwith method POST, and give every input anameattribute.” A field without anameisn't sent. - Check that the form now looks like Formspree's own example:
<form action="https://formspree.io/f/{form_id}" method="post">
<label for="email">Your Email</label>
<input name="Email" id="email" type="email">
<button type="submit">Submit</button>
</form>
- Upload the changed page to your host, and send yourself a test entry.
After you submit, Formspree shows its own “Thank you” page by default. A custom thank-you page needs a paid plan, or a script that sends the form in the background. Past 50 submissions a month, Formspree still saves entries to your account, but it stops emailing them.
Two other services work the same way. FormSubmit requires no account. Point the form's action at its address with your email. It emails you each submission and keeps them 30 days. Google Forms gives you a whole form to embed. In the form, go to the More menu, select Embed HTML, and paste the code into your page. Responses stay in the form or a linked Google Sheet. You can turn on email notifications for new responses.
Option B: Using your host's own forms (Netlify Forms)
If Netlify hosts your page, it can store entries itself. According to Netlify's docs, forms are “free and unlimited” on its credit-based plans, Free included.
- In your Netlify dashboard, go to Forms and select Enable form detection.
- Add
data-netlify="true"to the<form>tag. The form needsmethod="POST". - Deploy the page again. On Netlify Drop, drop the folder again. Netlify looks for forms only when it deploys.
- Send a test entry. It appears under Forms. To get an email per entry, add an email notification for the form.
The catch is the credit budget. The Free plan includes 300 credits a month. A production deploy costs 15. If credits run out, Netlify says “all of your web projects (sites/apps) are paused” and they stop receiving “web traffic, or form submissions” until next month.
Option C: A signup form from Mailchimp or Kit
A waitlist you will email at launch belongs in an email tool. Both give you a signup form to embed on any site.
- Mailchimp's free plan includes 250 contacts and 500 emails a month, at most 250 a day. With double opt-in, each new subscriber gets an email to confirm the address.
- Kit's free plan includes up to 10,000 subscribers and unlimited forms. It shows Kit branding.
Either tool stores the list where you will send from. This saves an export and import later. Neither shows how many visited the page or where they came from.
If you host the page on Convika, choose the email tool's plain HTML form. A form that submits as a normal page request works on every plan. A script's fetch and XHR requests on a Convika page reach only the page's own address, plus, on Pro, the analytics tools Convika supports and the hosts you list for your own ad network. A signup form that sends entries with a script fails to reach the email tool.
Option D: Hosting the page on Convika and adding a form in 6 steps
Convika hosts your page, which keeps your form, entries, and visitor stats in one dashboard. The free plan needs no credit card. It gives you 1 published page and 50 entries a month. Entries past that limit are not refused. Convika keeps them, and they show up once you are on Pro.
1. Mark where the form goes
Before downloading your page, ask your AI, word for word: “Replace the form with <div data-convika-form></div>.” Convika puts the working form in that spot. Without it, the form goes near the end of the page, just above the footer.
2. Create a free Convika account
Sign up at app.convika.com. You do not need a credit card.
3. Upload the page
Go to your dashboard, select Upload an HTML file, and drop your .html file (up to 2 MB). You can also switch to Paste code and paste your code. Click Create my preview. Uploading uses no AI credits.
4. Add the form
Open the page's dashboard screen and click Add a form to my page. Pick Email only, Name and email, or Name, email, and message. Edit the button text and the message people see after sending. Click Add form to my page. Convika saves a new preview version with the form, while the live page stays unchanged until you publish.
5. Send a test entry from the preview
Open the preview and submit the form. Convika checks the entry but does not save it, which keeps tests out of your list. If you had no placeholder in step 1, the AI's old form remains on the page. Type “Remove the old form and keep the Convika form” into Edit with AI (1 AI credit, default model).
6. Publish and read the entries
Click Publish page. Under Who can open this page?, choose Public and click Next. The first time you publish, Convika shows Publish free, and under it Publish without the Convika bar, which opens an order for Pro monthly (1 day free with a card, then $12 a month). To publish on Free, click Publish free. Convika emails each new entry to you as it arrives, and each entry appears on the page's dashboard screen under Forms. Click View entries to read them. Click Download CSV or Download JSON to download them. Your entries stay until you delete the form.
Get entries by email or send them to your tools
Convika turns entry emails on by default. It emails each new entry to the account owner, with every answer inside the message. When you hit reply, your message goes straight to the address the visitor typed. Teammates get the emails too once they turn on Form entry emails in Settings. You can turn them off for a single form using the switch on that form's entries page. The Free plan emails up to 50 entries a month, matching the 50 entries it displays. It keeps entries past that limit without emailing them. Pro has no cap. If a form gets more than 5 entries in a minute or 100 in a day, Convika counts the rest in one email and sends it once a day.
You can also send entries to Zapier, Make, n8n, or your own code. Go to the form's entries page and paste an https URL under Send each entry to a URL (webhook). Next, click Send a test entry. Convika posts each entry as JSON with a Convika-Signature header. This is an HMAC-SHA256 signature made with the form's own secret, so your code can check that the request came from Convika.
Add the form from Claude or another MCP client
Connect Convika as an MCP server in Claude, Claude Code, or Codex. Ask it, word for word: “add an email signup form and show me a preview.” It creates the form with the fields you ask for. Entries are stored in the same place. It can export them for you later.
Waitlist pages: what to ask the AI for
A waitlist form converts better when it asks for less. When you ask the AI for the page, specify:
- One field. Ask for email only, unless you'll sort the launch email by a second answer.
- A button that says what happens: Choose “Join the waitlist” or “Get early access”, not “Submit.”
- A confirmation message that sets expectations, such as “You're on the list. We'll email you once, at launch.”
Share a different UTM-tagged link in each place you post to see which brings signups. Here is the full walkthrough: how to make a waitlist landing page for free.
Send a test entry before you share the link
Whichever option you choose, test from your phone after the page is live.
- Open the public URL instead of the file on your computer.
- Submit the form with an address you can check.
- Confirm that the entry arrived in Formspree's inbox, Netlify's Forms tab, your email tool's list, or under Forms in Convika and in your inbox.
On Convika, a test from the live page is stored and counts toward the 50 a month on Free. Convika accepts up to 5 entries a minute and 20 an hour from one network. A rapid series of tests gets refused for a while.
What Convika doesn't do
- A burst of entries arrives as one email. If a single form passes 5 entries in a minute or 100 in a day, Convika sends the rest in a single email once a day. That email counts the submissions without listing the answers. Every entry is still saved in the dashboard.
- 50 entries a month shown on Free, counted across all your forms. Entries after that limit are not refused, and each form keeps up to 1,000 more a month. While on Free, those extra submissions stay out of the list, exports, emails, and webhooks. The form's entries page still shows you how many arrived. On Pro, they show in the list and exports at once.
- 3 field sets from the dashboard: you can pick email; name and email; or name, email, and message. The forms do not support file uploads.
- No message to the person who signs up. Convika shows them your confirmation text directly on the page. It sends them no email.
- Forms only on pages Convika hosts. A Convika form cannot receive entries from a page hosted anywhere else.
Frequently asked questions
How do I collect emails from a static HTML page without a backend?
Point your form at a service that receives submissions. Formspree gives you 50 submissions a month free and emails each one to you. You paste its endpoint into the form's action attribute. Netlify Forms works if Netlify hosts the page. You can also host on Convika. Convika provides a form that stores every entry and emails it to you. Convika is free for 50 entries a month, and keeps entries past that for Pro accounts.
Why don't submissions from my AI-made contact form go anywhere?
Submissions go nowhere because the AI had no server to send them to. The AI created the form without an action, set action="#", or added a script that shows a thank-you message without sending anything. Give the form a receiver. Use a form service, your host's forms, an email tool's signup form, or a host such as Convika that stores entries.
Can a landing page Claude made save signup emails?
Claude cannot save signup emails on its own. A shared Claude artifact stays on claude.ai, and Anthropic's docs describe no storage for form entries. Connect Convika to Claude as an MCP server, then ask it to save the page and add a signup form. Convika stores the entries and exports a CSV. You can also download the page and use Formspree with any host.
How do I add a waitlist signup form to a page ChatGPT made?
Ask ChatGPT to replace its form with <div data-convika-form></div>. Download the HTML file. Upload it in Convika's dashboard, then click Add a form to my page with Email only. Test the form from the preview, then publish. If you want to email the list at launch, a Mailchimp or Kit signup form is the alternative.
Does Convika email me each form submission?
Yes, Convika emails each new entry to the account owner as it arrives. Every answer appears in the email. Replying goes to the address the visitor entered. Teammates turn the emails on in Settings, and each form has a switch to turn them off. The Free plan emails up to 50 entries a month, which is the same as the 50 it shows. Entries kept past that are not emailed. Pro has no cap. Each form can also send every entry to a URL of yours as a signed webhook.
Is Formspree free?
Yes, Formspree is free for 50 submissions a month. The free plan gives you unlimited forms, email forwarding to up to 2 linked addresses, and 30 days of submission history. Personal is $15 a month for 200 submissions. Professional is $30 a month for 2,000.
Rather have someone make it for you?
Answer 4 questions about your business to get a private preview within 2 days. It costs $199, paid once, and only if you want it live. You also get 12 months of Pro.
Answer 4 questions for a free previewNext step
How to see who visits a page you made with AI
Count visitors and see where they came from on a page ChatGPT, Claude, or Gemini made. GA4, Cloudflare, Plausible, Clarity, and Convika compared.
Related articles
- My ChatGPT-made website form doesn't send anything. How do I fix it?The form on a page ChatGPT or Claude made says thanks, but nothing arrives. Find the cause in 2 minutes, then fix it with a form service or on Convika.
- QR code attendance sheet: people scan, sign in, and the names land in a listFor a plain name list, use Google Forms. If ChatGPT made your attendance page, its form may send nowhere: add a Convika form, publish, show the QR code.
- How to create a waitlist landing page for freeSee the 4 things you need, a free HTML template, and 5 steps to publish. Collect emails into an exportable list and see which posts sent them.
- Formspree free plan: limits, and when you need hosting tooFormspree Free takes 50 submissions a month with 30 days of history, no file uploads, and no export. Compared with Web3Forms, Netlify Forms, and Convika.
- How to embed a Google Form in an HTML page (and when to use a built-in form)Copy a Google Form's embed HTML into your page and set the width to 100% for phones. Why an embed shows blank, and a built-in form instead.
- Best free waitlist tools in 2026: what each free plan includesCompare LaunchList, Waitlister, GetWaitlist, Tally, Google Forms, and Convika on signup caps, a page, own domain, branding, referrals, and export.