Timing is the one variable in loyalty that almost nobody talks about. Brands spend months building the right offer, the right segment, the right message and then they send it on a Tuesday at 11am because that is when the campaign was set up and nobody changed the default.
The result is predictable. Open rates that look acceptable, redemption rates that are quietly disappointing and a vague sense that the program is working less well than it should, without a clear reason why.
The reason is usually timing.
For example: A coffee chain sends a “Buy One, Get One Free” offer at 8pm, long after most customers have had their daily coffee. The exact same offer sent at 7:30am, just before the morning commute, is far more likely to drive visits.
The offer isn’t the problem. When it arrives is.
Most loyalty campaigns are built around the offer itself: a double-points weekend, a birthday reward, a lapsed customer win-back. The logic behind each one is sound, the mechanics are thought through but when the campaign fires at the wrong moment, none of that preparation matters. A win-back message that lands during a period when a customer genuinely can’t engage doesn’t fail because the discount was wrong but it fails because the moment was wrong.
This is harder to see than it sounds. When campaigns underperform, the instinct is to diagnose the content, the creative, the segmentation. Timing sits in the background, invisible and largely unquestioned, even though it is doing a significant amount of damage. The moments that actually drive behavior in loyalty aren’t just about time of day, they’re about context. Is the customer in a routine that your campaign naturally intersects? Is the message reaching them during a period when they’re likely to be making purchase decisions or during a period when they’ve mentally moved on? Is there friction between when your campaign fires and when your customer is actually available to respond? These questions matter because loyalty programs live and die on the quality of the response, not just the volume of sends.
The scheduling gap most merchants don’t realize they have
Here is something that doesn’t get discussed enough. A significant portion of loyalty campaigns that appear to be “on schedule” are not actually firing when merchants think they are. The scheduled time in a campaign interface and the actual execution time in the backend can diverge. This happens because most campaign tools are designed with the user interface as the primary surface and the underlying scheduling engine as an afterthought. The result is campaigns that fire at unexpected times, campaigns that duplicate during system anomalies and campaigns that silently skip dates because no one defined an end point.
A campaign without a hard end date is a liability as it continues until someone remembers to turn it off. Most merchants don’t remember, especially as teams change, priorities shift and the program grows more complex. The campaign that was supposed to run for a promotional period in Q1 quietly carries on into Q3, delivering rewards at a time when the context that made them meaningful no longer exists. These are not rare edge cases, they are standard outcomes of campaign infrastructure that was not designed to handle the complexity of real business operations.
What precise scheduling actually looks like in practice
The difference between a campaign that fires at the right time and one that fires at a roughly appropriate time is larger than it seems. Consider a restaurant group running a Friday evening campaign to drive dinner reservations. A campaign scheduled for “Fridays” in a simple system might fire at any point on Friday, depending on system load and execution order. A campaign configured with a precise execution time, say 3pm, reaches customers during the decision window when they are actually thinking about dinner plans. It is the same offer and the same segment but completely different behavioral moment.
This is something brands like Starbucks have long understood. Rather than sending promotions randomly throughout the day, they often align offers with customer routines, such as breakfast, the afternoon slump or evening pick-me-ups, ensuring rewards arrive when people are most likely to be considering a purchase. It’s a simple shift that makes the message feel timely instead of interruptive.
The same logic applies across categories. Retail campaigns tied to payday cycles need to fire at the right point in the month, not just somewhere in the vicinity. Win-back campaigns for customers who lapsed during a holiday closure need to be suppressed during the same period the following year, not recycled through automatically. A weekly treat reward for high-frequency customers needs to land consistently, not drift across days as scheduling conflicts accumulate. Precise timing requires a scheduling engine that is built to handle complexity, not one that approximates it.
What we built and why it matters
Como’s campaign scheduling interface has been rebuilt from the ground up and the change is substantial.
The core of the update is the Advanced Recurring Action Scheduler. Merchants can now configure exactly how repetition works: specific days and times for daily campaigns, multi-week intervals with custom day selections for weekly ones and for monthly campaigns, a choice between specific calendar dates, a static day-of-month threshold or a relative rule like the first Tuesday or last Friday of each month. Each option exists because billing cycles, staff schedules, and customer behavioral rhythms don’t all follow the same pattern.
We also added global blackout date selection. Flag a date as excluded and the campaign skips it automatically, whether it’s a holiday, a closure, or a maintenance window. No more turning campaigns off manually and hoping you remember to turn them back on.
Start and end dates are now mandatory. A campaign with no end date is a liability that runs until someone notices. The new validation blocks setup if either date is missing or if the start falls after the end.
Finally, a real-time schedule summary updates as you configure: “Runs every 2 weeks on Tuesday and Friday at 10:00 AM.” And before activation, a confirmation modal forces a full review of the recurrence pattern, date boundaries and blackout windows. Misconfiguration should be visible before it causes problems, not after.
Timing is a stretegic asset
The brands that get the most out of loyalty programs are the ones that treat the when as seriously as they treat the what. A birthday reward is meaningful on the birthday. A lapsed customer message is meaningful shortly after the lapse, not weeks later. A high-frequency customer reward needs to arrive consistently, because consistency is part of what makes it feel like a genuine benefit rather than a random gesture.
Timing is a trust signal. When a campaign arrives at a moment that makes sense to the customer, it confirms that the brand actually understands them. When it arrives at a moment that feels arbitrary or misaligned, it creates a subtle sense of disconnect that erodes the relationship over time without ever announcing itself clearly as the cause.
Getting this right requires infrastructure that makes precision possible and misconfiguration visible. That is what the new scheduler is built to do. Not to replace the judgment that goes into building a good campaign, but to ensure that the work behind it doesn’t get undermined by a scheduling gap that nobody noticed was there.


