Email parsing for SharePoint Online & Microsoft Lists

Email to SharePoint List: SharePoint Email Parser for Outlook and Microsoft 365

Turn inbound email into SharePoint list items with every column populated

A standard flow gives you four useful columns and one giant text blob. The purchase order number, the site address, the requested date, and the quantity are all sitting in that blob, so nobody can filter, group, or build a view on them. MailParse reads the full message and any HTML table rows, extracts the fields you name, and hands you CSV and JSON that line up with your SharePoint columns.

One SharePoint column per field
HTML table rows kept separate
CSV paste or Power Automate JSON
Works with Microsoft 365 and Outlook

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

Email to SharePoint list automation means each incoming message becomes a list item with its columns already filled, not one row holding a wall of body text. SharePoint Online has no incoming email setting for lists, so teams build a Power Automate flow, and that flow can only write what it was handed: subject, sender, received time, and the whole body dropped into a single multiple lines of text column. MailParse reads the body and any HTML table rows first, pulls out the values you name, and returns clean CSV for a grid view paste or JSON your flow maps straight onto SharePoint columns.

No incoming email
SharePoint Online lists cannot receive mail
One text blob
What a plain flow writes to the list
Named columns
What a parser adds on top
63,999 chars
Multi-line column limit a body can blow past

SharePoint lists are where a lot of American businesses actually run their operations: the intake log, the request register, the equipment tracker, the site visit schedule. All of them get fed by email. Someone forwards a message, someone else opens the list and retypes six values from it, and everyone agrees it should be automated. Then they find out that SharePoint Online removed incoming email support for lists years ago, and the only supported route is a flow.

The flow is the easy part. Power Automate has had a "when a new email arrives" trigger and a SharePoint "create item" action for a long time, and wiring them together takes about ten minutes. The hard part is what goes in the columns. The trigger hands you the subject, the sender, the received time, and the body, and that is it. To get a purchase order number out of the body you either add an HTML to text action and start slicing the string with split and trim expressions, or you pay for AI Builder, or you accept that the useful data lives in one multiple lines of text column where no view, filter, or grouping can reach it.

MailParse solves it from the other side of the flow. Connect the mailbox that receives the mail, name the fields your SharePoint list actually has columns for, and every message comes back as a structured record: one value per field, one row per email, and a separate row for each line in an HTML table. From there you either export a CSV and paste it into the list in grid view, or take the same fields as JSON and map them onto the create item action so each column gets its own value as the mail arrives.

What the converter does

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

A column for every field

Pull the order number, site, requester, severity, cost center, or due date out of the body and give SharePoint one value per column instead of a paragraph nobody can filter on.

HTML tables become list items

Vendor and system emails carry a table of line items. Each row comes back as its own record, so ten line items become ten list items rather than one flattened cell.

CSV for a grid view paste

SharePoint can create a new list straight from a spreadsheet, and you can paste rows into an existing list in grid view. Export a CSV whose headers match your columns and both routes work.

JSON for the create item action

Keep your flow. Take the parsed fields as JSON, drop them into the SharePoint create item action, and map each one to its column. No split, trim, or substring expressions to maintain.

No split and trim expressions

The usual no-code method slices the body with string functions that break the first time a sender changes a line. Field mapping survives layout changes because it is not pinned to character positions.

Load the backlog too

A flow only fires on new mail. A parser reads the archive, so the two years of requests already sitting in the mailbox can go into the list with their columns filled.

How to set up email to SharePoint list automation

Four steps from raw email files to a clean CSV, Excel, or JSON file.

1

Connect the intake mailbox

Point MailParse at the Microsoft 365, Outlook, Gmail, or IMAP mailbox the requests arrive on. Nothing changes for the people sending mail, and your existing flow can keep running.

2

Name the fields your list has columns for

Open the list, note the columns you filter and group by, then name a parser field to match each one: requester, site, order number, amount, due date, priority.

3

Test one real message

Run an actual email through and check every value lands in the right field, including each row of any table in the body. Adjust the mapping until a sample of messages comes out clean.

4

Paste the CSV or wire the JSON

Export a CSV and paste it into the list in grid view for a one-off load, or send the parsed JSON to Power Automate and map each field to a SharePoint column for a live feed.

Teams that run a SharePoint list off inbound email

Teams that deal with email in volume and need it as structured data.

Facilities and maintenance requests

Requests arrive by email with a building, floor, asset, and urgency in the text. Parsed into columns, the list can be grouped by site and filtered by priority instead of read line by line.

Procurement and purchase requests

Purchase orders and vendor confirmations carry a PO number, quantities, and a table of line items. Each table row becomes its own list item so quantities can be totaled in a view.

Project intake and change requests

A project register only works when the requester, department, and requested date are columns. Parsing puts them there, so the PMO reports from the list rather than from the mailbox.

Compliance and audit logging

Regulated teams keep an evidence log in SharePoint. Parsing the notification emails into dated, attributed columns gives a list that can be reviewed and exported without manual entry.

Why parse before the list item is created

Columns beat one text blob

A value inside a multiple lines of text column cannot be filtered, grouped, or rolled up. The same value in its own column can. Parsing is what moves it across that line.

String expressions break quietly

A flow that finds a value with split and indexOf stops matching the day a sender reformats their template, and the list just starts filling with blanks or wrong values.

Tables survive as rows

