Email parsing comparison

Power Automate Parse Email Body to Excel: A Simpler Email Parser

A simpler way to parse email body data than stacking Power Automate expressions

If you parse email in Power Automate today, you know the routine: an HTML to text action, a few Compose steps, and a stack of split() and substring() expressions that break the moment a sender tweaks their layout. MailParse connects Gmail, Outlook, Microsoft 365, or any IMAP inbox, lets you name the fields you want, and exports them to Excel, CSV, and JSON, no expressions to write or maintain.

No split() expressions
Excel, CSV & JSON output
Reads body & HTML tables
API & webhooks

Last updated July 2026

Convert your email files
No install

Connect a mailbox to pull .eml/.msg in bulk, or paste a raw email to test the converter now.

or paste an email to test
Output format
Columns to extract
Extract your own custom fields
Popular:

Create a free account to download. No credit card required.

Quick answer

To parse an email body in Power Automate, you can chain string expressions or add AI Builder, but both break when the layout changes. MailParse is a simpler path: name the fields you want and it reads them from the body and HTML tables, then returns Excel, CSV, or JSON you feed straight into a flow through the API and webhooks.

No expressions
Name fields, skip the formulas
Excel / CSV / JSON
Spreadsheet & API output
HTML tables
Parses layout the flow trips on
Attachments
Listed by filename, type, and size

Power Automate can pull data out of an email, and if you already run on Microsoft 365 it is a reasonable place to start. The standard recipe is well documented: trigger on "When a new email arrives (v3)", run the "HTML to text" action to strip the markup, then chain Compose steps with split(), substring(), and indexOf() expressions to carve out each value, and finally use "Add a row into a table" to drop the result into Excel. For a short, plain text email that always arrives in the exact same shape, that flow works.

The friction shows up the moment your email is not that tidy. The "HTML to text" action handles tables poorly, so order confirmations and reports with real layout come through as a jumble that your split() expressions have to guess at. Those expressions are landmark based: they look for a label or a colon and grab what follows, so if a vendor changes a heading, adds a logo, or reorders a line, the flow silently grabs the wrong text or fails. Attachments are worse, because a flow cannot read the contents of a PDF or CSV without adding AI Builder, which consumes paid capacity. And large tables run slowly, since the apply-to-each loop processes rows one at a time. MailParse takes the expression work off your plate. You connect your mailbox directly, name the fields you want such as invoice_number, order_total, or tracking_number, and it reads them from the body and from HTML tables, then hands you a clean Excel workbook, a CSV, or JSON through the API and webhooks. For the flow-by-flow version of the native approach, see how to parse email body in Power Automate, and if you are not tied to Microsoft, the n8n email parser page covers the same job on an open automation platform. Teams whose mail lives in Outlook usually start with extracting data from Outlook emails instead of building a flow at all. This page is an honest look at where MailParse is the simpler path and where staying in Power Automate still makes sense.

What the converter does

Everything you need to turn a pile of email files into a spreadsheet your team can actually use.

Name fields instead of writing expressions

Skip the HTML to text, Compose, and split() chain. Describe the values you want once and MailParse extracts them, so a heading change in a sender email does not send you back into the flow editor.

Reads HTML tables the flow struggles with

The "HTML to text" action flattens tables and loses structure. MailParse parses HTML emails with tables and repeating rows, so line items and multi row data come through as clean spreadsheet rows.

Lists every attachment by filename

MailParse records each attachment by filename, type, and size for reference. When a value is locked in a PDF or CSV, extract the file with a document tool first, then parse the result with your named fields.

Holds up when senders change formatting

Expression-based parsing relies on fixed landmarks and breaks when a vendor reorders a line or adds a logo. MailParse reads the fields you name across senders that format the same data differently.

Excel, CSV, and JSON

Download a formatted .xlsx or CSV for a spreadsheet or accounting import, or take JSON from the API and webhooks to push parsed data into the same systems a flow would feed, like SharePoint or Dataverse.

Fast on large batches

Where an apply-to-each loop walks a big table row by row, MailParse parses the whole message in one pass, so a backlog of emails does not turn into a long-running flow.

How to parse an email body without the flow

Four steps to replace the HTML to text and split() chain with named fields.

1

Connect your mailbox

Connect the Outlook, Microsoft 365, Gmail, or IMAP inbox your emails arrive in directly to MailParse.

2

Name your fields

List the values your flow currently carves out with expressions as fields. Describe what you want instead of writing split() and substring() expressions.

3

Pick a format

Choose Excel, CSV, or JSON. Point the JSON output at the same webhook, SharePoint list, or app your flow updated so the rest of your process keeps working.

4

Run and reuse

Parse a backlog in one pass and let new mail flow in automatically. Adjust fields anytime from a form, with no expressions to re-debug when a sender changes their layout.

Who moves email parsing out of Power Automate

Teams whose emails have tables, attachments, or layouts the expressions cannot keep up with.

Microsoft 365 ops teams

Keep the data flowing into Excel, SharePoint, or Dataverse, but drop the brittle HTML to text and split() steps that need a rebuild every time a sender tweaks an email.

Accounting & AP teams

Pull totals, dates, and invoice numbers from the email body and its HTML tables, then export straight to Excel for a QuickBooks or Xero import. When the figure is locked in a PDF, extract the file with a document tool first, then parse the result.

Ecommerce & operations

Parse HTML order and shipping confirmations with line item tables into clean rows, the kind of layout the "HTML to text" action flattens and loses.

Developers & automation

Replace a fragile expression chain with JSON from an API and webhooks that holds up when message formats change.

MailParse vs parsing email in Power Automate

No expressions to write

