Tracking and unsubscribes

Track opens and clicks on sent mail, and add one-click unsubscribe to bulk mail.

Track whether recipients open a message and click its links, and give bulk mail a working unsubscribe. Both are options on a send or mail merge.

Open and click tracking

With tracking on, the HTML part gets a 1x1 pixel (opens) and its links go through a Workwae redirect (clicks). Text parts are never changed.

The account's trackOpens, trackClicks and trackingHoneypot settings are the defaults. A send's own tracking object overrides them.

curl -X POST "https://api.workwae.com/v1/accounts/$ACCOUNT_ID/outbox" \
  -H "Authorization: Bearer $WORKWAE_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "to": [{ "address": "ada@example.com" }],
  "subject": "Spring sale",
  "html": "<p>Our <a href=\"https://shop.example.com/sale\">spring sale</a> starts today.</p>",
  "tracking": { "opens": true, "clicks": true, "honeypot": true }
}'
  • Tracking is per message, not per recipient: every recipient of one send gets the same MIME. Use a mail merge for per-recipient numbers.
  • Drafts on Gmail or Microsoft 365 cannot be tracked (tracking_unsupported).

Read the results

The outbox entry holds counts; GET /v1/accounts/{accountId}/outbox/{outboxId}/tracking lists each hit with what its request showed. Hits are also reported as message.opened and message.clicked events.

curl "https://api.workwae.com/v1/accounts/$ACCOUNT_ID/outbox/$OUTBOX_ID/tracking" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

Each hit is classified:

ClassMeaning
humanA person opened or clicked.
proxyA machine, such as Gmail's image proxy.
prefetchA machine, such as Apple Mail Privacy Protection.
scannerA machine, such as a link scanner.
unknownNot classifiable.

Honeypot link

honeypot: true adds one hidden link that only machines follow, which sharpens the scanner classification. It needs click tracking (honeypot_needs_click_tracking otherwise).

Unsubscribe links

Name a suppression list with listId to send bulk mail properly:

  • The message gets one-click unsubscribe headers (RFC 8058).
  • {{rcpt.unsubscribeUrl}} in a template renders the recipient's own unsubscribe link.
  • An address on that list or on the global list is skipped with reason suppressed.
  • A single send naming a list must have exactly one to and no cc or bcc. For many recipients, use a mail merge.

Unsubscribing through the header or the link always suppresses the address, regardless of the optOutHandling setting; see Detected opt-outs.

On this page