Email parsing for scheduling workflows

Email Parser Google Calendar Integration: Turn Booking and Appointment Emails into Google Calendar Events

Google Calendar imports events. MailParse turns the booking email into the columns it imports.

Appointment confirmations, reservation notices, showing requests, and interview invitations arrive as email, each vendor writing the date and time its own way. Google Calendar will take those events happily once they are structured, through a CSV import, the Calendar API, or a Zapier action. What no Calendar setting does is read a message body and decide which line is the start time and which is the address. MailParse pulls subject, start date, start time, end time, location, and description out of the body and hands you clean CSV and JSON.

Date and time read from the body
Matches Google Calendar CSV headers
CSV, Excel & JSON output
CSV import, Calendar API, Zapier or Make

Last updated August 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

MailParse does not create calendar events. It does the step before that: it reads a booking, appointment, or reservation email and returns the values as named fields, in the exact column shape Google Calendar accepts on import. Google Calendar imports ICS and CSV files, and its CSV format needs only two headers, Subject and Start Date, with Start Time, End Date, End Time, All Day Event, Description, Location, and Private available as optional columns. MailParse fills those columns from the message body, so you upload one file or hand the same fields to a Zapier Create Detailed Event action.

2 required
Subject and Start Date are all Google demands
MM/DD/YYYY
Dates normalized to the format import expects
CSV / JSON
Bulk import or one event per email
No code
Name the fields, skip the Apps Script

Google Calendar has a genuinely good bulk import. On a computer it accepts ICS and CSV files, and the CSV format is refreshingly small: only Subject and Start Date are required, with Start Time, End Date, End Time, All Day Event, Description, Location, and Private available as optional columns. The headers have to be written in English and spelled exactly as Google lists them, dates follow the US MM/DD/YYYY pattern, times look like 10:00 AM, and any value containing a comma needs quotation marks around it. Get a file into that shape and hundreds of events land on a calendar in one pass.

The gap sits one step earlier, and it is the whole reason this page exists. Events do not arrive as CSV rows. They arrive as email: a booking confirmation from a scheduling tool that has no calendar sync, a showing request from a real estate portal, a reservation notice from a supplier, an interview invitation from a job board, a shift roster a manager sends every Sunday. Each sender formats the message differently, and the date, time, and address are prose buried in the body. Nothing native to Google Calendar reads that body and decides that the digits after the word Arrive are the start time and that the line under the customer name is the location. The usual outcome is somebody copying details into a calendar entry by hand, which is slow, and which quietly drops the occasional appointment nobody notices until the customer is standing outside.

MailParse closes that half. Connect the Gmail, Outlook, Microsoft 365, or IMAP mailbox the notices land in, or forward one sample message to a parsing address, then name the fields you want using Google's own column names: Subject, Start Date, Start Time, End Date, End Time, Location, Description. MailParse reads them out of the full body and out of HTML confirmations with real tables, which most booking platforms send and which a plain text view flattens into an unreadable run of characters. You get a CSV shaped for the Calendar import screen, an Excel workbook, or JSON you can hand to the Calendar API or a Zapier Create Detailed Event step so each message becomes an event as it arrives. One honest caveat up front: if a sender already attaches a proper .ics invitation, Gmail recognizes it and offers to add the event for you, and you should use that instead of anything on this page. MailParse records the filename of any attachment for reference, but it does not read the data locked inside a PDF or spreadsheet file.

What the converter does

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

Dates and times read out of the body

A confirmation email is one long message to Google Calendar. MailParse reads the appointment date, the start and end time, the street address, and the customer name, and returns each as its own column, so the file you upload maps onto Calendar import headers instead of needing somebody to retype it.

Output matches Google's CSV headers

Google matches import columns as exact English strings, so Start Date works and start_date does not. Name your MailParse fields Subject, Start Date, Start Time, End Date, End Time, Location, and Description and the export is import ready with no renaming step in between.