HTML to text flattens a table into a run of words. A parser keeps each row separate, which is the difference between one useless item and one item per line of the order.

Character limits stop mattering

A SharePoint multi-line column tops out at 63,999 characters, and long threads with quoted history do reach it. Named fields store the eight values you need instead of the whole conversation.

History comes with you

Flows run forward only. Parsing the mailbox lets you load years of past messages into the same list, so reporting starts from a full record rather than from today.

Portable beyond SharePoint

The parsed output is plain CSV and JSON, so the same mapping feeds Excel, a CRM, or a warehouse if the process ever moves off Microsoft Lists.

Four ways to get email into a SharePoint list, compared

Microsoft gives you real options here, and for a simple log the free built-in flow is genuinely the right answer. Here is an honest comparison of all four, including where Power Automate wins outright. The step by step version is in how to send Outlook email data to a SharePoint list, and the same pattern in other Microsoft tools is covered on parse email body in Power Automate.

What matters Power Automate alone Flow plus split and trim AI Builder in the flow MailParse then paste or flow
Creates the list item Yes, with subject, sender, date, and body Yes, the same action with extra expressions Yes, with model output added Yes, by grid view paste or the create item action
Fills your own columns No, the body lands in one text column One or two values, if the layout never varies Often yes, on documents and set formats Yes, one parsed field per column
Handles an HTML table of line items No, it flattens into text Poorly, string surgery over flattened text Varies by model and document type Yes, each table row stays its own row
Survives a sender changing the template Not applicable, it copies everything No, expressions are pinned to the old layout Usually, within the trained format Yes, fields are matched by meaning, not position
Loads a backlog of old email No, new mail only No, new mail only No, new mail only Yes, parse the archive and paste it in
Who sets it up Anyone comfortable in Power Automate Someone fluent in flow expressions A maker with an AI Builder licence The person who owns the process
Cost Included with most Microsoft 365 plans Included, plus the time to maintain it A premium AI Builder credit add-on A MailParse plan, independent of Microsoft licensing
Best for A simple log where subject and body are enough One machine generated sender with a fixed layout Structured documents inside a Microsoft-only stack Several fields, varied senders, tables, or a backlog

Capabilities described as of July 2026; check current Microsoft documentation and licensing before you buy. MailParse reads the email itself: headers, body text, and HTML tables. Each attachment is recorded by filename, type, and size, and your Power Automate flow can still save the file itself to a SharePoint document library. Reading the values inside an attached PDF is a separate document extraction job.

Frequently asked questions

Can you email directly to a SharePoint list?

No. SharePoint Online does not support incoming email for lists. The setting existed in the on-premises server product, where a farm administrator enabled it, and it was never brought to SharePoint Online because there is no farm level configuration to hold it. The supported route is a Power Automate flow that watches a mailbox and creates an item for each message.

How do I get an email into a SharePoint list automatically?

Build an automated cloud flow with the "when a new email arrives" trigger and the SharePoint "create item" action, then map the trigger fields to your columns. That gets you subject, sender, received time, and the body. To fill your own columns, parse the message first and map each parsed field to its column in the same action.

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

The no-code method is an HTML to text action followed by split, indexOf, and substring expressions that cut the value out of the resulting string. It works when the sender is a machine and the layout never moves. It fails silently when a line is added or a label is reworded, because the expression still returns something, just the wrong thing.

Why does my email body come into SharePoint as HTML?

Because the Outlook trigger returns the HTML version of the message by default. Adding an HTML to text action before the create item step converts it, though the result usually carries a lot of blank lines from the original layout. Parsing the message into named fields avoids the issue entirely, since you store values rather than a body.

What is the character limit for a SharePoint list column?

A single line of text column holds 255 characters and a multiple lines of text column holds 63,999. Email bodies with quoted reply history do exceed that, and the item fails or truncates when they do. Storing eight named values instead of a whole conversation keeps items comfortably inside the limit.

Can Power Automate parse an email without premium connectors?

Yes, using standard actions and expressions. HTML to text plus split and trim will pull a value out of a consistent, plain layout with no premium licence. The trade-off is maintenance: every one of those expressions is tied to the exact wording and line order of the email it was written against.

How do I import a spreadsheet into an existing SharePoint list?

SharePoint can create a brand new list from an Excel file, but there is no import button for an existing one. To add rows to a list you already have, open it in grid view, click into the first empty row, and paste the block of cells from the spreadsheet. Match the column order and the paste fills straight down.

Can I parse email from a shared mailbox into SharePoint?

Yes, and shared mailboxes are the usual case for this: an address like requests@ or facilities@ that a whole team watches. Connect that mailbox to the parser the same way you would a personal one, and every message arriving in it becomes a parsed record ready for the list.

Will this work with Microsoft Lists as well as classic SharePoint lists?

Yes. Microsoft Lists is the modern front end over the same SharePoint list data, so anything that writes to a list through the SharePoint connector or the grid view works in both. The column types, the character limits, and the create item action are identical.

What happens to attachments on the email?

MailParse records each attachment by filename, type, and size, and reads the message body and its HTML tables. It does not open the file to read what is inside. If you also want the file stored, keep a Power Automate step that saves attachments to a SharePoint document library, and use a document extraction tool when you need the values inside a PDF.

Create SharePoint list items that arrive with their columns filled

Parse the intake mailbox once, name the fields your list has columns for, then paste a CSV in grid view or map the JSON onto your create item action.