Connect your email platform (Mailchimp, ConvertKit, Loops, …)

You don’t need a native integration per ESP — you need one Zap (or Make scenario, or a 20-line script) listening to Qanary’s webhooks. This guide shows the canonical recipe: “affiliate approved → add to my ESP audience”.

Option A — Zapier (no code)

  1. In Zapier, create a Zap with the Qanary app (private beta — or use Webhooks by Zapier → “Catch Hook” until you’re invited).
  2. Trigger: Promoter Approved. Behind the scenes Zapier subscribes a REST hook via POST /api/v1/webhook_endpoints with your API key (Settings → API keys) and receives the promoter.approved event with the affiliate’s email, name, code and tags.
  3. Action: your ESP’s “Add/Update subscriber” — map:
    • email → data.email
    • first name → data.name
    • a tag or custom field → data.token (their referral code — perfect for merge tags like “your link: https://you.com/?via={{token}}”)
  4. Turn it on. Every affiliate you approve lands in your welcome sequence with their own link already merged in.

The same pattern works for every other event: commission.created → “you earned!” email, payout.paid → “money’s on the way” email, conversion.created → internal Slack notification.

Option B — plain webhook receiver (any stack, ~20 lines)

  1. Qanary → Webhooks → Add endpoint (subscribe to promoter.approved). Copy the signing secret (shown once).
  2. Verify Qanary-Signature: t=<unix>,v1=<hex>: compute HMAC-SHA256(secret, "t.raw_body") and constant-time-compare with v1; reject stale t.
  3. Call your ESP’s API with data.email / data.name.
  4. Press Send test event in Qanary to check the wiring before going live.

Payload shape

Webhook payloads use the same serializers as the REST API, so what your Zap sees is exactly what GET /api/v1/affiliates/:id returns:

{
  "event": "promoter.approved",
  "created_at": "2026-07-06T12:00:00Z",
  "data": {
    "id": 42, "campaign_id": 7, "email": "ada@affiliates.io", "name": "Ada Lovelace",
    "status": "approved", "kind": "affiliate", "token": "ada",
    "coupon_code": "ADA10", "paypal_email": null, "tags": ["vip"],
    "created_at": "2026-07-01T09:00:00Z"
  }
}

Native per-ESP sync is deliberately deferred until at least three customers ask for one post-Zapier — the Zap covers the job without another integration to maintain.