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.
Last updated July 2026
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 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.
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.
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.
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.
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.