Are your open rates stuck despite polished content and tight segments? Send time is often the blind spot. In Salesforce Marketing Cloud Engagement, Einstein Send Time Optimization (STO) uses machine learning to calculate, contact by contact, the hour most likely to drive engagement. Configured properly, STO can lift open rates by several points without changing a single word of copy. But STO is neither magic nor universal — its impact depends on history depth, send-window settings, and the data quality inside your Marketing Cloud tenant. Here is how to activate it, configure it, and measure it under real production conditions.
How Einstein STO actually works
STO looks at the last 90 days of engagement for each contact — opens, clicks, time-of-day interaction patterns, day of week, send frequency — and produces an engagement-likelihood score for each of the 168 hours in a week. At send time, Einstein consults that score and picks the optimal hour inside the window you defined, between 2 and 168 hours.
Under the hood, Einstein weights roughly 20 behavioral signals per contact. Subscribers with enough history get a fully personalized model. New contacts or those with thin engagement fall back to a generalized model, calibrated on the average behavior of your base. That dual mechanism prevents fresh subscribers from being sent at strange hours, but it also explains why STO performs best on mature audiences.
When to use STO — and when to skip it
STO makes sense whenever you do not have a hard time constraint on the send. Typical fits include:
STO is the wrong tool for:
Activating STO in your tenant
Activation happens from Einstein Apps. Sign in to your tenant as a Marketing Cloud Administrator, open the Einstein menu, and select Einstein Send Time Optimization. Click Configure and accept the terms. The initial learning phase takes up to 72 hours while Einstein builds the baseline model from your last 90 days of sends.
Check the prerequisites before flipping the switch:
Configuring the STO activity in Journey Builder
Once STO is active, the purple Einstein STO activity appears in the Journey Builder palette. The workflow:
Window selection matters. A short window of 2 to 12 hours keeps the message fresh but gives Einstein less room to maneuver. A 24-hour window is the sweet spot for most newsletters. Beyond 48 hours, you risk losing alignment between the campaign timing and the moment the content stays relevant.
Filter for STO-eligible contacts with a Query Activity
To avoid feeding STO contacts with no recent history, add a Query Activity upstream that filters your data extension on recent engagement:
SELECT
s.SubscriberKey,
s.EmailAddress,
s.FirstName,
s.LastName
FROM [DE_AudienceMaster] s
INNER JOIN _Open o
ON o.SubscriberKey = s.SubscriberKey
WHERE o.EventDate > DATEADD(day, -90, GETDATE())
GROUP BY
s.SubscriberKey,
s.EmailAddress,
s.FirstName,
s.LastName
Land the result in a DE_STO_Eligible data extension and use it as the journey entry source. Contacts with no recent engagement run through a separate journey, without STO, at the standard campaign send time.
Measuring STO performance
To gauge the real lift from STO, compare two branches inside the same journey with a Path Optimizer or a 50/50 Random Split: one branch with STO, the other with a fixed send at your usual hour, for instance 10:30 AM local time. Run the test over at least four consecutive sends to smooth out content bias.
The metrics that matter:
STO does not invent engagement — it surfaces time preferences already buried in your data. A well-tagged audience and a clean tracking history are worth more than a clever send window.
Common pitfalls to avoid
Across client deployments, the same mistakes show up. Here is how to dodge them.
Turning STO on for every email
STO on a transactional email artificially delays delivery and can trigger user complaints. Keep the activity strictly for marketing communications.
Confusing window with frequency
STO decides the moment of send, not how often you send. To cap marketing pressure, pair STO with Einstein Engagement Frequency, which models optimal send frequency per contact, or with a homegrown suppression list managed through AMPscript inside Content Builder:
%%[
VAR @lastSendDate, @daysSince, @skipContent
SET @lastSendDate = AttributeValue("LastMarketingSend")
SET @daysSince = DateDiff(@lastSendDate, Now(), "D")
IF @daysSince < 3 THEN
/* Skip this contact for the current campaign */
SET @skipContent = true
ENDIF
]%%
Forgetting cold contacts
Contacts without recent engagement default to the generalized model, which converges on the average send times of your base. If a large share of your data extension is dormant, peel them off the STO journey and put them through a dedicated reactivation campaign.
Measuring too early
The personalized model needs at least 90 days of active sending after activation to reach its target accuracy. Resist the urge to draw firm conclusions before three full months of production.
Key takeaways
1. STO optimizes the when, not the what. No timing tweak will rescue weak copy or a misaligned segment.
2. Keep STO for non-urgent marketing emails. Transactional messages, alerts, and flash sales must ship immediately, without a detour through Einstein.
3. A 24-hour window is the best default for most newsletters. Stretch it only if the content stays relevant for several days.
4. Measure with a Path Optimizer. Compare STO against a fixed-time send over four consecutive runs to isolate the timing effect.
5. Invest in tracking first. Without a healthy history of opens and clicks, STO falls back on an average model and loses most of its value.
Want to audit your Marketing Cloud Engagement setup or roll out Einstein STO with a clear roadmap? Get in touch with CGC-Agency to talk to a senior SFMC consultant.
