AI email parser
An AI email parser uses a language model to read each email the way a person would and fill a fixed set of typed fields, without templates or regex per sender. ParsedMail adds a confidence score for every field, returns null instead of guessing, and sends uncertain results to a review queue.
Email received
Fields described as
contact name, company, email, phone, number of seats, budget, desired start date, source (one of website, referral, event, other)
JSON delivered to your webhook
{ "contact_name": "Elena Brooks", 0.98 "company": "Tidewater Logistics", 0.96 "email": "[email protected]", 0.99 "phone": "555 0187", 0.82 "number_of_seats": 40, 0.90 "budget": { "amount": 18000, "currency": "USD" }, 0.78 "desired_start_date": "2027-01-06", 0.84 "source": "event" 0.93 }
How AI parsing differs from templates
Template parsers work from a sample. You highlight "Order #" and the value after it, and the tool remembers the position or the surrounding words. That is fast to set up and fully predictable, as long as every email from that sender looks the same. When a sender redesigns its notification, adds a line or switches to an HTML table, the template returns nothing or the wrong value, and someone has to notice.
An AI parser does not remember positions. A language model reads the whole message against your field list and decides that "Budget is roughly $18k a year" means a money value of 18,000 USD, whether it sits in the first paragraph or the signature block. One schema covers every sender writing about the same thing. You still get fixed keys and types, because ParsedMail validates the model output against the schema before anything leaves. The parse email to JSON page shows the output format in detail.
| Template parser | AI email parser | |
|---|---|---|
| Setup per sender | One template each | None, one schema per workflow |
| Free-text emails | Weak | Strong |
| Layout changes | Template breaks | Usually unaffected |
| Uncertainty signal | Match or no match | Confidence score per field |
| Fully identical machine emails | Very good | Very good |
What the model ignores
Real email is noisy. Forwarded messages carry headers of the original, replies quote the whole thread, and signatures repeat names and phone numbers that belong to the sender, not to the subject of the email. ParsedMail tells the model to skip quoted replies, signatures and legal footers, and to use only text that is actually in the message. It never fills a field from general knowledge. In the example above the forwarding wrapper from the website form is ignored and the contact data comes from the original sender.
Confidence scores and null instead of guessing
Every field gets a score between 0 and 1, and every email gets confidence_avg. A clearly printed order number scores high. "Roughly $18k" scores lower, because the exact figure is not stated. When a value is simply not in the email, the field is null. That matters more than it sounds: a parser that invents a plausible delivery date is worse than one that admits it does not know, because the invented value flows into your systems unnoticed.
When a value cannot be converted to its type, such as "next Tuesday-ish" for a date field, the field becomes null and a warning is added to warnings. A missing required field gets confidence 0. Your code, or a reviewer, decides what to do with it.
A review queue for the uncertain cases
On Growth and Scale each inbox has a confidence threshold, 0.80 by default. If any field scores below it, or a required field is missing, the email stops at needs_review instead of going to your webhook. A reviewer sees the original email next to the extracted values, corrects what is wrong and approves or rejects it. Approved emails are delivered with the corrected values. This is how teams automate most mail while keeping a person on the edge cases. Details are on the email parser with human review page.
Classification when one inbox gets many kinds of email
A shared address like [email protected] may receive purchase orders, shipping notices and invoices. Instead of one inbox per type, attach several candidate schemas to the inbox. The model picks the schema that fits each email and records it in classification:
"classification": {"schema": "sch_2Wd5", "name": "Shipping notice", "confidence": 0.94}If no schema fits, the email goes to the review queue rather than being forced into the wrong shape. Classification is available on Growth and Scale.
When a template tool is the better choice
If you receive one kind of email from one system that never changes its layout, and you already use Zapier, the template-based Zapier Email Parser is free inside Zapier and may be all you need. It does not read PDFs, has no confidence scores and has no API of its own, so the trade-offs show up once senders multiply or attachments appear. A fair comparison is on the Zapier Email Parser alternative page.
Your data and the model
Emails are processed to fill your schema and nothing else. They are never used for model training. Raw email is kept for the retention period of your plan, from 30 days on Starter to configurable or zero retention on Scale, while the extracted JSON stays. More on the security page.
Writing field descriptions the model understands
The schema is the only instruction the parser gets, so clear names pay off. Name the business meaning, not the label in one sender's email: "requested delivery date" instead of "date 2". Add a short note where two values compete, such as "total including tax, not subtotal". Use an enum when you want one of a fixed set of answers, and a table for repeating rows like order lines. Mark only truly mandatory fields as required, because a missing required field sends the email to review. Test each change on a sample email in the dashboard, then replay stored mail if needed. The AI extraction page lists every field type.
Frequently asked questions
Does the AI parser need sample emails to learn from?
How accurate is AI email parsing?
What does the parser do when a value is missing?
null for that field. It does not guess. If the field is required, the email also gets confidence 0 for it and a warning.
Can I change the fields after going live?
Is the output the same shape every time?
Related
See your own email as JSON
Paste one into the demo, describe the fields and look at the result. No account needed.