All docs
3 min read Last updated:

Zapier recipe

Zapier is the path of least resistance when you want submissions in HubSpot, Mailchimp, Notion, Trello, Airtable, or any of the long tail. No code, mostly point-and-click.

Setup

1. Create the Zap trigger

In Zapier: Create Zap → Trigger → Webhooks by Zapier → Catch Hook. Zapier gives you a unique webhook URL. Copy it.

(If you have a paid Zapier plan, Catch Raw Hook lets you verify the HMAC signature in a Code step. On the free plan, you skip verification - fine for low-stakes forms, not great for production.)

2. Wire Formspring

In Formspring: Webhooks → Add webhook → Generic. Paste the Zapier URL.

Send a test from the Send test button. Zapier will catch it and surface the payload structure for use in subsequent steps.

3. Build the action

Add an action step. Common ones:

  • HubSpot → Create or Update Contact: map payload.email → email, payload.name → name.
  • Mailchimp → Add/Update Subscriber: map payload.email → email, tag with form_name.
  • Google Sheets → Create Spreadsheet Row: map each payload.* to a column.
  • Slack → Send Channel Message: format using the form name + key fields.
  • Airtable → Create Record: map fields, include submission_id for idempotency.

Test the action with the captured sample. Turn the Zap on.

Verifying the signature in a Zapier Code step

If you're on a plan that supports Code by Zapier, slot a step before your action:

js
// Code by Zapier (Node)
const crypto = require('crypto');
const raw = inputData.rawBody;          // pass via Catch Raw Hook
const sig = inputData.signature;         // X-Formspring-Signature
const secret = inputData.secret;         // store in step config

const expected = crypto.createHmac('sha256', secret).update(raw).digest('hex');
if (expected !== sig) {
  throw new Error('Invalid signature');
}

return JSON.parse(raw);

The downstream steps consume the parsed body.

Pricing reality check

Zapier counts every triggered submission as a task. High-volume forms eat your Zapier quota fast. At ~1,000 submissions/month per form, you're outgrowing the free tier. Two ways out:

  • Filter early: add a Filter step right after the trigger so cheap rejects (e.g. flagged submissions, internal test domains) don't consume tasks downstream.
  • Move off Zapier: if you only need one or two destinations, a 30-line handler on Cloudflare Workers or Lambda costs cents per million calls.

Common Zaps that pay off

  • New submission → CRM contact + Slack alert (one Zap, two actions).
  • Flagged submission → moderation Trello card.
  • Submission with attachment → upload file to Drive, then row in Sheets with link.

What's next