Parses HTML confirmations and tables

Booking platforms send confirmations as HTML with tables, logos, and images, not plain text. MailParse parses those table rows, so a weekly roster listing several appointments comes back as clean columns, one row per event, ready for a single bulk import.

One setup covers many senders

A scheduling tool, a portal, and a supplier all describe the same appointment differently. Name the fields once and MailParse finds them across layouts, so you are not maintaining a separate rule for every sender that emails you an event.

Backlogs, not just new mail

Point MailParse at a whole label or folder of past confirmations and get one combined spreadsheet. Teams moving to a shared team calendar use this to recover months of appointments that only ever existed as email.

Accurate and private

Time zones written in words, unicode names, and accented street names come through intact, no field is silently dropped, and your email is never used to train AI. Files are deleted after processing.

How to get an appointment email into Google Calendar

Four steps from a booking confirmation sitting in an inbox to an event on the calendar.

1

Connect or forward

Connect the Gmail, Outlook, Microsoft 365, or IMAP mailbox the confirmations arrive in, or forward one sample message to a parsing address to test that layout first.

2

Name the Calendar columns

Use Google's own header names as your field names: Subject and Start Date are the two Google requires, then add Start Time, End Date, End Time, Location, and Description as your events need them.

3

Pick CSV or JSON

Take a CSV shaped for the Calendar import screen, or JSON if you would rather push one event at a time through the Calendar API or a Zapier Create Detailed Event action.

4

Import or automate

In Google Calendar open Settings, choose Import and export, pick the file and the destination calendar, then import. Save the parsing setup and every future message from that sender comes out the same way.

Who needs a parser in front of Google Calendar

US teams whose appointments arrive as email from tools that never sync to a calendar.

Field service and home service teams

Job requests and dispatch notices land as email from a portal or a customer form, and the crew calendar is where they have to end up. Parsing the address and the arrival window into a Calendar row means the truck is scheduled without a dispatcher retyping every job.

Recruiters scheduling interviews

Interview requests come from job boards and candidate replies in a dozen formats. Pull the candidate name, the proposed date, and the meeting link into columns and the whole week loads onto the hiring calendar in one import.

Real estate showings and open houses

Showing requests from portals and lockbox apps email the property address and the requested window. Parsed into Subject, Start Date, Start Time, and Location, an agent sees the day laid out instead of scrolling an inbox.

Operations teams loading a roster

A manager emails the shift schedule as an HTML table every week. One parse turns that table into one row per shift, and a single CSV import puts the whole roster on a shared calendar.

MailParse vs native Google Calendar handling

Reads the message body

Google Calendar imports events that are already structured. MailParse is what turns an unstructured confirmation email into those columns in the first place.

No .ics required

Gmail handles proper calendar invitations on its own. A parser is for the far more common message that is just text describing an appointment.

HTML tables, not flattened text

A roster or digest listing several appointments in a table comes back as one row per event instead of a paragraph somebody has to read line by line.

Works with no API project

The Calendar API needs a Google Cloud project and credentials. Parsing to a CSV needs neither, so a team can load a calendar today.

Ways to get email events into Google Calendar, compared

There are four honest routes from an appointment email to a calendar event, and the right one depends on what the sender actually attaches and how often it happens. Here is the side by side, with credit to each native path where it wins. To send the same fields as JSON, see the email parser API, and for spreadsheet output the email parser Google Sheets integration.

