Sync Outlook Calendar to Google Calendar using Microsoft Power Automate

December 2021 update: people who tried this sync commented about problems with this approach. Personally, this flow stopped working for me. I’ve come to the conclusion that the cloud platform of Power Automate is unstable and unreliable. I recommend that you try a different approach to synchronizing your calendars – like one of the paid options on the market.

Summary: getting Outlook events to show up in Google Calendar can be a challenge due to your workplace’s security settings. If you have access to Microsoft Power Automate (aka Flow), then you can use this .zip package to set up an integration.

This Flow is based on this Outlook to Google Calendar synch package by Alex Matulich. Thank you for laying the groundwork, Alex!

Why sync these calendars?

My personal calendar is in a Google account, and I access it with a Google app on my Android phone. My workplace calendar is in Office 365 Outlook on my work laptop.

I wanted the ability to see work events on my personal calendar/device without having to install the Outlook app on my phone. I did this because it’s a good idea to keep home & work accounts on separate devices. To keep work-time and personal-time fully apart.

Using Microsoft Flow to synch Outlook and Google Calendars

Microsoft Power Automate (aka Flow) is a service that lets you connect different applications and build connections between them. If you’ve heard of IFTTT or Zapier, Flow has the same concept.

Flow was a good option for this sync because it was free and available. The basic free version of Power Automate is already included in Office 365, and apparently allows 750 “runs” a month. This version is good enough for our purposes, although your company may have paid for a more advanced version.

Download your Power Automate .zip package below:

v2 of this flow added on Aug. 7, 2020. It no longer copies the event description to Google Calendar. Long event descriptions were cutting off the important Event ID/Master ID.

v3 of this flow was added on Nov. 17, 2020. It has 1 minute delays between repeated actions, to try and reduce rate limiting problems. Also, changed Outlook settings to look forward only 90 days, instead of 300.

Known issues: the Google Calendar steps error out because they hit rate-limiting limits (“rateLimitExceeded” message). I’ve also encountered lots of problems when making changes to recurring events. If you think of a fix, post it in the comments!

Screenshot of this Microsoft Power Automate Flow that copies Outlook calendar events into Google calendar.

This Flow will copy over new events from Outlook to Google Calendar. It also handles event updates and deletions, as well as supporting recurring events.

Installation Instructions

To get started, sign in at the Power Automate site and Import the .zip package by clicking the Import button at the top. Next, you will be prompted to connect your Office account and your Google account.

Remember, you will need to set up your own Office ID and your own Google Calendar ID within the Flow, in order to make it work with your accounts. Awesome commenter “justme” shows you how to find the Google Calendar ID in the comments below. They say:

If you go to the Settings and Sharing options of your google calendar you should see an ID, that’s a long list of random characters followed by @group.calendar.google.com. Copy that whole thing into the google calendar ID field in your flow.

You might run into an issue where your provided Google Calendar credentials are not automatically used in this Flow’s elements. The account might say the dummy value “your@googlecalendarusername.com”.

If this happens, then plase go through every instance where those credentials are used, and click on the dropdown to change the account to use your actual Google Account. There are currently 5 spots where that change has to be made. The highlighted parts of the Flow below show where to make the changes:

Credits for the MS Power Automate Flow

This flow is based on the one at Syncing Office 365 Outlook to Google calendar using Power Automate by Alex Matulich. I found it through his helpful question around special date formatting for Google Calendar in a Power Automate discussion thread.

(The date format ended up being “yyyy-MM-ddTHH:mm:ss-00:00” in your own time zone)

Thank you Alex!

My customized Flow is different from Alex’s in that it doesn’t require you to have access to an Excel Online / OneDrive account to keep track of event updates. In my organization, I was not able to make proper use of Excel Tables in the way that Alex’s Flow expected.

Other MS Flows that could be helpful:
Create new events on Google Calendar from Office 365
Copy new events in Office 365 to Google Calendar and send a notification
Update Google Calendar events previously created from Outlook.com

Trying to add Outlook Calendar to Google calendar

There are a few other documented ways to bring your Office 365 Outlook events into G Suite/Google Calendar.

One of them could work for you. It all depends on your employer’s security settings. For me, none of these methods worked. Only the Microsoft Flow method I describe above was effective.

