Five form tools. One database. Somewhere in between, a script with a single author, no tests, and a habit of failing on a Saturday.
Use the native webhook where your form builder has one. Parseur handles everything that cannot: the forms you do not own, the plans that sell webhooks as an upgrade, the builders whose connector list stops before your database. Submissions arrive by email or by API and leave as clean structured JSON, into your database, your warehouse, or your CRM. There is a free plan, so the whole evaluation costs you one forwarded submission.
Key Takeaways
- Use the native webhook when your form builder has one. Shortest path, fewest moving parts. Parseur takes webhook and API input too, so the advice does not stop at our door.
- Parse the notification email when there is no webhook to use. Gated plan tiers, forms you do not control, and builders with no connector for your database all leave email as the only channel a submission has.
- One field list, many form builders. Typeform, Gravity Forms, Contact Form 7, Wix, and a hand-rolled React form all resolve to the same schema. Your database gets one row shape instead of five integrations to maintain.
Webhook or email? Use whichever your form actually supports
If your form builder offers a native webhook, use it. It carries structured fields, fires once per submission, and removes a delivery hop from the pipeline. Point it at Zapier, Make, n8n, or Power Automate, insert into your database, done. Parseur accepts webhook and REST API input as well, so this advice does not stop at our door.
No real form estate is all webhooks, though. Email is the only channel a submission has when:
- The webhook is a paid upgrade, and the form your marketing team built two years ago sits on the old plan.
- You do not own the form. A partner portal, a client's intake page, a vendor's request form. You get the notification, never the settings page.
- The connector list covers Google Sheets and Mailchimp but stops well short of Snowflake, Supabase, or your own PostgreSQL.
- Nobody will touch the form. That Contact Form 7 install has run quietly since 2019 and nobody volunteers to be the person who breaks it.
- Five builders have to land in one table, and you would rather keep one field list current than five payload mappings.
Those submissions are as real as the ones with webhooks. The only question that matters is whether the row appears.
"We already have Zapier. Why add anything?"
Zapier, Make, n8n and Power Automate are excellent at moving a structured payload and poor at manufacturing one. Hand them a webhook with named fields and the database insert is a few clicks. Hand them a notification email and you are back to writing regex against a body string, which is the script this page is about. Parseur sits upstream of all four: it turns the email into named, typed fields and then hands them to the automation platform you already pay for, or straight to your database by webhook or REST API. It replaces the parsing step, not your stack.
Form builders stop where your schema starts
Every web form to database project hits the same wall. Form builders are built to notify, not to load. Your database wants typed, validated JSON that matches a schema, and a notification email is neither. Something has to close that gap, and the something is usually a few hundred lines of PHP or Python that parse, map, validate, log, and then need watching, because when they fail they fail quietly and the submissions simply stop arriving.
The build looks small and then it is not. Over 60% of integration projects fail to deliver expected results, usually on complexity and misalignment rather than on anything dramatic. Upkeep is the line nobody budgets for, and Jellyfish puts it at 5+ hours weekly of developer time lost to manual scripting and maintenance. The failures are quiet ones. 10% error rates in form and CRM setups are ordinary enough to go unremarked, and at a few thousand submissions a year that is hundreds of leads nobody ever followed up.
Parseur is that gap, sold as a product. A submission arrives by email or by API and leaves as clean structured JSON, delivered by webhook, API, or a native connector. No script to inherit, no middleware to babysit.
A reliability checklist for a form-to-database pipeline
A production form-to-database pipeline needs eight things: retries, delivery logs, error notification, deduplication, normalization before load, a stored raw payload, a restricted database user, and monitoring for silence. Every item on that list is there because somebody shipped without it once and found out. Here is what to require, and what Parseur does about each.
| Requirement | What it means | Parseur |
|---|---|---|
| Retries | A failed delivery is attempted again, not dropped | Automatic retries on every API call and outgoing webhook |
| Delivery logs | You can prove what was sent, when, and what came back | Full delivery logs with the response for every call |
| Error notification | Somebody hears about a failure before a customer does | Alerts and monitoring on processing and delivery |
| Deduplication | The same submission does not become two rows | A unique document ID sent with every payload, for upserts |
| Normalization before load | Values match your column types on arrival | Phone, date, currency, and numeric normalization, consistent naming |
| Raw payload kept | You can replay or audit after a schema change | The original document is stored next to the extracted fields |
| Restricted database user | The integration writes only where it should | Your side, and worth doing: insert and update on the target table only |
| Silence monitoring | You notice when nothing arrives at all | Processing alerts, plus your own check on last-row timestamp |
The last two are yours to configure wherever the insert happens. The rest arrive with the product.
The web form to database path, in three steps
Form, then Parseur, then your database. That is the whole route from form submissions to database rows, and only one of the three steps has ever caused anybody trouble.
Step 1. The trigger
A submission becomes either a webhook call or an email notification. Contact Form 7, Typeform, JotForm, Gravity Forms, Wix Forms, Squarespace Forms, Microsoft Forms, and custom React or Next.js forms are all covered, because every one of them can do at least one of the two.
Step 2. The transformation
This is the step that breaks in DIY setups. Parseur cleans and prepares the data before your database ever sees it. Cleaning strips subject-line prefixes, trims whitespace, and absorbs inconsistent formatting. Normalization turns (555) 123-4567 into +15551234567, pushes dates into ISO format, and keeps field naming consistent across form builders. What reaches your schema matches your schema.
Step 3. The load
Structured data flows into no-code databases such as Airtable, Notion, and Baserow, or SQL databases such as PostgreSQL, MySQL, and SQL Server, through a direct webhook, the API, Zapier, Make, n8n, or Power Automate. Your database receives verified records, not raw email content.
Four routes below, chosen because they are the ones people ask about. Gravity Forms to database, Contact Form 7 to database, Jotform to database, Microsoft Forms to SQL database: the trigger changes, the three steps do not. Read whichever sits closest to your stack.
Typeform to PostgreSQL
If your Typeform account has webhooks, use them and skip us for this one: Typeform webhook into your automation platform, then an upsert into PostgreSQL keyed on the response ID. Parseur earns its place when the account sits on a plan without webhooks, when the responses reach you as forwarded notifications from somebody else's Typeform, or when Typeform is one of four tools that all have to land in the same table. Fields come out normalized, with a unique document ID to upsert on, and the mapping survives Typeform redesigning its notification email.
Gravity Forms to PostgreSQL
Gravity Forms is where most WordPress teams end up, and its notification email is stable enough to be boring. Map Name, Email, Message and whatever custom fields marketing added last quarter to your PostgreSQL columns, normalize phone numbers, dates, and currencies on the way through, and deliver by webhook or through an automation platform. No PHP to write, and nothing to repair the morning after somebody edits the email template.
Wix and Squarespace forms to Supabase
Wix and Squarespace have short connector lists and long customer lists, which is why the notification email is often the only export anyone actually has. Parseur reads it, returns structured JSON, and writes into Supabase tables or passes it onward through a webhook.
Typeform to Snowflake
Moving form data to data warehouse tables is less forgiving than a CRM load, because a broken row shape surfaces as a wrong dashboard three weeks later rather than as an error at insert time. Each response is normalized, verified, and delivered as JSON ready for ingestion. Nested arrays survive, optional fields come back as nulls instead of shifting the payload, and values are extracted from the document rather than guessed at.
Webhooks versus API polling
Most DIY setups poll for new submissions every 5 to 15 minutes. That buys you lag, burns API calls on empty responses, and loses data whenever a poll window is missed.
Parseur pushes instead. An outgoing webhook fires the second a document finishes processing, so your database, CRM, or spreadsheet is current rather than nearly current. No batch windows, no polling load, nothing to miss. New to webhooks? Our guide to what a webhook is covers the mechanics.
Can LLMs extract data from web forms?
For one submission, yes. Paste a notification into a general-purpose model and it will hand back a tidy structured output. For an ad-hoc question, a one-off summary, or an ambiguous message, that is genuinely useful and needs no setup at all.
Volume is where it comes apart. The same submission can produce two different outputs on two runs, a hallucinated value breaks a workflow without announcing itself, and cost and latency both climb with throughput. Your database wants the same fields, spelled the same way, on record 4,000 as on record one. Parseur uses AI to read the document and fixed field definitions to write the output, which is the combination that survives a Monday morning backlog.
What a product gives you that a script does not
- It is still running in six months, because it is somebody's product rather than somebody's side project. Volume moves with your plan, not with a rewrite.
- Any form that can send an email or POST is in scope, from Contact Form 7 and JotForm to a hand-rolled React form. Nothing to install, no format to conform to.
- Fields arrive extracted, normalized, and verified, so phone numbers, dates, and line items match your column types instead of landing as raw text.
- Destinations you actually use: SQL databases, no-code databases, Google Sheets, CRMs, or your own application by webhook.
- Ambiguous or missing fields can be held for human review before anything leaves Parseur. Automation does not have to mean unsupervised.
- Setup is point-and-click. Create a mailbox, confirm the field list, and let the monitoring tell you when something needs you.
From raw submission to clean JSON
The first question everybody asks is what the output actually looks like.
Parseur answers it before anything reaches production. Raw submission on the left, the JSON object on the right. Nulls stay nulls instead of shifting the payload, nested arrays survive intact, and every field arrives extracted and normalized. Confirm the shape with your own eyes, then switch the delivery on.
The example below is deliberately silly. The mechanics under it are the ones you would run in production.
Say you run a Movie Star Concierge Service in Los Angeles, and your website takes requests through a form.

Every submission sends you an email:

You want those requests in Google Sheets, without reading them one at a time.
First, create a Parseur account and start on the free plan. Create a mailbox, then forward one request to it. Parseur's Text AI engine reads the email and proposes the fields it thinks you want. Confirm the list, add anything it missed, and every request after that is processed the same way. No template to draw, no layout to maintain.

Parsed data from Mr. Murray's request:
| Parsed data | |
|---|---|
| Name | Bill Murray |
| [email protected] | |
| Request | I need help |
| Message | I've lost a groundhog. Have you seen it? |
| Received | 2017-05-31T15:46:27.150101+00:00 |
Where the data goes next
The last decision is the destination:
- Deliver to your own application or database through an HTTP webhook or the REST API
- Push in real time to hundreds of applications through our Zapier integration, including HubSpot, Salesforce, and Insightly
- Sync to Google Sheets, updated automatically every time a submission is processed
- Download CSV and hand it to whatever consumes it
- Download it and open it in Excel
Form submissions are one shape of inbound data. If that same inbox is also carrying sales enquiries, lead emails run through the same mailbox.
Send one submission through and read the JSON. That is the whole evaluation.
Last updated on