What matters MailParse Gmail .ics handling Manual entry Custom build on the Calendar API
What it does Parses the email into named fields, then exports CSV or JSON for Calendar Detects an attached calendar invitation and offers to add it A person reads the email and types the event into Calendar A developer writes against the Calendar API to insert events
Senders it covers Any sender that emails you an appointment as ordinary text or HTML Only senders that attach a valid .ics invitation Anything, at the cost of a person per appointment Anything, once you have written the parsing yourself too
Where the native route wins Does not remind, invite guests, or sync changes; it stops at clean data Best route by far when it exists: one click, nothing to maintain, updates sync No cost and no setup for two appointments a month Guest invitations, reminders, and updates a parser does not attempt
HTML tables and rosters Table rows become one row per event Not applicable, an invitation carries a single event Read and retyped by hand Possible, but you write and maintain the parsing logic
Setup and upkeep Name the fields once, no code, adjust when a sender changes layout Nothing to set up at all None, but the work repeats on every appointment Cloud project, OAuth credentials, and developer time to keep it working
Recurring events Exported as individual dated rows, same as any CSV import Repeat rules travel correctly inside the invitation Set the repeat rule by hand once Full control over recurrence rules

Google Calendar behavior described here reflects Google's published import documentation as of August 2026, including ICS and CSV support on desktop, Subject and Start Date as the only required CSV headers, English header names matched exactly, and the documented limitation that repeating events imported from a CSV arrive as a series of one time events rather than a recurring series. Products change, so verify against your own account before you build. Google, Google Calendar, and Google Sheets are trademarks of Google LLC and MailParse is not affiliated with Google. No pricing is implied here.

Frequently asked questions

Does Google Calendar have an email parser?

No. Google Calendar brings events in through an ICS or CSV import, the Calendar API, and Gmail's handling of attached invitations. None of those reads an arbitrary email body and decides which words are the start time, the end time, and the address. That extraction step happens outside Calendar, either by a person retyping the appointment or by a parser such as MailParse.

How do I import events to Google Calendar from a CSV?

Open Google Calendar on a computer, go to Settings, choose Import and export, select your file, pick the destination calendar, and import. Your CSV needs a Subject column and a Start Date column at minimum. Start Time, End Date, End Time, All Day Event, Description, Location, and Private are optional additions.

What columns does a Google Calendar CSV import need?

Only two are required: Subject, which becomes the event name, and Start Date, the first day of the event. The optional columns are Start Time, End Date, End Time, All Day Event, Description, Location, and Private. Headers must be written in English and spelled exactly as Google lists them, because the import matches those strings literally.

What date format does Google Calendar import use?

Dates follow the US month, day, year pattern that Google shows in its own example, such as 05/30/2020, and times are written in twelve hour form such as 10:00 AM or 1:00 PM. If any value contains a comma, like a street address, wrap that value in quotation marks so the column does not split.

How do I add emails to Google Calendar automatically?

If the sender attaches a calendar invitation, Gmail already offers to add it and you need nothing else. For plain confirmation emails, parse the message into fields and hand the JSON to a Zapier Create Detailed Event action or the Calendar API, so an event is created as each message arrives rather than in a weekly batch.

Can I bulk add events to Google Calendar?

Yes, and the CSV import is the intended route for it. Build one file with a row per event and Calendar creates them all in a single pass. This is the fastest way to load a roster, a season of showings, or a backlog of confirmations that were only ever sitting in an inbox.

Will recurring events import correctly from a CSV?

Not as a repeating series. Google documents that repeat events imported from a CSV file may land on the calendar as a series of separate one time events instead. If a true recurrence rule matters, create that event by hand or use an ICS file, and keep the CSV route for the one off appointments a parser is pulling out of email.

Can MailParse read data inside email attachments?

No. MailParse parses the email body and HTML tables, and it records the filename of any attachment for reference, but it does not read the data locked inside a PDF, Word, or spreadsheet file. When a confirmation carries the appointment details as an attached document, extract that file with a document tool first.

Does this work for Google Contacts too?

The same pattern applies. Google Contacts imports a CSV, so parsing sender details into name, email, phone, and company columns gives you a file to upload there instead. What changes between the two is only the column names each product expects, because the parsing step in front of them is identical.

Turn the booking email into a row Google Calendar imports

Forward one appointment confirmation and watch the date, start time, location, and description come back as clean columns, ready for the Calendar import screen, the API, or a Zapier Create Detailed Event action.