All docs
3 min read

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:

// 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