← All posts
formsautomationzapier

Send every bio-page form submission to Zapier, Make or Google Sheets

BonPages Team · September 10, 2026 · 8 min read
Send every bio-page form submission to Zapier, Make or Google Sheets

A form on your bio page is where leads, sign-ups and enquiries arrive. Getting an email for each one is fine at five a week. At fifty a week you want them somewhere structured: a Google Sheet, a CRM, a Slack channel, your newsletter tool, or all of those at once. That's what a webhook is for.

This guide sets up a BonPages form so every submission is posted to Zapier, Make or n8n the moment it arrives, and from there goes anywhere those tools connect. No code, about fifteen minutes, and the setup is the same whichever automation tool you use.

What a webhook is, in one paragraph

When someone submits your form, BonPages stores the submission, emails you if you've asked it to, and then sends a small package of data (the submission, as JSON) to a URL you specify. That URL belongs to your automation tool. The tool receives the package and runs whatever steps you've built: add a row to a sheet, create a contact, post a message. The whole thing takes a second and happens after the visitor has already seen the "thanks" message, so it never slows the form down.

Before you start

You need a form on your page and an account with Zapier, Make or n8n. The free tier of any of them is enough to try this.

In BonPages, open your site in the builder, select the Form block, and scroll the panel to "Webhook (Zapier, Make, n8n…)". That's where the URL goes. Leave it for now; the automation tool gives you the URL first.

Step 1: get a webhook URL from your tool

Zapier: create a new Zap. For the trigger, choose "Webhooks by Zapier" and the event "Catch Hook". Zapier shows a URL that starts with https://hooks.zapier.com/hooks/catch/…. Copy it.

Make: create a scenario, add a "Webhooks" module, choose "Custom webhook", click "Add" and give it a name. Make shows a URL starting with https://hook.eu1.make.com/… or similar. Copy it.

n8n: add a "Webhook" node, set it to POST, and copy the production URL.

Whichever tool, the URL must be https:// and public. That's all BonPages checks.

Step 2: paste it into the form and send a test

Back in the builder, paste the URL into the Webhook field on the form. Click Send test. BonPages posts a sample submission to the URL right away and tells you whether the receiver answered (it shows "Delivered" or the failure reason).

Switch to your automation tool. Zapier will say it found a request; Make and n8n will show the received data. The sample looks like a real submission with name, email and message fields, so you can map them in the next step without submitting the real form yet.

Save the form. From now on every real submission is sent.

Step 3: understand the payload

This is what arrives at your URL, as JSON:

{
  "event": "form.submitted",
  "formName": "Contact",
  "siteHandle": "yourname",
  "pageId": "…",
  "blockId": "…",
  "submissionId": "…",
  "submittedAt": "2026-09-10T12:00:00.000Z",
  "fields": {
    "name": "Jane Cooper",
    "email": "jane@example.com",
    "message": "Can we work together?"
  }
}

The fields object has one key per form field, named after the field's name in the builder. Change a field name and the key changes, so name fields deliberately before you build the automation. formName is the form's internal name from the panel, useful if several forms post to the same URL. submissionId is unique per submission, which lets you de-duplicate if a delivery is ever retried by your tool.

Step 4: build the automation

A few setups people actually use:

Google Sheets. Action: "Create Spreadsheet Row". Map fields.name, fields.email, fields.message and submittedAt to columns. Every lead lands in a row.

Mailchimp, ConvertKit, Beehiiv. Action: "Add/Update Subscriber". Map fields.email and fields.name. Tag with formName so you know which form they came through. This is how a "Join the newsletter" form on your bio page feeds your real newsletter tool with no manual export.

HubSpot, Pipedrive, Notion. Action: create a contact or a database item. Map the fields, and use siteHandle or formName as the source.

Slack or Discord. Action: send a message. Template it: "New lead from {formName}: {fields.name} ({fields.email}) — {fields.message}". You'll see enquiries the second they arrive.

