Destinations

Webhooks with n8n and other tools

Send PageFork leads to n8n, or to Zapier and Make through a plain webhook, when the native apps are not the right fit.

For Zapier and Make, start with the native apps: the PageFork Zapier app and the PageFork Make app. They connect with an API key, offer your sites and forms as dropdowns, hand you clean field names, and can also create leads in PageFork.

This page covers the other route: pointing a webhook destination at an automation tool’s own webhook address. Use it when:

  • You use n8n, which has no PageFork app.
  • You use another tool that can receive a webhook.
  • You want the raw, signed payload in Zapier or Make rather than the native app’s tidied fields.

Webhook destinations are part of the Pro plan. See Basic and Pro plans.

The setup is the same in every tool:

  1. Create a webhook trigger in the automation tool and copy its URL.
  2. Add a PageFork webhook destination pointing at that URL.
  3. Send a sample so the tool learns your field names.
  4. Map the fields and turn the automation on.

Before you start: send a real submission

Every one of these tools builds its field mapping from the first request it receives. Whatever it sees, it treats as the shape of your data.

So make the first request a real one. Publish your site and submit the form yourself once. PageFork’s Send test also carries your real field names and works fine, but a genuine submission additionally proves the whole path — endpoint, spam checks, queue, delivery — in one go.

Either way, the field names your automation sees are the ones your form actually uses. PageFork refuses to send a test at all rather than invent placeholder names, precisely because a wrong mapping here fails silently later.

Zapier, through a plain webhook

The native Zapier app is easier and doesn’t need a paid Zapier plan. If you still want the webhook route:

  1. Create a Zap and choose Webhooks by Zapier → Catch Hook as the trigger.
  2. Copy the custom webhook URL Zapier gives you.
  3. In PageFork, open the site’s Settings → Forms → Destinations, click Add, choose Webhook, paste the URL, pick the form, and save.
  4. Submit your form once, then click Test trigger in Zapier.
  5. Add your action step and map fields from data__submission__fields__* — Zapier flattens nested JSON with double underscores, so email appears as data__submission__fields__email.

Webhooks by Zapier is a premium app and needs a paid Zapier plan. The native PageFork app does not.

Zapier’s Catch Hook does not verify signatures. That’s fine — the URL is secret and unguessable — but it means the X-PageFork-Signature header goes unused on this path.

Make, through a plain webhook

The native Make app is the simpler path. For the webhook route:

  1. Add a Custom webhook trigger to a scenario and copy its address.
  2. Create the PageFork destination pointing at it.
  3. Click Re-determine data structure in Make, then submit your form.
  4. Map fields from the nested structure Make derives — it preserves the nesting, so you’ll drill into data → submission → fields.

Custom webhooks are available on Make’s free tier.

n8n

  1. Add a Webhook node, method POST, and copy the production URL.
  2. Create the PageFork destination pointing at it.
  3. Submit your form to capture a sample.
  4. Continue your workflow from data.submission.fields.

n8n is the one tool here that can verify the signature, since you can run a Code node. If you do:

  • Enable the raw body option on the Webhook node. Verification hashes the exact bytes PageFork signed, and n8n’s parsed-and-re-serialised JSON will not match.
  • Follow the HMAC example in Webhook destinations.

Self-hosted n8n needs a public HTTPS address. PageFork refuses to deliver to private or loopback addresses, so an instance on your LAN, a localhost address, or a private VPN address will be rejected when you save the destination. Put it behind a real domain or a tunnel. n8n Cloud works out of the box.

Choosing a route

Native Zapier appNative Make appPlain webhook
SetupAPI key, then dropdownsAPI key, then dropdownsCopy and paste a URL
Field namesClean, top levelClean, in a Fields collectionNested in the raw payload
Can create leads in PageForkYesYesNo
Works with n8n and other toolsNoNoYes
Signature you can verifyNoNoYes

Troubleshooting

The automation fires but every field is empty. The tool learned its mapping from a different payload shape than it’s now receiving. Re-capture the sample and re-map — this is what the “send a real submission first” step prevents.

Nothing arrives at all. Check the delivery log under the destination in PageFork. A dead status with a 4xx means the tool rejected the request; a timeout means it took longer than 15 seconds to respond.

It worked, then stopped. Check whether the destination auto-disabled. Fifty consecutive failures turn it off; re-enable it after fixing the receiver.

Duplicate rows. Retries can deliver the same submission twice. Use X-PageFork-Idempotency-Key, which stays stable across attempts, to deduplicate.

Next