Skip to content
ParsedMail

Email parser for Zapier

To use ParsedMail as an email parser for Zapier, create a Zap with the Webhooks by Zapier trigger and the Catch Hook event, then add the hook URL as a webhook endpoint in ParsedMail. Every parsed email then starts the Zap with typed fields, confidence scores and a review flag ready to map.

How the connection works

ParsedMail does not need its own app in the Zapier directory. It uses the built-in Webhooks by Zapier trigger: Zapier gives you a URL, ParsedMail posts a JSON event to it each time an email is parsed, and the Zap runs once per email. Webhooks by Zapier is a premium app on Zapier's side, so check that your Zapier plan includes it.

Webhooks are available on every paid ParsedMail plan. The parsing happens before Zapier sees anything, so the Zap receives clean, typed values instead of a raw email body. If you are new to the idea, the guide to the inbound email webhook explains the event format, and the AI email parser page explains how fields are read without templates.

Set up the Catch Hook trigger

  1. In Zapier, create a Zap and pick Webhooks by Zapier as the trigger.
  2. Choose the Catch Hook event and copy the URL Zapier shows.
  3. In ParsedMail, open Webhooks, add an endpoint and paste the URL. Leave it on the workspace to receive every inbox, or limit it to one inbox, for example [email protected].
  4. Press Send test event. ParsedMail posts a webhook.test event with sample fields from your schema.
  5. Back in Zapier, press Test trigger and pick the request that arrived.

Prefer a real sample over the test event once you have one: forward a typical email to the inbox and test the trigger again, so Zapier learns every field your schema produces.

Field names you will see in Zapier

The event body has an outer data key holding the email object, and the email object has its own data key holding your fields. Zapier flattens nested keys into labels, so the path data.data.order_number appears as Data Data Order Number.

JSON pathLabel in ZapierUse it for
data.data.order_numberData Data Order NumberYour extracted field
data.data.total.amountData Data Total AmountMoney values as numbers
data.confidence_avgData Confidence AvgFiltering
data.needs_reviewData Needs ReviewFiltering and routing
data.from.emailData From EmailSender address
data.idData IDLinking back to the email

Table fields such as line items arrive as arrays of objects. Zapier treats those as line items, which some actions can expand into one row per item.

Only continue when the parse is confident

Add a Filter by Zapier step right after the trigger. Two common conditions:

  • Data Needs Review (Boolean) is false. This follows the review threshold you set on the inbox, 0.80 by default.
  • Data Confidence Avg (Number) is greater than or equal to 0.9, if you want a stricter bar for one Zap.

On Growth and Scale, emails below the threshold wait in the review queue. A reviewer corrects the values next to the original email and approves it, and only then is the webhook sent, with the corrected values. Read more about human review of parsed emails. On Starter, use Paths by Zapier to send low-confidence emails to a Slack channel for a person to check.

Example destinations

  • Google Sheets, Create Spreadsheet Row: one row per order, lead or invoice. See email to spreadsheet.
  • Airtable, Create Record: a base of bookings or applications with typed columns.
  • Slack, Send Channel Message: a short summary with the sender and the key values.
  • HubSpot, Create or Update Contact: name, email, company and phone from lead notification emails, as described in parsing lead emails.

Signatures, retries and duplicates

Each request carries a ParsedMail-Signature header, an HMAC-SHA256 of the timestamp and the raw body made with the endpoint secret. Catch Hook does not check it, so treat the hook URL as a secret. If you need verification inside Zapier, use the Catch Raw Hook event, which keeps the raw body and headers, and compute the HMAC in a Code by Zapier step.

If Zapier does not answer with a 2xx status within 15 seconds, ParsedMail retries after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours. Every attempt keeps the same Idempotency-Key, so you can skip a repeat with a lookup step. Duplicate emails (same Message-ID, or same sender, subject and body within 30 days) are never parsed or sent again. The webhook documentation has the full header list.

Frequently asked questions

Is there a ParsedMail app in the Zapier directory?

No. ParsedMail uses the built-in Webhooks by Zapier trigger, which works the same way and gives you every field of the parsed email.

Can Zapier send emails to ParsedMail instead?

Yes. Use a Webhooks by Zapier POST action against /api/v1/inboxes/{id}/emails with an API key that has the parse scope. Each call counts as one email.

Why do my fields start with Data Data?

The event wraps the email object in data, and the email object keeps your extracted fields in its own data key. Zapier joins both names in the label.

What happens when I change my schema?

The schema version goes up and new emails carry the new fields. Test the trigger again in Zapier so it learns the new keys. You can replay older emails to re-parse them without paying twice.

Does the Starter plan work with Zapier?

Yes. Webhooks with retries are included on Starter. The review queue and failure alerts start on Growth.

Related

See your own email as JSON

Paste one into the demo, describe the fields and look at the result. No account needed.