Skip to content
ParsedMail

Email parser for Make

To use ParsedMail as an email parser for Make, start a scenario with the Webhooks module and its Custom webhook trigger, copy the address Make generates and add it as a webhook endpoint in ParsedMail. Each parsed email then arrives as a bundle with typed fields, confidence scores and a review flag.

How ParsedMail and Make fit together

Make does not need a ParsedMail app. The built-in Webhooks module gives you a Custom webhook address, ParsedMail posts a JSON event to it after each email is parsed, and Make turns that JSON into a bundle with every field available for mapping. The reading of the email happens in ParsedMail, against the schema you described in plain English, so the scenario works with values instead of text. If you want to see that step first, try it on the parse email to JSON page.

Webhooks are part of every paid ParsedMail plan.

Create the Custom webhook in Make

  1. Create a scenario and add Webhooks, then Custom webhook.
  2. Click Add, give the webhook a name such as ParsedMail orders and save. Make shows the address.
  3. Copy the address. In ParsedMail, open Webhooks, add an endpoint and paste it. Scope it to the workspace or to one inbox, for example [email protected].
  4. In Make, click Redetermine data structure so the module listens.
  5. In ParsedMail, press Send test event, or forward a typical email to the inbox. Make reports that the structure was determined.

A real email gives Make the most complete structure, because it contains every field of your schema with real values, including table fields such as line items.

Mapping fields from the bundle

The event body is {"id", "type", "created", "data"}. The outer data is the email object, and its own data holds your extracted fields. In Make's mapping panel you open data, then data again, and pick order_number, which is the path data.data.order_number.

  • Money fields are objects, so map data.data.total.amount and data.data.total.currency separately.
  • Dates arrive as YYYY-MM-DD, which Make's date functions read directly.
  • Table fields are arrays. Put an Iterator after the webhook to process one line item per bundle, and an Array aggregator if you need them back together.
  • Missing values arrive as empty (null), never as a guess.

Filter by confidence before acting

Click the link between the webhook and the next module and set up a filter. Use data.needs_review Equal to false, which follows the review threshold of the inbox (0.80 by default), or data.confidence_avg Greater than or equal to 0.9 for a stricter bar.

With a Router you can send confident bundles to your system of record and the rest to a Slack message for a person. On Growth and Scale, the review queue does this inside ParsedMail: low-confidence emails wait for a reviewer, and the webhook goes out only after approval, carrying the corrected values.

Example scenarios

  • Orders to Google Sheets: Custom webhook, filter, Google Sheets Add a Row. See order email parsing.
  • Invoices to Airtable: Custom webhook, Iterator over line items, Airtable Create a Record. See invoice email parsing.
  • Leads to HubSpot: Custom webhook, HubSpot Create or Update a Contact, Slack Create a Message for the sales channel.

Signatures, retries and timeouts

Every request has a ParsedMail-Signature header with a timestamp and an HMAC-SHA256 of the timestamp and the raw body, made with the endpoint secret. The Custom webhook module does not check it for you, so keep the address private. If your scenario must verify it, enable header capture in the webhook's advanced settings and compare the value in the scenario before any other module runs.

Make answers webhooks quickly by default. If it does not return a 2xx status within 15 seconds, ParsedMail retries after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours, with the same Idempotency-Key on each attempt. You can also replay any delivery from the log in ParsedMail. Details are in the webhook documentation.

Frequently asked questions

Is there a ParsedMail app in Make?

No. ParsedMail uses the built-in Webhooks Custom webhook trigger, which receives the full parsed email as a bundle.

Can a Make scenario send emails to ParsedMail?

Yes. Use the HTTP Make a request module to POST to /api/v1/inboxes/{id}/emails or /api/v1/parse with a Bearer API key that has the parse scope.

How do I process line items one by one?

Put an Iterator on the table field, for example data.data.products. Each item becomes its own bundle with typed columns.

What if my scenario was off when an email arrived?

If the webhook does not answer with a 2xx status, ParsedMail retries five times over about 15 hours. After the last attempt the delivery is marked failed, and you can replay it from the ParsedMail log once the scenario is on again.

Do test events count toward my plan?

No. A test event only sends sample fields. Plan usage counts parsed emails and attachment pages.

Related

See your own email as JSON

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