“I’ve got multiple calendars to synchronise, can I somehow forward every event invitation to all calendars, maybe with a Power Automate flow?”
If you work for multiple companies, it’s quite common to have also multiple mailboxes. And with multiple mailboxes come also multiple calendars that various colleagues will access. Which can be a problem when looking for an available meeting time… How do you make sure that the calendars are synchronised? That users won’t book a time slot that’s already occupied in the second calendar? That each event invitation will appear instantly also in the other calendars?
Forward the invitation with a flow
There’s already an article on forwarding your events to other users, but that works only for events you created. If you’re not the initiator you can’t update it, you can’t extend the invitation directly. You must forward the event as you normally do manually.
Since you can do it, there’s a high chance Power Automate can do it for you as well, even though there’s no dedicated action to “Forward an event”. As many times before, the trick is in using an HTTP request, this time to the Graph API.
Add the Office 365 Outlook action “Send an HTTP request” to your flow and configure it with the HTTP request below.
URI:
https://graph.microsoft.com/v1.0/me/events/<eventId>/forward
Method:
POST
Body:
{
"ToRecipients": [
{
"emailAddress": {
"address": "<emailAddressToForward>"
}
}
]
}
If you need to forward it to multiple email addresses add multiple objects in the “ToRecipients” array, e.g.
{
"ToRecipients": [
{
"emailAddress": {
"address": "<emailAddressToForward>"
}
},
{
"emailAddress": {
"address": "<emailAddressToForward2>"
}
}
]
}

That’s it, you just forwarded the event to as many other calendars as needed.
Summary
Since there’s no dedicated action to forward an event in Power Automate, you must resend the invitation via Graph API. All you need is the event id (from the trigger) and the email addresses for forwarding. A flow with two actions that’ll keep all your calendars up to date, at least until somebody starts rescheduling these events…
Hi
This is very cool. It works as long I don’t delete items in my own “Source” Calendar. The deleted object is no longer accessible by the graph and therefore the request fails. That’s something to fetch. Somehow 🙂
Hello Stefan,
that’s right, if the event doesn’t exist in the calendar it can’t be forwarded. 🙂
How with this flow can prevent loop when you schedule an event, because when you are invited to an event all is well
Hello Volodymyr,
the only reliable way to prevent loops is to always use only one-way syncs, otherwise you’ll get crazy while trying to avoid them…
Can you also include the location here? Ex. Want to include a zoom link – is that possible?
Hello Oscar,
it’ll forward the whole event, with all the information inside. If you create an event an it’ll contain Zoom link then users will receive it as well.
Is it possible to include an IF condition to check if the event invitation has an attachment?
Because I don’t wan’t the event to be forwarded if it has an attachment (client documents/assets must not be forwarded anywhere)