How to Add Appointment Emails to Google Calendar Automatically

Last updated August 2026

Try it now: extract email data to Excel, CSV, or JSON

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.

The short answer

If the sender attaches a real .ics invitation, Gmail already detects it and offers to add the event, so use that and stop here. For ordinary confirmation emails that just describe an appointment in text, Google Calendar has no way to read the body. You extract the values first, then load them: a CSV import for a batch, or a Zapier Create Detailed Event action for one event per message as mail arrives. Google Calendar's CSV format requires only two columns, Subject and Start Date.

Most appointments do not arrive as calendar invitations. They arrive as email that a human is expected to read: a booking confirmation from a scheduling tool that never syncs anywhere, a showing request from a property portal, a supplier telling you the delivery window is Thursday between 8 and 11, a shift roster your manager sends as an HTML table every Sunday. The information is all there. It is just written as prose, and Google Calendar cannot do anything with prose.

That leaves most teams doing the obvious thing, which is retyping. It works until the volume climbs, and then it stops working in a specific and expensive way: the appointment that gets missed is never the one you noticed, it is the one that arrived while you were on a call. This article covers the routes that actually exist, when each is right, and the exact file shape Google expects.

Can Google Calendar read emails?

No. Google Calendar has no feature that reads an email body and creates an event from it. Gmail does something narrower and often confused with it: when a message carries a valid .ics attachment or structured markup, Gmail recognizes the event and offers to add it. That covers airlines, hotels, and most large booking platforms. It does nothing for the small vendor whose confirmation is a paragraph of text.

So the question is not how to make Calendar read email. It is how to turn the email into something Calendar already accepts. Calendar accepts exactly three things: an ICS file, a CSV file, and API calls.

What columns does a Google Calendar CSV import need?

Only two are required. Subject becomes the event name, and Start Date is the first day of the event. Everything else is optional, which makes this far easier than most import formats. The headers have to be written in English and spelled exactly as Google lists them, because the import matches those strings literally, so Start Date works and start_date does not.

ColumnRequiredWhat it holdsWhere it comes from in a booking email
SubjectYesThe event nameUsually the customer or job name, sometimes the subject line itself
Start DateYesFirst day of the eventThe appointment date, written any number of ways
Start TimeNoWhen it beginsThe arrival time or window start
End DateNoLast daySame as start for a normal appointment
End TimeNoWhen it endsWindow end, or start plus the stated duration
All Day EventNoTrue or FalseTrue when the email gives a date but no time
DescriptionNoNotesJob notes, order number, booking reference
LocationNoWhereStreet address or meeting link
PrivateNoTrue or FalseSet by you, not by the sender

Two formatting details cause most failed imports. Dates use the US month, day, year pattern that Google shows in its own example, such as 05/30/2020, and times are twelve hour with the meridiem, such as 10:00 AM. And if a value contains a comma, which street addresses almost always do, wrap that value in quotation marks or the column will split and every field after it will shift one place to the left.

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

On a computer, open Google Calendar, go to Settings, choose Import and export, select your file, pick which calendar the events should land on, and import. Google reports how many events it created. This is the right route whenever you have more than a handful of appointments to load at once, because it is a single pass regardless of whether the file holds ten rows or a thousand.

One documented limitation is worth knowing before you build around it. Repeating events imported from a CSV may not stay repeating. Google notes that they can land on the calendar as a series of separate one time events instead of a proper recurring series. If a real recurrence rule matters, create that event by hand or use an ICS file, and keep the CSV route for the one off appointments you are pulling out of email.

How do I get the date and time out of the email in the first place?

This is the step nothing native handles, and it is where the work actually is. You need something that reads the message body and returns named values. There are three realistic options.

Write an Apps Script. Free, and fine when exactly one sender matters and its layout never changes. In practice you are writing string matching against a specific email, and it breaks the first time that vendor redesigns their template. Most people who go this way end up maintaining a script per sender.

Use a parser. Connect the mailbox the confirmations land in, or forward one sample message, then name the fields you want. Give them Google's own column names and the export is import ready with no renaming step. That is the whole trick behind the email parser Google Calendar integration: MailParse never touches your calendar, it just produces the file Calendar already knows how to read. It also parses HTML tables, so a roster listing twelve shifts comes back as twelve rows rather than one paragraph.

Pay somebody to retype it. Genuinely the correct answer below roughly two appointments a week. Automation has a setup cost, and it should not be paid for a problem that takes four minutes a month.

How do I add emails to Google Calendar automatically, as they arrive?

A CSV import is a batch operation, so it suits backlogs and weekly rosters. For appointments that need to appear the moment the email lands, skip the file and pass the parsed fields straight into an automation platform. Zapier's Google Calendar app offers a Create Detailed Event action that takes each field individually, which is the one to use when you already have clean values. It also offers Quick Add Event, which takes a line of text and lets Google guess, and Find or Create Events for avoiding duplicates.

The flow is short: mail arrives, the parser returns JSON with your named fields, the Zapier step maps those fields onto the event and creates it. If you would rather not run an automation subscription, the same JSON can go to the Calendar API directly, though that means a Google Cloud project and OAuth credentials. The email parser API page covers the payload shape either way.

Which teams get the most out of this?

Field service is the clearest case. Job requests land as email from a portal or a customer form, and the crew calendar is where they have to end up, with the address in the Location column so a driver can tap it. Real estate agents have the same shape of problem with showing requests, where the property address and the requested window are the only two things that matter.

Recruiting is quietly the heaviest user. Interview requests arrive from job boards, candidate replies, and hiring managers, all in different formats, and every one of them has to become a calendar event with the right people and the right meeting link. Teams that have already automated the screening stage with an agent that runs first round interviews tend to notice scheduling as the next bottleneck, because it is the one step still done by hand. Parsing the request into Subject, Start Date, Start Time, and Location makes it a mapping problem instead of a typing problem.

What if the appointment details are in an attachment?

Then this route does not help directly, and it is worth being clear about that. 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 or spreadsheet file. If your vendor sends the schedule as a PDF, extract that document first with a document tool, then treat the result as your source. Same outcome, one more step.

A quick decision guide

  • Sender attaches a .ics file: let Gmail add it. Nothing else to do.
  • A few appointments a month, plain text: type them in. Automation is not worth it yet.
  • A backlog, or a weekly roster: parse to CSV, import once.
  • Steady flow that must appear immediately: parse to JSON, create the event through Zapier or the API.
  • Details live in a PDF: extract the document first, then pick one of the above.

Where to go next

The email parser Google Calendar integration page walks through the full setup, from connecting the mailbox to naming fields to choosing between a CSV import and an automated event per message. If the same appointments also need to sit in a spreadsheet your team can filter, the email parser Google Sheets integration covers that output instead, and extracting data from Gmail goes deeper on connecting the mailbox itself. When the confirmation arrives as an HTML table with several bookings in it, extracting a table from an email is the relevant walkthrough. Still comparing tools? The best email parser guide rates what is on the market and says where each competitor wins.