I’d like to create a flow that contains reminder, day of and post appointment emails that are sent out around an appointment from my integrated appointment booking platform (zoho).
I send through an event (to the track API) that looks like this:
"$value":"bookingStartTime": "2021-02-17 15:45:00",
"bookingStartTime": "2021-02-17 15:45:00",
"bookingTimeZone": "Australia/Sydney GMT +11:00",
So the properties contain the booking start time.
I want to send a reminder email 14 days before, day of, 1 day after, 2 months after the booking.
How do I do this?
Some of you may come to the conclusion to use the bookingDate on the “customer_properties” instead, and then use the flow builder to to build around that, similar to putting a birthdate on a customer. Unfortunately, this won’t work when a customer makes 2 or more bookings which is entirely possible within this system.
What is the correct way to achieve this?
Best answer by carolineView original
You can actually send Klaviyo events that are timestamped with a future day/time. These events will appear in the UI as happening “just now” but if you create a flow triggered by this event, the flow will not be triggered until the specified timestamp on the event.
For example, you could send Klaviyo an event called “Two Week Reminder” that is timestamped to the day/time that you want to send out the reminder email. If you create a flow triggered by the “Two Week Reminder” event, it won’t be triggered until the day/time specified by the event’s timestamp.
I had seen that in the API documentation - thanks for clarifying that.
When I thought it through, I came up this issue regarding event cancellation.
How do we cancel that event if, say, in the two weeks the customer decides to cancel their booking. And in practice, we would have actually sent 4 events
14 days before, day of, 1 day after, 2 months
so we’ll need to cancel all four events. I couldn’t find anyway to cancel them, apart from sending through another 4 seperate events for eventTwoWeekReminderCancelled. Then on the flow you’d say filter for anyone who doesn’t have eventTwoWeekReminderCancelled, etc..
The problem with that is, how are you going to then deal with the case where they have two events booked. How will the flow decide which one of the bookings is cancelled?
It’s a challenge to manage.
That makes sense. In that case, I would recommend that you send the events to Klaviyo and trigger the flow immediately (when you want to send the notification email), keeping the logic to check if the reservation has been cancelled outside of Klaviyo. I realize that adds some complexity to the logic you have to implement outside of Klaviyo, but I think you’re right about the complexities of checking for multiple cancellations within a flow.
How do you actually cancel it though?
What API call can I use to cancel?
Unfortunately, you can’t delete a single instance of an event unless you delete the associated profile.
I was recommending that you instead implement logic outside of Klaviyo that checks to make sure that the reservation has not yet been cancelled right before the reminder event is sent to Klaviyo. As a result, you would keep the cancellation logic outside of Klaviyo, only sending the events via API to Klaviyo right before you want to send out the email (if the reservation has not been cancelled).
Just adding to the great answer Caroline already gave.
Indeed I would set up separate flows for each of the events that take place and also send different events to Klaviyo whenever something happens.
Whenever someone has entered a flow you can add a filter to the flow and have whichever event be the filter that ejects a person from the flow. This is similar to how the Browse & Cart Abandonment work.
So booked an appointment triggers the flow → person enters and filter is cancelled or changed appointment. Changed appointment could be a separate flow again that is similar.
Then whenever someone had the appointment send another event and trigger another flow around that.
That's how I'd probably do it.
Hope it helps