Tracking endpoints
Token
Every tracking link carries a JWT signed (HMAC SHA-256) token containing customer/campaign/node/run/message IDs + expiry. The token holds NO sensitive data — only ID references.GET /api/tracking/pixel.gif?t=<token>
Returns a transparent 1×1 gif. Records an email_opened event:
- Activity log row with messageId, user-agent, IP
- Node run output
opened=true→ fireswhen: openedif present - Campaign analytics counter increments
Gmail / proxies sometimes fetch the pixel on preview → false-positive opens. Acceptable noise.
GET /api/tracking/click?t=<token>&url=<encoded>
302 redirect to the real URL. Before redirecting it records:
- Activity
email_clickedwith clickedUrl - Node run output
clicked=true,clickedUrl=<url>
GET /api/tracking/unsubscribe?t=<token>
What it does:
- Decode the token → identify the contact
- Suppress the contact with reason=
unsubscribe - Insert an
unsubscribedactivity - Return an HTML success page
Inbound webhooks
SES inbound + bounce / complaint
Endpoint:POST /api/ses-events.
Receives Amazon SES notifications:
- Bounce → mark the message
bounced, fire the edge, optionally suppress the contact - Complaint → suppress the contact with reason=
complaint - Delivery → mark the message
delivered
SES setup
SES Console → Configuration set
Create a configuration set, attach it to the SMTP credential’s domain.
Event destination → SNS
Create an SNS topic, attach as the configuration set’s destination. Event types: Bounce, Complaint, Delivery.
Telegram inbound
Endpoint:POST /api/telegram/webhook/:credentialId (auto-installed when you connect the credential).
Telegram sends inbound updates → the system parses and creates a message bubble + activity log.
Outbound webhook (EDGR → external — notification webhooks to Slack/Discord/custom), webhook delivery log + retry tab, manual event replay — coming soon.