Engineering

The form submissions you forgot you were renting

A contact form looks like the smallest item on a migration list. It is usually the one that takes longest. The markup exports cleanly, the styling exports cleanly, and the submissions behind them do not travel at all. Webflow says this in its own documentation: on an exported site you need a third-party tool to collect form submissions, because the platform stops receiving them the moment the site stops being hosted there.

The submissions table is not a database

In Webflow, submissions land in Site settings under Forms, one table per form, with an email copy sent to whoever you listed. You can read them and you can export them. What you cannot do is query them. There is no join to a customer record, no foreign key, no way to ask which of last quarter's leads arrived from the pricing page and later signed. It is a receipt log that happens to sit next to your website.

The limits are worth knowing before you plan around them. Webflow's free Starter plan stops at 50 form submissions for the life of the site, and the help centre is blunt that the limit does not reset. Paid Site plans remove it: Basic is $15 a month billed yearly and carries unlimited submissions. File uploads work differently again. They exist only on Premium at $25 a month billed yearly, with a hard 100GB storage ceiling that Webflow states cannot be raised. Reach it and submissions stop being collected.

Most teams I talk to assume the export button covers all of this. It covers the HTML.

The integrations hanging off the form are a second bill

Once the form leaves the platform it needs somewhere to land, and that is where the pricing gets interesting. Formspree's free tier accepts 50 submissions a month and keeps them for 30 days before the archive rolls off. Personal, at $15 a month or $120 for the year, raises that to 200 a month with an unlimited archive. Webhooks and API access start one tier higher, on Professional at $30 a month or $240 yearly. Getting a submission into code you wrote is the thing you pay for.

Typeform prices the same idea by volume. Basic runs $39 a month, or $28 if you pay for the year, and covers 100 responses a month for a single user. Plus is $79 for 1,000 responses. Business is $129 for 10,000. Automated follow-up sits outside all of that as a Contacts and Automations add-on, 2,400 actions a month for another $29. Zapier follows the same shape, with 100 tasks free and webhooks unlocking on Professional from $19.99.

No single line there is unreasonable. Stacked together across one form, one router, one automation layer and one CRM connector, a company ends up paying a few hundred dollars a month to carry a name and an email address from a page into a system it already owns.

What it looks like on the other side

When we moved Stay World Class off Webflow and Xano onto Next.js, NestJS and Supabase, the form logic itself was an afternoon. The hard part was everything already pointing at it. Legacy records carried platform-generated IDs that integrations referenced by hand, so we built a four stage ETL that mapped every legacy ID onto a PostgreSQL UUID and kept the old identifiers as a lookup. Nothing downstream noticed the change.

A submission on that stack is a row. It inserts into Postgres, fires a trigger, lands on a queue, and stays there for as long as you keep the database. Volume pricing disappears because there is no per-submission meter to read. You can also test it, which matters more than it sounds: a form that silently drops leads is a failure mode nobody catches until a customer asks why nobody called back.

When staying is the right answer

If your form collects twenty messages a month and every one of them goes to a single inbox, moving it buys you nothing. Webflow Basic at $15 a month with unlimited submissions is a good deal for that, and rebuilding it costs more in engineering hours than the subscription costs in a decade. The same holds for a research team running occasional Typeform surveys inside the 100-response tier.

The argument only bites when submissions are the beginning of a process rather than the end of one. If a form fires a webhook that creates a record that triggers a workflow that updates a deal, you are paying four vendors to carry data you should own, and you cannot write a test that covers the whole path. That is the point where the platform stops being the fast option.

Sources

Is your platform outgrowing its stack?

Book a call and we'll walk through how we'd approach your platform, with an estimate grounded in a working prototype.