Docs/Retention Engine/Send Time Optimization

Send Time Optimization

Automatically deliver messages at the optimal time for each player based on their behavior patterns.

8 min read

Overview

Send Time Optimization (STO) uses machine learning to determine the best time to reach each player. Instead of blasting messages at fixed times, Ilara delivers when each player is most likely to engage.

Results
Studios using STO see 20-40% higher open rates compared to fixed-time sends.

How It Works

Learning Phase

Ilara analyzes historical engagement data to build a model for each player:

  • Session start times and durations
  • Push notification open times
  • Email open and click times
  • In-app message engagement
  • Time zone and locale data

Prediction

For each message, Ilara predicts the optimal send window:

  • Hour of Day: When player typically plays
  • Day of Week: Active days vs. dormant days
  • Session Proximity: Just before expected session
  • Fatigue Avoidance: Not too soon after last message

Enabling Send Time Optimization

Dashboard

  1. Go to Retention → Campaigns → Select Campaign
  2. Under "Delivery", choose "Optimized Send Time"
  3. Set your send window (e.g., 9 AM - 9 PM)
  4. Save and activate

API

Campaign with STO
json
POST /v1/notifications/campaigns
{
class="code-string">"name": class="code-string">"Daily Reward Reminder",
class="code-string">"segment_id": class="code-string">"active-players",
class="code-string">"template": {
class="code-string">"title": class="code-string">"Your daily reward is ready!",
class="code-string">"body": class="code-string">"Don't forget to claim your free gems today."
},
class="code-string">"schedule": {
class="code-string">"type": class="code-string">"recurring",
class="code-string">"frequency": class="code-string">"daily",
class="code-string">"send_time_optimization": {
class="code-string">"enabled": true,
class="code-string">"window_start": class="code-string">"09:00",
class="code-string">"window_end": class="code-string">"21:00",
class="code-string">"timezone": class="code-string">"player_local",
class="code-string">"fallback_time": class="code-string">"12:00"
}
}
}

Configuration Options

OptionDescriptionDefault
enabledEnable STO for this campaignfalse
window_startEarliest send time (HH:MM)08:00
window_endLatest send time (HH:MM)22:00
timezoneplayer_local or specific zoneplayer_local
fallback_timeTime if no data available12:00
min_gap_hoursMin hours between messages4
Quiet Hours
Always set reasonable send windows. Avoid sending during typical sleep hours (10 PM - 8 AM local time) unless your game has a specific night-owl audience.

Player Preferences

Ilara detects and respects player engagement patterns:

PatternDetectionOptimization
Morning Player70%+ sessions before noonPrioritize 8 AM - 11 AM
Evening Player70%+ sessions after 6 PMPrioritize 6 PM - 9 PM
CommuterSessions at 8 AM and 6 PMTarget commute times
Weekend Warrior80%+ sessions Sat/SunIncrease weekend sends
Night OwlSessions after 10 PMExtend window, respect sleep

ML Model Details

Features Used

  • Historical opens: When player opened past notifications
  • Session patterns: Time-of-day and day-of-week activity
  • Response velocity: How quickly player acts on messages
  • Device context: Mobile vs. desktop engagement
  • Content type: What types of messages get engagement

Cold Start

For new players without history, Ilara uses:

  • Population-level patterns from similar players
  • Time zone-based defaults
  • Initial session timing as baseline
  • Rapid learning from first few interactions

Analytics & Reporting

Track STO performance in the dashboard:

Key Metrics

MetricDescription
Open Rate LiftSTO vs. fixed-time open rate improvement
Optimal Time DistributionWhen messages are actually sent
Engagement by HourOpen/click rates by time of day
Prediction AccuracyHow often optimal time was correct
STO Analytics Response
json
GET /v1/notifications/campaigns/{id}/sto-analytics
 
{
class="code-string">"campaign_id": class="code-string">"camp_123",
class="code-string">"period": class="code-string">"last_7_days",
class="code-string">"metrics": {
class="code-string">"total_sent": 45000,
class="code-string">"open_rate": 0.32,
class="code-string">"baseline_open_rate": 0.24,
class="code-string">"lift_percentage": 33.3,
class="code-string">"peak_send_hours": [9, 12, 18, 20],
class="code-string">"prediction_accuracy": 0.78
}
}

Best Practices

  • Set reasonable windows: 12-14 hour windows work best
  • Respect quiet hours: Don't wake players up
  • Allow learning time: Models improve over 2-3 weeks
  • Segment appropriately: Different segments may need different windows
  • Monitor fatigue: Watch for declining engagement over time

Next Steps