Share calendar from Outlook 2016

You might be able to share your calendar through a “sharing invitation” email, found under the “share calendar” button.

At my organization, sharing a calendar with an external contact was blocked by the admins. A message like “Problem: Your organization’s policy does not allow you to share with this recipient.” comes up whenever you try to share your calendar with a Google account.

Publish to WebDAV server

One recommendation you’ll see for Outlook and Google calendar integration is to use the “Publish to WebDAV Server” option. This requires having an intermediary account on a server like iCal Exchange (accounts are free).

Here is a guide for setting up WebDAV publishing, from Ablebits.

Sync with Google Calendar from Outlook 365 Online

Another option for calendar sync is to go to Outlook 365 Online, then go to Settings -> Calendar -> Accounts.

There is a section there that says “To manage all your calendars in one place, connect your personal accounts with your work account. Details of personal events, like title or location, won’t be shown to other people.”.

Unfortunately, this turned out to be only a one-way sync that brings Google Calendar events into Outlook calendar (the opposite of what I wanted). As of now (July 2020) this also seems to be a feature that’s not available to everyone.

If you are looking to see your Google Calendar from within Outlook, you can try the above method or try this guide for setting up calendar sync on Outlook for desktop.


Thanks for reading and good luck with the setup!


If you loved this post you’ll superlove my monthly emails ✉️


Comments