Several at once. Zapier and Make both let one trigger fan out to multiple actions. Sheet plus Slack plus newsletter from one webhook is normal.

Step 5: check deliveries

Every submission in the BonPages Submissions inbox shows whether the webhook was delivered. A green "hook" marker means the receiver answered with success. A red one shows the reason: a status code like 500 from the receiver, or "timeout" if it didn't answer within five seconds.

The submission itself is always saved and emailed regardless of the webhook, so a failed delivery never loses a lead. It just means the automation didn't run for that one, and you can add it by hand or re-send it from the tool's side.

Signing: proving the request is from BonPages

Anyone who knows your webhook URL could post fake data to it. To let your receiver check that a request really came from BonPages, generate a signing secret under Settings → Integrations in the builder. From then on every webhook carries a header:

X-BonPages-Signature: sha256=<hex HMAC-SHA256 of the raw request body, keyed by your secret>

Zapier and Make don't verify signatures out of the box, and for a personal Sheets automation that's fine. If you're posting to your own server or an n8n workflow, verify the signature: compute the HMAC of the exact body you received with your secret and compare it to the header. Mismatch means drop the request.

The secret is shown once in Settings and can be regenerated; regenerate it if it ever leaks, and update the receiver.

Things to know

One attempt, five seconds. BonPages sends each submission once, with a five-second timeout, and records the result. It doesn't retry. Zapier and Make answer in well under a second, so in practice failures come from a paused Zap or a scenario that's switched off. If you see red markers, check the tool is on.

Order isn't guaranteed. Two submissions in the same second might arrive in either order. Use submittedAt if order matters.

Testing with real data. The "Send test" payload is sample data. After building the automation, submit the real form once yourself to see genuine field names flow through, then delete the test row.

Local development. If you're building your own receiver on localhost, BonPages won't post to it because it requires a public https URL. Use a tunnel like ngrok, or a request-catcher service, while you're developing.

Multiple forms. Each form has its own webhook field. Point them at the same URL and branch on formName, or give each its own automation.

Three automations worth copying

The newsletter feeder. Form "Join the list" with name and email. Webhook to Zapier, action "Add subscriber" in your email tool, tagged with formName. Result: your bio page is a live sign-up form for the newsletter you actually send, with no exports. Add a second action that posts "New subscriber: {email}" to a Slack channel if you like seeing them arrive.

The lead router. Form "Work with me" with name, email, budget (dropdown) and message. Webhook to Make. A router splits on fields.budget: high-budget leads create a deal in the CRM and ping you on your phone; lower-budget leads get a polite auto-reply from your email tool pointing at your self-serve product. You still see every lead in the BonPages inbox; the automation just decides what happens first.

The restock list. A "Notify me" form on a sold-out product with just an email field. Webhook to a Google Sheet, one tab per product using formName. When the restock lands, you have the list, in order of who asked first.

Naming fields so automations don't break

The keys in fields come from the field names you set in the builder, so treat them like column names in a database: short, lowercase, no spaces, and never renamed once an automation depends on them. email, name, budget, message. If you need to change what a field asks, change its label (what visitors see) and leave the name alone. The label can be "What's your rough budget?" while the name stays budget.

Checking it's still working

Automations break quietly: a Zap gets paused when a trial ends, a Make scenario hits its operations limit, a receiver moves. The webhook status on each submission in the inbox is your smoke test. Glance at it once a week. A run of red markers means the tool stopped, not that leads stopped; the submissions are all still there, and re-enabling the automation is usually one click.

What this replaces

Before webhooks, getting bio-page leads into a system meant exporting a CSV every week and importing it, or copying from email. Now the form on your bio page is a real input to whatever you already use. A creator's newsletter form feeds the newsletter. A freelancer's enquiry form creates the CRM deal. A shop's "notify me" form builds the restock list in a sheet.

Forms, the inbox, CSV export and the webhook are all on the BonPages free plan. If you have a form on your page and a tool you wish it talked to, this is a fifteen-minute job.