The use case
Your website lets customers sign up for classes with specific instructors. You want to make sure no one forgets — so you send them two reminders:- 24 hours before the class — enough lead time to rearrange the day.
- 15 minutes before the class starts — a final ping with the join link or address.
How the data is modeled
Before you build the flow, make sure your data is structured like this:- Classes and lectures are products. Each class (or session, or lecture) is added to Maestra as a product in your catalog.
- Registrations are orders. When a customer signs up for a class, that registration is sent to Maestra as an order. The order contains one line item per class the customer signed up for.
- Start time lives on the order item. The exact start date and time of each class is stored as a custom field on the order line item — not on the order header. This lets a single order contain several classes that start at different times.
If the class start time is stored as a custom field on the order itself instead of on the order item, you can build the same flow using a different trigger event — “New order,” “Order data changed,” or “Order status changed” — and reference the order-level field in the wait blocks.
Before you build the flow
Set up the following first:- Create an automated campaign in the channel you want to use for the reminders: email, SMS, mobile push, web push, or messenger. You’ll select this campaign inside the send block later.
- Use
OrderItemas the product parameter in the campaign template. Because the flow is triggered per order line item, the reminder template should reference the specific item (the class the customer registered for) — not the full order.
Build the flow
The flow has nine steps total: a trigger, two waits, four checks, and two sends.1. Trigger: Product in order delivered
Start the flow with the event Product in order delivered. A few things to know about this trigger:- It fires only when the delivery status of an order line item changes to “delivered.” If a registration is created with that status from the start, it still fires.
- It fires per line item, not per order. If a customer signs up for three classes in one order, the flow runs three separate times — once per class.
- It re-fires on the same line item if its data changes after delivery.
- It also works on backdated orders, as long as the timing still makes sense and no later changes have happened.
2. Wait: 1 day before class start
Add a Wait block configured as a dynamic delay that points to the custom “class start time” field on the order line item, minus 24 hours. Because each line item carries its own start time, the wait is calculated individually for each run of the flow. A customer registered for a Monday 9:00 AM class will receive their first reminder Sunday at 9:00 AM; someone registered for a Wednesday 6:00 PM class gets theirs Tuesday at 6:00 PM.3. Check: Class has not been canceled
Add a filter that confirms the class is still on. The exact field depends on how you model cancellations — typically a status field on the order item or product (for example, “class status is not equal to canceled”). If the class has been canceled, the flow exits here and no reminder is sent.4. Check: Customer is subscribed and has a valid contact
Add a filter that confirms the customer:- Has an active subscription to the channel you’re sending in (email, SMS, push, etc.).
- Has a valid contact in that channel (a deliverable email address, a confirmed phone number, a registered push token).
If your reminder is a transactional message tied to a paid service the customer already bought, you can skip the subscription check — transactional sends don’t depend on marketing consent. You may still want to verify the contact is valid so the message has somewhere to land.
5. Send the first reminder
Add a Send block and select the automated campaign you created earlier. This sends the day-before reminder. BecauseOrderItem is the product parameter, the message can reference the specific class — its name, instructor, time, and location.
6. Wait: 15 minutes before class start
Add a second Wait block, also pointing to the class start time on the order item, but this time minus 15 minutes.7. Check: Class has not been canceled (repeat)
Repeat the cancellation check. A class that was on track yesterday could have been canceled in the meantime — don’t send a “see you in 15 minutes” message for a class that’s no longer happening.8. Check: Customer is subscribed and has a valid contact (repeat)
Repeat the subscription and contact check for the same reason. Subscriptions can change between the two sends.9. Send the final reminder
Add the second Send block. This is the “starts in 15 minutes” message — typically the most useful place to include the join link, room number, address, or any last-minute instructions.The full flow at a glance
Variations
- Different channels for the two reminders. It’s common to send the 24-hour reminder by email (more room for context, agenda, prep materials) and the 15-minute reminder by SMS or push (faster to surface on the lock screen). Just pick different campaigns in each send block.
- More than two reminders. Add additional Wait + Check + Send sequences for, say, a one-week-ahead reminder or a one-hour-ahead reminder. The pattern is the same.
- Order-level start time. If the class time lives on the order rather than the order item, swap the trigger to New order, Order data changed, or Order status changed, and reference the order-level field in the waits. Everything else stays the same.
- Skip subscription checks for transactional reminders. For paid classes where the reminder is part of the service the customer bought, the subscription check is unnecessary.