38 responses to “Sync Outlook Calendar to Google Calendar using Microsoft Power Automate”

  1. Nick Summers

    Hi Jacob,

    Thanks for taking the time to build this out. Really appreciate the effort.

    I’m having an issue with when I Test the flow – I get an error returned ‘Bad Gateway’

    Any ideas on how to fix this one?

    Many thanks!

    Nick

  2. kissamies

    I am getting the same bad gateway error as the previous one

  3. kissamies

    I got this working by changing all the calendar id’s to correct one.

  4. justme

    Thanks so much for sharing.

    As mentioned above, make sure you edit the flow to include your google calendar id. If you go to the Settings and Sharing options of your google calendar you should see an ID, that’s a long list of random characters followed by @group.calendar.google.com. Copy that whole thing into the google calendar ID field in your flow.

    I’ve been having the problem of duplicated events in my google calendar when I update an event in outlook (new events are fine – I just get one entry created in google). Anyone else having this issue?

  5. EmailCanuck

    kissamies, (or someone), can you explain? I have the same error, and I don’t know what the problem is – can’t find the calendar id’s so I don’t know how to change them! Thanks

  6. Thanks a lot for this, worked flawlessly!

    I had to go through every step of the flow and change the calendar to use the correct calendars both on the Outlook and Google Calendar side, so that might be what is confusing some of the other people here.

  7. Alex

    Hi there, on trying to import the zip flie (Solutions/ Import) I get the following error message. Any suggestions on what I’m doing wrong? Thanks!

    The solution file is invalid. The compressed file must contain the following files at its root: solution.xml, customizations.xml, and [Content_Types].xml. Customization files exported from previous versions of Microsoft Dynamics 365 are not supported.

  8. Lauren

    Hey there,
    This powerflow worked for months and was AMAZING!!! But recently quit working – I was having so many issues with it I just redownloaded the zip file and started over, but no matter what I do, there is a 502 Bad Gateway Error.

    Error Details
    Start time
    Apr 9, 06:41 PM (5 minutes ago5 min ago)
    Duration
    08 ms
    Error
    Action ‘When_an_event_is_added,_updated_or_deleted_(V3)’ failed
    Error Details

  9. admin

    Thanks for posting about this Lauren. I noticed that the flow stopped working for me a while back, too.
    Here are the steps I used to fix this:

    1. Edit the flow
    2. Open the first Trigger element, “When an event is added, updated or deleted (V3)”
    3. Change the Calendar id to another calendar name you have, or enter some custom value.
    4. Save the flow
    5. Edit the flow again, go through all the previous steps, except choose your actual Calendar again under Calendar id.
    6. Save + test by adding a new event.

    I also noticed some issues when setting up the downloadable flow .zip file from scratch. The Google Calendar credentials are not automatically set to use the account you provide during the installation. They stay as the dummy value “your@googlecalendarusername.com”. You have to go through every instance where those credentials are used, and click on the dropdown to change the account to use your actual Google Account. There are currently 5 spots where that change has to be made. (see screenshot I added to the post above).

  10. Ben L

    Thanks very much for this; the flow didn’t work for me when initially imported but started working after I fiddled with it for a while (had to add and remove source and target calendar IDs). The flow here was a great starting point, thanks!

    I also found that recurrences / series aren’t supported by Microsoft’s Google Calendar operation, so you only get the first of the series copied over.

  11. Michael J Barnes

    Thank you so much. This is great. It’s PARTIALLY working for me.
    I am having events successfully created in my Google calendar when I create an event in the Office 365 calendar, but it fails when I update or delete an event.

    I did go through the steps of re-choosing or entering the Google calendar ID into every place in the Flow to get it working.

  12. Michael J Barnes

    Nevermind, I got it working!!!
    I had missed a place to include the Google Calendar ID.

    Now, I may have to try to figure out if I can get it to sync both ways.

  13. Stoffi

    Hi there,

    Amazing script.

    But there is one problem: updating time works, but if i rename an event in O365 (subject) it won’t be updated in my gmail calendar.

    Stefan

  14. Darrell

    Any ideas on why my flow runs twice? I followed the instructions above and it works great but within 2 minutes of the flow running and adding the event in G calendar, it runs again so i end up with 2 entries for the same event.

  15. Manuel

    @Stefan Yes , go to Case updated -> Apply to each 2 -> Update an event 2:
    Subject and location and body are missing

    @Darrel Same here, strange… but on the bright side, update and delete work because of the apply to each statement 😀

  16. William

    Thank you. Unfortunately creation of recurring events does not work. Anybody has any idea?

  17. Nagui Bihelek

    Echoing last comment. Any workaround or suggestions for recurring events?

  18. admin

    I looked into fixing up the issues this automation has with recurring events, and I couldn’t find a solution. It looks like MS Power Automate / MS Flow is a very unreliable product – calendar alteration events don’t fire consistently. Part of the challenge is the debugging/troubleshooting interface. With these calendar events, you’ll sometimes see hundreds of events in a day and it is impossible to figure out which event is for just the recurring event that you care about…

    Ultimately, if you want a reliable Outlook -> G-Calendar sync, you’ll have to purchase one of the paid solutions in the market.

  19. Ben L

    The ‘When an event is added, updated or deleted V3’ flow has broken (Outlook is returning all events as “deleted” regardless of their true ActionType, e.g. https://powerusers.microsoft.com/t5/General-Power-Automate/When-an-event-is-added-updated-or-deleted-V3-has-suddenly/m-p/961874#M72972); as Jacob noted it’s pretty clear this mechanism isn’t reliable / functional.

  20. Dani

    🙁 I was so excited when I saw this and then I read the latest comments. It used to work so perfectly even with recurring events. If anyone gets this to work – please share. At this point, i’m also interested in the paid solutions that were mentioned in the comments. Now that i work from home I find I really need my Alexa to warn me I have a meeting coming up.

  21. Andrew M.

    With only a short duration worth of testing under my belt, I seem to have everything functioning as intended, EXCEPT for the ‘update’ function (as justme) described.

    When I update an event in Outlook, a new/separate event is created in Google Calendar – the original appointment remains. For example, if an appointment was set to 9:00AM and subsequently changed to 10:00AM, Google Calendar would then display two events; one at 9:00AM and another at 10:00AM. The original instance is not removed/updated. It’s as if it’s simply creating a brand new event.

    I’ve tried manipulating the flow to incorporate a deletion operation in this step to remove the original meeting instance, but have been unsuccessful to this point.

    If anyone has found a solution to this issue, please advise!

  22. A H

    Verified this works Nov 11, 2021 (on simple Bookings Calendar > Google) on all add, update and delete! Nicely done! Been searching for a working solution that was simple.. and this was it!

  23. Thank you very much, it works fine

  24. Ann

    Hi!

    I’m totally new to power automate and tried to make it work for hours. I got the “added”-function working but I’m struggling with the “deleted”-function (for now I’m not even trying to make the “updated”-function to work). The “deleted”-function seemed to get stuck in a loop of some kind since it ran for tens of minutes until it shut itself down. Well, then I fiddled around a bit and what my power automate flow eventually managed to do: it deleted all my events from my google calendar (I’m crying and laughing at the same time).

    Power automate may have won this round but I’m looking for a comeback! (I’m also pretty sure I have one silly little mistake causing this hassle). Maybe I’m trying to use a wrong action or an event ID?

    My flow in the “deleted”-function:
    1. List the events on a calendar [I’ve linked my google account and for the calendar ID I’ve chosen from the drop-down menu my google sub-calendar I use for work events]
    2. Apply to each [select an output from previous steps = Event List Items]
    (inside “apply to each”-action)
    2.1. Delete an event [Calendar ID = same as above; Event ID = Event List Event Event ID]

    I’d appreciate any help to mitigate further damage to my calendars – thank you in advance!

  25. Travis Buckingham

    Mine works however when I add an event on my Outlook Calendar it adds the same event twice on my google calendar….? So I end up with one event in Outlook and 2X Events in Google Calendar.

    Why does it add the same event twice in Google…? How do I fix this?

  26. Jonathan Alumbaugh

    This is super. Really nice job, and thank you for sharing, was about to spend the rest of the day setting this up myself. It would’ve taken me a looong time to come up with this nice of a solution.

    Took me long enough to figure out how to clean up attendees so they’d add properly (needed to be comma separated rather than semicolon), and I added a step to convert HTML to text for the body, but using your flow as the foundation and it’s great.

  27. I tried a different approach and I’m currently using Power Automate to generate an ICAL file from my calendar. Interested? Take a look at my blog post: https://dotsoltecti.github.io/blog/Outlook-Gcal-sync/

  28. Naung Ye’ Oo

    Thanks for the zip file.
    You saved my week. My boss asked me to do it but I didn’t know how to get meeting id for google calendar.

    Keep up!

  29. Raymond

    Dear Jacob,

    The flow looks perfect for me but unfortunately i can not import it further.
    So i can import the zip-file but after that i can not click import. its stays grey

    What am I doing wrong

    Kind regards,
    Raymond

  30. Fred

    Maaaaaaaaaaaaaaaaaan you made my day. God bless you.

    And *&[]”!# Microsoft for making this so pain in th a** to do.

  31. HJ

    THANK YOU!!!!!!!!!!!!!!!!! Made mods to fit my needs (added location, body, subject) otherwise worked swimmingly well. Shoot me an email; will kick over some Venmo cash for a coffee. 🙂

  32. Fred

    Jus like another person reported, I’ve been having the problem of duplicated events in my google calendar when I update an event in outlook (new events and delted are fine – I just get one entry created in google).

    Anyone else having this issue?

  33. Joe

    Everything works except for the UPDATE case, where it just creates a new Google Calendar entry and doesn’t remove the old entry.

  34. F

    Thanks for sharing that’s solved a big problem for me. Works perfectly.

  35. mlaverdiere

    Hi,

    Thanks for this flow. Works well with a few tweaks.

    To avoid some errors with repetitive events or quick deletions/update, I have activated the concurrency control on the trigger (“When an event is added, updated or deleted (V3)) and set the degree of parallelism to 1.

    See here for more details: https://manueltgomes.com/microsoft/powerautomate/what-is-concurrency-control/

    Thanks again.

  36. Susie

    Jacob,
    You saved my life. Thank you so much for this outstanding Power Automate. It is working for me. My question though, what’s the purpose of the delay at the end of each? I couldn’t see how many minutes you put in there, so just put 5. But, I’m trying to figure out if I can just do away with it altogether. Not sure of the purpose.

  37. Susie

    This works for copying new events to the google calendar. added works.
    Updates don’t work, as it just creates a NEW event in the new spot, with new title.
    Deletes don’t work. When I delete the event off the Outlook calendar, it created new events over and over. As it saw the Delete as an update, so re-created, which triggered the flow again, to update, which created another one. I had to cancel the flow and turn it off to get it to stop.
    Any ideas?

  38. Andy Bushman

    I cannot thank you enough for this. I was close but not close enough in creating this flow. No more missed meetings for me due to our exchange only synching twice a day.