Parse Email into Salesforce: Fields, Tables & Records
Last updated August 2026
Try it now: extract email data to Excel, CSV, or JSON
Connect a mailbox to pull .eml/.msg in bulk, or paste a raw email to test the converter now.
Create a free account to download. No credit card required.
Email-to-Case routing an email but not the fields you need?
Salesforce can create a Case or Lead from an email, but extracting structured fields means Apex or fragile Flow formulas, and it flattens HTML tables into plain text. MailParse reads the full body and HTML table rows, pulls out the fields you name, then hands you clean CSV or JSON to load into Salesforce. See the Salesforce email parser approach, or read the full guide below first.
Salesforce is good at getting an email into the system. Email-to-Case turns an inbound message into a Case, email-to-lead and web-to-lead create Lead records, and the subject, sender, and body land on standard fields. What it does not do without help is pull the structured values out of that message: the order number in the third paragraph, the account ID a vendor buries mid-body, or the rows of a shipment table. This guide is a practical look at what native Salesforce email handling covers, where it stops, and how to get the rest of your email data into Salesforce as clean records.
Does Salesforce have an email parser?
Salesforce does not have a point-and-click email parser the way some CRMs do. It can route an inbound message into a Case with Email-to-Case or create a Lead, and the subject, sender, and body land on standard fields. To pull structured values out of the body, you write an Apex class that implements the Messaging.InboundEmailHandler interface, or you build a Flow that slices the body with string functions. Both work, and both need a developer or an admin comfortable with formulas.
The boundary matters. Routing an email into a record is built in. Turning the contents of that email into named fields is custom work that you build and then maintain as your senders change their formatting.
How do I parse an email into Salesforce?
There are three native paths. Email-to-Case creates a Case from the message. A Flow triggered on the new record can slice the body with functions like LEFT, MID, and FIND to populate fields. An Apex inbound email service gives full control over how the email becomes any record you want. All three need build time, and all three are keyed to fixed text positions, so they fail when a sender reorders a line or sends HTML.
The simpler route for varied mail is to parse the message in an external email parser first, name the fields you want, then load the result into Salesforce as a CSV import or through a webhook. One setup then covers many senders and layouts without code to redeploy.
Can Email-to-Case read attachments?
No. Email-to-Case can attach an inbound file to the Case it creates, so the PDF or spreadsheet is stored alongside the record, but it cannot read what is inside it. The invoice total in a PDF, the line items in an attached spreadsheet, and the details in a scanned document stay locked in the file. To get those into Salesforce fields, the attachment has to be extracted before the data reaches the record.
MailParse parses the email body and HTML tables and records the filename of any attachment for reference, but it does not read the data locked inside a PDF or spreadsheet. When the real data arrives as a file, extract it first: a dedicated invoice data extractor pulls the totals and line items straight from the document, and you feed that clean output into your Salesforce import. For everything that lives in the message itself, the parser handles it directly.
Can Salesforce extract data from the email body?
Only with code or formulas. An Apex InboundEmailHandler class can read the body and write any field you parse out of it, and a Flow can do a lighter version with string functions. Both are tied to fixed text positions, so they break when a vendor renames a heading, reorders a line, or sends HTML instead of plain text. You can patch the Apex or the Flow each time, but that turns into a maintenance cycle.
A parser that reads the fields you name across varied layouts removes that cycle, because it is not pinned to one exact template or to character offsets in the body.
Can Salesforce parse HTML emails and tables?
Not cleanly. Pulling table rows out of an HTML email in Salesforce means Apex that strips the markup and walks the rows, or a Flow chain of string functions, both of which are brittle. Many of the emails businesses actually receive, order confirmations, lead forms, and reports, carry their data in HTML tables where each row is a record. Those rows are exactly what native handling is not built to read.
An external parser reads HTML emails and repeating table rows directly, turning each row into its own clean record or spreadsheet line. That is the difference between one messy Description field and a structured set of columns you can import into Salesforce.
How do I import email data into Salesforce?
Use the Data Import Wizard or Data Loader with a clean CSV. Once an email parser has turned your messages into rows, with each field as its own column, you upload the CSV, map columns to Salesforce fields once, and import the batch as new or updated Leads, Contacts, Cases, or custom records. It is the fastest way to clear a backlog of emails into Salesforce in one pass.
The requirement is a clean CSV to begin with, which is what the parser produces. If the data started life as an attachment headed for your books, a CSV to QuickBooks converter takes that same export the rest of the way into accounting after you have loaded the record into Salesforce.
How do I create Salesforce records from email automatically?
Send the parsed data as JSON through Flow, Zapier, or Make. When the parser finishes a message it fires a webhook with the structured data, and a flow in any of those tools creates or updates a Salesforce record for each email as it arrives. No CSV, no manual import, and no Apex to deploy, the record simply appears in Salesforce.
This is the setup for steady inbound mail: leads from a marketplace, support requests, order confirmations. You name the fields once, connect the webhook to your Salesforce flow, and every future email lands as a record. Pair it with a one-time CSV import to handle both the backlog and everything new.
Email-to-Case or an external parser: which to use
Match the tool to the mail. If you receive one consistent, plain-text email type and only need it to become a Case, Email-to-Case plus a simple Flow is the cheapest option and worth using. If you receive HTML, tables, or formats that vary between senders, an external parser does the work native handling cannot, then hands the result to Salesforce through a CSV import or a webhook. Most teams use the native features for their tidy email types and a dedicated parser for everything else.
When you are ready to capture the body fields and table rows Salesforce leaves as text, the Salesforce email parser approach reads every message and gives you clean records to import or push into Salesforce. If you would rather see the data as a spreadsheet, the email to Excel converter exports it directly, developers can pull structured records through the email parser API, and if you are still choosing a tool, the best email parser guide walks through what to compare.
Run a different CRM alongside Salesforce? The same parsed-fields approach works when you parse email into Zoho CRM or parse email into ServiceNow, and the broader playbook for turning inbound mail into records is in how to add email leads to your CRM automatically.