If you're using external calendars (in Office 365 or Google calendar) that more than one person has access to outside of Zendesk, the then you may need to change things in Zendesk based on changes to the external event.
So say, for example, based on a ticket with a customer, you need to have a contractor perform a job for the customer. The contractor is not an agent in Zendesk so you use a Google calendar that you both have access to and on the Zendesk ticket, you create the event which syncs it all up. You can then set the ticket to an 'on-hold' state until the event is complete right? Well not necessarily. What if the contractor updates the event description saying he can only do half the work? Or what if they can't do it on that date, so they move the event forward a day? Would you, as the agent, want to be notified? Would you want the ticket to be automatically moved to an 'open' state? If the answer is yes, then here's a couple of links to jump to how this can be set up...
Before we get onto the workflows linked to above, let's talk about the mechanisms you have to play with. Firstly, the calendar app will automatically add tags to a ticket based on what gets changed on the external events (note that 2 way syncing needs to be switched on for this to work). Here's what they are:
calendar_external_event_changed: Added when the time, duration or date of the event is changed externally.
calendar_external_title_changed: Added when the title of the event is changed externally.
calendar_external_description_changed: Added when the description of the event is changed externally.
calendar_external_location_changed: Added when the location of the event is changed externally.
Secondly, if the description, title or location are changed on the external calendar. Those details will then be stored in the Zendesk ticket fields 'calendar event description', 'calendar event subject', 'calendar event where', respectively.
Setting the ticket to 'open' if any part of the event is updated.
To do this al you'll need to do is create a trigger that looks for the existence of any of the '...changed' tags listed above. The trigger might look something like this:
Notice that as part of the actions, the trigger has also been set to remove the tags it's checking for. This is to stop the trigger from 'looping' and means that it is free to fire the next time the external event is changed.
Sending an email notification to the agent if the description of the event was changed externally.
We can do this with a trigger too. Instead of looking for ANY of the tags, we're ONLY looking for the tag 'calendar_external_description_changed' like this:
Note that in this trigger, once again we're removing the tag we're checking for as part of the actions. Same as before, this is to stop looping from happening, but also note if you're using two triggers that look for the same tag, removing the tag in the first trigger will stop the second trigger from firing, so you'll need to set it so that only the second of the two triggers removes the tag being checked for. See this article for much more detail on how Zendesk triggers actually work.
Also, note that as part of the action we're sending an email that contains the details of what the new event description is. The way this is done is by referencing a Zendesk placeholder since the app is now storing the description in a Zendesk ticket field it can now be referenced like any other field. You can access the placeholders for all of the fields used by the calendar app like this:
Simply copy the placeholders you want to reference into the trigger.
Done! The agent assigned to the ticket will now receive an email the moment the external event has been changed.