Get Campaign Engagement
GET /campaigns/:id/engagement — list the individual recipients who opened, clicked, or replied.
/campaigns/:id/engagementReturns the per-recipient engagement for a campaign: who opened it, who clicked a link, and who replied. Where the campaign object carries roll-up counts, this endpoint names the individual contacts behind them, so you can sync engaged recipients into a segment or your own CRM.
Each list is ordered newest engagement first and is capped at 500 rows. There are no pagination parameters — limit, after, and before are ignored — so a campaign with more than 500 openers returns only the 500 most recent. Reply text is clipped to 300 characters; fetch the full body with GET /emails/receiving/:id using received_email_id.
idstringrequiredThe campaign ID.
Response fields
objectstringoptionalAlways campaign_engagement.
campaign_idstringoptionalThe campaign this engagement belongs to.
openedarrayoptionalRecipients who opened, each with email, contact_id (nullable), opened_at, and open_count.
clickedarrayoptionalRecipients who clicked a tracked link, each with email, contact_id (nullable), clicked_at, and click_count.
repliedarrayoptionalReplies received, each with email, contact_id (nullable), replied_at (nullable), received_email_id, subject, preview, category (the AI reply intent — interested, neutral, not_interested, or null when not yet classified), and received_at.
import { Mailblastr } from 'mailblastr';
const mb = new Mailblastr('mb_xxxxxxxxx');
const { data, error } = await mb.campaigns.engagement('8f5c2a1e-7b3d-4f9a-9c12-2e6d4a7b8c90');
console.log({ data, error });Response
{
"object": "campaign_engagement",
"campaign_id": "8f5c2a1e-7b3d-4f9a-9c12-2e6d4a7b8c90",
"opened": [
{
"email": "ada@example.com",
"contact_id": "3c1f7b90-52ad-4e6b-9f01-8d4c2b6e7a13",
"opened_at": "2026-06-23T22:41:08.113Z",
"open_count": 3
}
],
"clicked": [
{
"email": "ada@example.com",
"contact_id": "3c1f7b90-52ad-4e6b-9f01-8d4c2b6e7a13",
"clicked_at": "2026-06-23T22:42:55.007Z",
"click_count": 1
}
],
"replied": [
{
"email": "grace@example.com",
"contact_id": null,
"replied_at": "2026-06-24T08:12:00.412Z",
"received_email_id": "b41d9e77-1c05-4f2a-8ab3-6e9d0f5c1274",
"subject": "Re: Launch week",
"preview": "Looks great — can you send me the pricing sheet?",
"category": "interested",
"received_at": "2026-06-24T08:12:00.412Z"
}
]
}not_found if the campaign does not exist or is not yours.