Skip to main content
For each email you send, RQE fires a webhook with events as they happen. Some come from the sending provider (delivery, bounce); others are detected by RQE directly (open, click).

Available events

There’s also email.reject (send rejected before going out). The details of each event and its fields are in the Webhooks reference.

Bounces — soft vs hard

Complaints (email.complaint) also add the recipient to the suppression list automatically.
Above 2% bounces, your deliverability degrades. Above 5%, the provider may suspend your sending. Clean your list: an old email is a bounce waiting to happen.

Open tracking

RQE injects a transparent 1x1 pixel into the HTML. When the recipient’s client loads images, it fires email.open.

Why reliability is approximate

  • Outlook desktop blocks external images by default → no open detected
  • Apple Mail iOS 15+ with MPP (Mail Privacy Protection) loads the pixel automatically on receipt → reports an open before the user actually opens
  • Plain-text clients → don’t load images
Treat opens as approximateOpens are a trend signal (does this send get opened by more people than that one?), not exact individual behavior. For real conversion, look at clicks.

Click tracking

Before sending, RQE rewrites the <a href> tags in the HTML so they pass through a tracking endpoint that does a 302 redirect to the original destination. The redirect is instant, the user doesn’t notice anything. It only fails if they copy/paste the href manually (extremely rare).

Webhook payload

Your webhook_url receives a POST with an HMAC-SHA256 signature in the X-RQE-Signature header, signed with your project’s API key. Example body for email.delivery:
For the full shape by event type, see Webhooks → Outbound payload.

HMAC verification in Node

Next steps

  • Webhooks — full reference with all formats.
  • Test mode — separate dev vs prod tracking.