Power Automate parsing leans on HTML to text plus split(), substring(), and indexOf() expressions. MailParse asks you to name the fields you want and extracts them for you.

Reads HTML tables, lists attachments

The "HTML to text" action flattens tables, and a flow needs paid AI Builder to read a PDF or CSV. MailParse parses HTML tables directly and lists each attachment by filename, type, and size.

Stable when formats change

Landmark-based expressions break when a sender reorders a line or adds a logo. MailParse reads named fields across varied layouts, so one setup covers many senders.

Stays in your stack

MailParse exports Excel and CSV for sheets and JSON through webhooks, which you can still feed into SharePoint, Dataverse, or a downstream flow if you want to keep parts of Power Automate.

Power Automate email parsing options, compared

There are a few honest ways to parse an email body when you live in Microsoft 365, and the right one depends on how messy your emails are and whether the value sits in a table or an attachment. Here is a straight side by side, with credit to each method where it wins. For the wider field of tools, see the best email parser guide.

What matters MailParse Power Automate native expressions Power Automate + AI Builder Zapier Email Parser
How you set it up Connect a mailbox, then name the fields you want Build a flow: trigger, HTML to text, then split() and substring() Compose steps Add an AI Builder model and configure or train it per document type Forward email to a parser mailbox and highlight each field in a sample
Body field extraction Name a value like invoice_total or order_id and it gets its own column Carve each value with landmark based split() and indexOf() expressions Reads unstructured text, but you configure and train it per layout Template based: works while the email keeps the same saved template
HTML tables and line items Parses HTML tables and repeating rows into clean spreadsheet rows HTML to text flattens tables, so rows are lost or jumbled Can read tables in documents, with setup and paid capacity Struggles with multi row tables; built for fixed templates
Attachments Lists each attachment by filename, type, and size Can save an attachment but cannot read inside it on its own Reads documents, but uses separate paid AI Builder capacity Parses the email body, not the contents of attachments
Holds up when senders change layout Reads named fields across senders that format the same data differently Breaks when a label moves, a line reorders, or a logo is added More tolerant once trained, but new layouts need retraining Breaks when the email no longer matches the saved template
Output and where it sends data Excel, CSV, and JSON, plus API and webhooks into SharePoint or any app Writes rows into Excel and feeds SharePoint, Dataverse, downstream flows Outputs to Dataverse and the Power Platform, then on to other actions Sends parsed fields to thousands of Zapier apps and Google Sheets
Cost model Paid SaaS plan with a free trial, no per document credits to manage Included with most Microsoft 365 plans that have Power Automate Separate AI Builder capacity billed on top of your plan Free parser tier, paid for higher volume and faster checks
Best for Anyone who wants named fields and tables without flow building Microsoft 365 teams with simple, consistent plain text emails Microsoft shops already invested in AI Builder and Dataverse Routing simple, templated emails into many connected apps

Power Automate, AI Builder, and Zapier capabilities reflect those products as of June 2026 and vary by plan and version. No specific pricing is implied here.

Frequently asked questions

How do I parse an email body in Power Automate?

In Power Automate you trigger on "When a new email arrives (v3)", run the "HTML to text" action to strip the markup, then add Compose steps with split(), substring(), and indexOf() expressions to carve out each value, and finally use "Add a row into a table" to write it to Excel. It works for short, consistent plain text emails but gets fragile with tables, attachments, or changing layouts.

Can Power Automate extract data from an email to Excel?

Yes, Power Automate can extract email data to Excel by converting the body to text, parsing the values with expressions, and using the "Add a row into a table" Excel action. The catch is the expression work and how easily it breaks when a sender changes formatting. MailParse does the same job by letting you name the fields you want and exporting them straight to an Excel workbook.

How do I extract data from an HTML table in an email in Power Automate?

Extracting an HTML table in Power Automate is the hard case, because the "HTML to text" action flattens table structure and loses the rows. People work around it with custom HTML parsing, regex-style expressions, or third-party connectors, which are slow and brittle. MailParse reads HTML tables and repeating rows directly, so each line item becomes a clean spreadsheet row without that workaround.

Why does my Power Automate email parsing keep breaking?

It breaks because expression-based parsing relies on fixed landmarks in the text, such as a label or a colon, and grabs whatever follows. When a sender reorders a line, renames a heading, or adds a logo, the landmark moves and the flow grabs the wrong value or fails. MailParse reads the fields you name across layouts, so a formatting change does not send you back into the editor.

Can Power Automate parse email attachments?

A standard Power Automate flow can save an attachment but cannot read a PDF or CSV on its own. To pull values out of a file you add AI Builder document processing, which consumes paid capacity. MailParse records each attachment by filename, type, and size, and reads the fields you name from the body and HTML tables. When the value is locked in a PDF, extract the file with a document tool first, then parse the result.

Does Power Automate have AI to parse emails?

Yes, Power Automate offers AI Builder, which can read documents and unstructured text, but it runs on a separate paid capacity and still needs configuring per document type. For many teams that is more setup and cost than the task warrants. MailParse builds the field extraction in, so you name what you want and get structured output without provisioning AI Builder.

Is there a simpler alternative to Power Automate for parsing emails?

Yes. If the expression chain and breakage are the problem, a dedicated email parser is simpler: you name the fields you want and it reads them from the body and HTML tables without flows or formulas. MailParse exports to Excel, CSV, and JSON and can still feed SharePoint, Dataverse, or a downstream flow through webhooks if you want to keep part of your Power Automate setup.

Parse your email body without the expressions

Connect a mailbox or paste an email and see the fields you name, including data from HTML tables, land in a clean spreadsheet in seconds.