EmailBlast object
An EmailBlast represents one bulk email campaign your organization has sent. Returned by the endpoints under /api/v1alpha1/email-blasts.
Merge fields, HTML body, and per-recipient render output are not exposed.
Three shapes depending on the endpoint:
- Table row — the flat row returned by
GET /email-blasts. Rates and one engagement score. - Detail — returned by
GET /email-blasts/{id}. Splits intosummaryandperformanceblocks. - Top-blast — returned by
GET /email-blasts/top. Flat, addsrankingScore.
Table-row schema
{
"blastId": "blast_...",
"blastName": "Q3 product update — pipeline forecasting",
"templateName": "Product Update — Q3",
"sentAt": "2026-07-14T13:00:12Z",
"sender": {
"userId": "usr_...",
"displayName": "Alex Rivera"
},
"recipientCount": 482,
"openRate": 48.3,
"clickRate": 9.2,
"replyRate": 2.5,
"engagementScore": 78.4
}Detail schema
{
"blastId": "blast_...",
"summary": {
"blastName": "Q3 product update — pipeline forecasting",
"templateName": "Product Update — Q3",
"subject": "Q3 product update — new pipeline forecasting",
"sender": {
"userId": "usr_...",
"displayName": "Alex Rivera"
},
"sentAt": "2026-07-14T13:00:12Z",
"status": "Sent",
"recipientCount": 482,
"successfulSentCount": 478
},
"performance": {
"totalOpens": 542,
"totalClicks": 61,
"totalReplies": 14,
"openRate": 48.3,
"clickRate": 9.2,
"replyRate": 2.5,
"engagementScore": 78.4
}
}Field reference
blastId string
Blast identifier, prefixed blast_. Stable across the blast's lifetime.
blastName string
Human-readable name the sender gave the blast. Distinct from subject, which is what recipients saw on the email.
templateName string
Name of the template the blast was rendered from. Useful for comparing performance across blasts built off the same template.
subject string
(detail only) Subject line as delivered. Merge fields () are preserved as placeholders — per-recipient rendered subjects are not stored.
sender object
The user who owns the blast (usually the sender; can differ if the blast was assigned to a different user for review).
| Attribute | Type | Description |
|---|---|---|
userId | string | User identifier, prefixed usr_. |
displayName | string | Concatenated first + last, falling back to email. |
sentAt string
ISO 8601 UTC. When the send loop finished dispatching (not when the last engagement arrived).
status string
(detail only) Current lifecycle state:
| Value | Meaning |
|---|---|
Draft | Author is still editing; not yet scheduled. |
Assigned | Handed off to another user for review/edit. |
Scheduled | Queued for a future send time. |
SendNow | Marked to send immediately; awaiting processing. |
Rejected | Approval workflow rejected the send. |
Processing | Pre-send validation in flight. |
Queued | Handed to the dispatch queue. |
Sending | Recipients are being dispatched in batches. |
Success | Every recipient dispatched cleanly. |
PartialSuccess | Send finished; some recipients failed. |
Failure | Send did not complete. |
Sent | Terminal state — every recipient's dispatch outcome is recorded. |
PastDue | Scheduled send time passed before dispatch started. |
Most integrations only care about Sending, Sent, and the terminal-failure states.
recipientCount number
Number of contacts on the send list at dispatch time. Includes recipients whose sends later failed or bounced.
successfulSentCount number
(detail only) Recipients where dispatch succeeded (mail server accepted the message). recipientCount − successfulSentCount equals the pre-open failure count.
performance object
(detail only) Engagement summary. Rates are floats with one decimal place, computed against successfulSentCount.
| Attribute | Type | Description |
|---|---|---|
totalOpens | number | Raw open events (a recipient opening three times contributes 3). |
totalClicks | number | Raw click events. |
totalReplies | number | Raw reply events (typically ≈ unique repliers; multi-reply threads are counted per reply). |
openRate | number | Unique-recipient open % against successful-sent. |
clickRate | number | Unique-recipient click %. |
replyRate | number | Unique-recipient reply %. |
engagementScore | number | Blended engagement metric (0–100). Weighted mix of the three rates; formula is not fixed and can shift as the ranking model improves. Consume as an opaque relative score. |
Table-row rate fields
Rate fields on the table-row shape (openRate, clickRate, replyRate, engagementScore) mean the same as under performance — the flat row hoists them for column-based rendering.
rankingScore number
(top-blast shape only) The score GET /email-blasts/top sorts on. Same intent as engagementScore but recomputed within the top-blast query so ties resolve consistently. Not directly comparable across periods — a rankingScore of 78 in the last-7-day view is not the same rank as 78 in the last-30-day view.