Send time, day, and channel optimization
MessageGears provides three ML models that each answer a distinct optimization question for your recipients:
| Model | Question it answers | Output field | Value |
|---|---|---|---|
| Send Time Optimization (STO) | What hour of the day should I send? | ML-OptHour | 0–23 |
| Optimal Day | What day of the week should I send? | ML-OptDay | 0–6 |
| Best Channel | Which channel should I use? | ML-OptChan | email, push, sms |
Each model trains independently, scores independently, and produces its own output. You can activate any combination of them based on your use case.
Shared inputs and training​
All three models train on the same historical engagement data: messages sent, opens, clicks, and push interactions. Recipients are re-scored at a cadence that accounts for new engagement events and demand, so predictions stay current as customer behavior shifts.
The training process accounts for industry-specific signals such as Apple's Mail Privacy Protection, filtering out automated behaviors and keying on actual customer interactions where possible.
Requirements​
- Email and channel engagement data, such as clicks, opens, sends, and push interactions
- Data Input Schemas for Transaction/conversion data
Send Time Optimization (STO)​
Predicts the best hour of day to send a message to each recipient.
How it works​
The model analyzes when each recipient has historically engaged (opened, clicked) with messages and produces a single optimal hour (0–23) per recipient. That hour is then used to populate channel-specific send time timestamps (EmailSendTime, PushSendTime, SmsSendTime) that control when the message is actually released for delivery.
For details on how send time timestamps control message delivery, see Send Time Designation.
Output fields​
| Field | Type | Range | Description |
|---|---|---|---|
| ML-OptHour | INT | 0–23 | Optimal hour of day to send. |
| EmailSendTime | TIMESTAMP | e.g., 2019-06-20 16:00:00-04:00 | Scheduled release time for email, derived from ML-OptHour. |
| PushSendTime | TIMESTAMP | e.g., 2019-06-20 16:00:00-04:00 | Scheduled release time for push, derived from ML-OptHour. |
| SmsSendTime | TIMESTAMP | e.g., 2019-06-20 16:00:00-04:00 | Scheduled release time for SMS, derived from ML-OptHour. |
| ML-OptHourGroup | CHAR(1) | C, R, O | C – Control group, R – Random/Training, O – Optimized |
Optimal Day​
Predicts the best day of week to send a message to each recipient.
How it works​
The model identifies which day of the week (Sunday through Saturday) each recipient is most likely to engage. This can be used to build day-specific audience segments or schedule campaigns on per-recipient optimal days.
Output fields​
| Field | Type | Range | Description |
|---|---|---|---|
| MLOptDay | INT | 0–6 | Optimal day of week to send (0 = Sunday, 6 = Saturday). |
| MLOptDayGroup | CHAR(1) | C, R, O | C – Control group, R – Random/Training, O – Optimized |
Best Channel​
Predicts the best channel to reach each recipient. This is also referred to as "next best channel" (NBC).
How it works​
The model compares each recipient's engagement across email, push, and SMS to determine which channel they are most likely to interact with. Use this to route recipients to their preferred channel or to prioritize channel selection in cross-channel campaigns.
Output fields​
| Field | Type | Range | Description |
|---|---|---|---|
| ML-OptChan | VARCHAR | email, push, sms | The channel the recipient is most likely to engage with. |
Full schema reference​
All fields are keyed on RecipientId and can be joined back to your customer tables.
| Field | Type | Range | Model | Description |
|---|---|---|---|---|
| RecipientId | VARCHAR | All | The unique customer identifier. | |
| MLOptHour | INT | 0–23 | STO | Optimal hour of day to send. |
| EmailSendTime | TIMESTAMP | STO | Scheduled release time for email. | |
| PushSendTime | TIMESTAMP | STO | Scheduled release time for push. | |
| SmsSendTime | TIMESTAMP | STO | Scheduled release time for SMS. | |
| MLOptHourGroup | CHAR(1) | C, R, O | STO | Experiment group assignment. |
| MLOptDay | INT | 0–6 | Optimal Day | Optimal day of week to send. |
| MLOptDayGroup | CHAR(1) | C, R, O | Optimal Day | Experiment group assignment. |
| MLOptChan | VARCHAR | email, push, sms | Best Channel | Optimal channel to send. |