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
- In Zapier, create a Zap and pick Webhooks by Zapier as the trigger.
- Choose the Catch Hook event and copy the URL Zapier shows.
- 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]. - Press Send test event. ParsedMail posts a
webhook.testevent with sample fields from your schema. - 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 path | Label in Zapier | Use it for |
|---|---|---|
data.data.order_number | Data Data Order Number | Your extracted field |
data.data.total.amount | Data Data Total Amount | Money values as numbers |
data.confidence_avg | Data Confidence Avg | Filtering |
data.needs_review | Data Needs Review | Filtering and routing |
data.from.email | Data From Email | Sender address |
data.id | Data ID | Linking 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?
Can Zapier send emails to ParsedMail instead?
/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?
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?
Does the Starter plan work with Zapier?
Related
See your own email as JSON
Paste one into the demo, describe the fields and look at the result. No account needed.