EDGR exposes 3 tracking endpoints for outbound + 2 endpoints to receive external webhooks.

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 → fires when: opened if 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_clicked with clickedUrl
  • Node run output clicked=true, clickedUrl=<url>
The original URL must be base64url-encoded to safely carry its own query string.

GET /api/tracking/unsubscribe?t=<token>

What it does:
  1. Decode the token → identify the contact
  2. Suppress the contact with reason=unsubscribe
  3. Insert an unsubscribed activity
  4. Return an HTML success page
An unsubscribe link is required in every outbound email per CAN-SPAM / GDPR. It’s auto-appended when the messaging node sets unsubscribeLink: true.

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

1

SES Console → Configuration set

Create a configuration set, attach it to the SMTP credential’s domain.
2

Event destination → SNS

Create an SNS topic, attach as the configuration set’s destination. Event types: Bounce, Complaint, Delivery.
3

SNS subscription → HTTPS

Subscribe the SNS topic to the URL https://edgr.ecvhub.net/api/ses-events. SNS sends a confirmation — EDGR handles it automatically.

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.