Elido
8 Min. LesezeitIntegrationen

Email click attribution to Mailchimp, Brevo, Klaviyo

Forward Elido click events to Mailchimp, Brevo, and Klaviyo profile timelines. Field mapping, UTM templates, deliverability impact.

Ana Kowalska
Marketing solutions engineering
Email click attribution diagram showing Elido forwarding events into Mailchimp, Brevo, and Klaviyo profile timelines.

If you send more than 100 thousand emails a month, your Mailchimp open rate is fiction and your click rate is fiction-adjacent. Apple MPP pre-loads every tracked pixel. Gmail prefetches links inside the preview pane. Safari ITP clips third-party cookies at 7 days. The numbers you stare at every morning are a blend of real intent and machine noise.

Server-side email click attribution through Elido fixes the worst of this. The click is recorded once at the redirect edge, deduplicated against bot signatures, then forwarded into Mailchimp, Brevo, or Klaviyo as a canonical event tied to the recipient profile. You stop counting prefetches as engagement. You start joining real clicks to revenue.

This guide covers three things. Why native ESP tracking decays. How to wire Elido's click forwarder into each of the three ESPs. And what to expect from deliverability for the 2 to 3 weeks after you switch tracking domains. Brevo and Klaviyo ship today in services/click-ingester/eventfwd/; Mailchimp is on the Q3 2026 roadmap.

Why native email-platform tracking under-reports real clicks#

Every ESP has the same architecture. They rewrite outbound links to point at their own domain (list-manage.com, r.brevo.com, trk.klaviyolinks.com), the mail client hits that tracker, the tracker logs a row and 302s to your real URL. Clean design, falls apart under three pressures.

Apple MPP routes every tracked open through Apple's relay. Every open looks like an immediate open from a US IP. For links, a meaningful share of "clicks" are MPP prefetch hits, not user intent.

Gmail image proxy and link prefetch does roughly the same thing for 1.8 billion Gmail accounts. When a Gmail user opens an email, Google fetches images and may prefetch the first few links. Your ESP sees that as a click.

Safari ITP does not affect the click itself, but it nukes the third-party cookie the ESP drops on the destination site. The click-to-session-to-conversion chain breaks within 7 days. Read the click attribution after Safari ITP breakdown for the mechanics.

The net effect across 14 high-volume senders we work with: native ESP click rates over-report real clicks by 18 percent for Gmail-heavy lists and 32 percent for iOS-heavy lists. That is the gap a server-side forwarder closes.

The attribution decay matrix, by tracker#

Matrix showing how Mailchimp, Brevo, and Klaviyo native tracking degrade under Safari ITP, Apple MPP, and Gmail prefetch, versus server-side forwarding through Elido.

Mailchimp's tracker is the most prefetch-prone because it sits on a long-lived domain mail clients trust enough to warm up. Brevo's is younger and gets prefetched less. Klaviyo's is the most resilient natively because they already de-dupe on IP and user-agent server side, but they still cannot tell a person from an Outlook security scanner.

Elido's edge knows the IP block ranges for Apple Relay, Google's prefetch fleet, and Microsoft's link-protection scanners. Those hits are tagged is_bot=true and never reach the forwarder. A real click comes from a residential IP, with a real browser fingerprint, and gets a row in ClickHouse plus an event POST to the ESP. The conversion forwarding guide covers the bot ruleset; the same pattern applied to GA4 and Meta CAPI is in server-side conversion tracking.

Wiring Brevo: the events endpoint#

Brevo's events endpoint is POST https://in-automate.brevo.com/api/v2/trackEvent. It accepts an event name, an email identifier, and an eventdata object that gets dropped into the contact's timeline. Elido's services/click-ingester/eventfwd/brevo.go worker reads click events off the Redpanda topic and POSTs them as event: "link_clicked" with the canonical payload:

{
  "event": "link_clicked",
  "email": "[email protected]",
  "properties": {
    "short_url": "elido.me/Xy42",
    "destination_url": "https://store.example.com/sale",
    "utm_source": "brevo",
    "utm_medium": "email",
    "utm_campaign": "spring-sale-2026",
    "utm_content": "hero-cta",
    "click_id": "01HXY7ZPGM3VKQ8B2F1J",
    "country": "DE",
    "device_type": "mobile",
    "ts": "2026-06-04T09:14:22Z"
  }
}

The email field is the join key. Brevo matches the event to an existing contact and writes it as Last activity. If the contact doesn't exist, the event creates a tracked anonymous profile that merges when the same identifier signs up. The ruleset is in Brevo: Tracker JavaScript, which despite the name documents the server-side events API.

To wire it up, open Integrations -> Brevo, paste a v3 API key with the events scope, pick which Elido tags should forward. The connector does not forward every click. You set a tag filter, usually tag:newsletter, so internal links and tool-page clicks stay out of your CRM. Setup walkthrough on the Brevo integration page.

One Brevo quirk: their events endpoint rate-limits at 100 requests per second per API key. We batch into 20-event windows, so the practical ceiling is ~2000 events per second per key. If you burst above that on Black Friday, request a lift with Brevo support; the soft cap is generous.

Wiring Klaviyo: the track event API#

Klaviyo's track API is POST https://a.klaviyo.com/api/events/ (the modern JSON:API revision, not the legacy track query-string form). Authentication is the private API key in the Authorization: Klaviyo-API-Key pk_xxx header. The reference is at Klaviyo: track event API and Elido's services/click-ingester/eventfwd/klaviyo.go follows it directly.

The shape Klaviyo wants:

{
  "data": {
    "type": "event",
    "attributes": {
      "metric": { "data": { "type": "metric", "attributes": { "name": "Clicked Short Link" }}},
      "profile": { "data": { "type": "profile", "attributes": { "email": "[email protected]" }}},
      "properties": {
        "ShortURL": "elido.me/Xy42",
        "Destination": "https://store.example.com/sale",
        "UTM_Source": "klaviyo",
        "UTM_Campaign": "spring-sale-2026",
        "ClickID": "01HXY7ZPGM3VKQ8B2F1J",
        "Country": "DE",
        "DeviceType": "mobile"
      },
      "time": "2026-06-04T09:14:22Z"
    }
  }
}

Klaviyo's interesting move, compared to Brevo, is that the metric name doubles as a segmentation primitive. The first time you forward Clicked Short Link, Klaviyo auto-creates the metric, and you can build segments like "clicked any short link in 30 days" or "clicked a spring-sale short link". Every property you put in the JSON becomes filterable. Use it; don't dump everything into one meta blob.

For a flow trigger, key on UTM_Campaign plus UTM_Content because campaign IDs are stable across sends. The Klaviyo integration page has the connector setup; the marketers solution page has the full conversion model.

One Klaviyo gotcha. They don't soft-delete profiles by default. If a recipient unsubscribes in Klaviyo but stays in your Elido audience, you keep forwarding to a suppressed profile. Klaviyo accepts the events but does not trigger flows. To stop forwarding, sync Klaviyo's suppression list back into Elido as a workspace blocklist. It is a one-cron-job operation, not automatic out of the box.

Wiring Mailchimp: ecommerce stores (Q3 2026)#

Mailchimp is the awkward one. Their classic events API is dead. Modern attribution goes through ecommerce/stores, which is built around products and orders, not arbitrary events. To attribute a click, you create an order record with a placeholder dollar amount and stuff click metadata in the line item. Ugly, and Mailchimp knows it.

Our Q3 2026 approach follows their best-supported path:

  1. Each workspace registers one virtual store named elido-clicks.
  2. Each click becomes a zero-value cart event (not order, to avoid polluting revenue reports). Keyed by click_id.
  3. UTM params map onto Mailchimp's campaign_id and landing_site, which Mailchimp's segmentation engine already understands.

Field mapping:

Elido fieldMailchimp target
click_idcart.id
utm_campaigncart.campaign_id
destination_urlcart.landing_site
emailcart.customer.email_address
countrycart.customer.address.country_code
short_urlcart.lines[0].product_variant.title

Convoluted, but it makes clicks visible to Mailchimp's "Customer Journey" builder, which is what most senders want. Full mapping on the Mailchimp integration page. The forwarder queue exists today in services/click-ingester/eventfwd/; only the drain worker is on the Q3 roadmap.

Per-vendor event mapping table showing Elido click event fields mapped to Mailchimp, Brevo, and Klaviyo target field names.

Print the diagram above. Names differ in annoying ways across vendors, and getting one wrong means the field exists but is not segmentable - the kind of bug that takes a quarter to notice.

UTM templates so you stop hand-typing#

What breaks ESP integrations in practice is inconsistent UTM tagging. One marketer types utm_source=Klaviyo, the next types klaviyo, the third types klav.io. Now your dashboard has three buckets for the same channel.

Elido's UTM template feature uses workspace defaults. Under Settings -> UTM templates, you define one per source: Klaviyo, Brevo, Mailchimp. Every link from the integration applies the template; the creator can override fields. The end-to-end UTM tracking guide covers patterns for B2C vs B2B senders. If you are migrating with messy UTMs already in flight, the UTM builder tool bulk-rewrites campaigns against a target template.

Deliverability: the 2 to 3 week warm-up tax#

Here is the part nobody mentions. When you stop using list-manage.com and route through elido.me, the link domain in the email body changes. Gmail, Outlook, Yahoo, ProtonMail all score per-domain reputation. They have years of data on list-manage.com and zero on your new tracker.

The warm-up math from senders we have walked through this:

  • Days 1 to 5: 5 to 12 percent dip in inbox placement on Gmail and Outlook. Biggest on transactional and re-engagement mail, smallest on opt-in newsletters.
  • Days 6 to 14: placement recovers as inbox providers score elido.me against real click-through-and-stay behavior. Visible in Postmaster Tools.
  • Days 15 to 21: parity, often slightly better placement because elido.me does not carry the spam-reputation hangover that older shared trackers do.

To minimize the dip: switch one campaign type at a time, starting with transactional or product-update mail because those have the highest engagement and Gmail learns fastest from them. Keep DKIM and SPF clean during the switch. Run the switch on a Tuesday, not a Friday, so you read placement before the weekend.

Senders on custom domains skip most of this because the domain is already in their SPF/DKIM reputation graph. Custom domain is Business-tier; see pricing.

Putting it together: the 30-minute rollout#

For a marketer with Elido provisioned, the wiring is fast.

  1. Open the integrations catalog, click Brevo or Klaviyo, paste the API key. Two minutes.
  2. Configure UTM templates per source. Five minutes each.
  3. Tag the campaign with a workspace tag (tag:newsletter is our default).
  4. Send one test campaign. Watch events arrive in Brevo's timeline or Klaviyo's metrics view.
  5. Leave the native ESP tracker on for the first month (we recommend yes) or cut it immediately.

The conversion tracking feature page and the end-to-end email tracking blog cover triple-attribution, multi-touch revenue assignment, and iOS-only segment quirks.

What this changes for your reporting#

Stop trusting your ESP's headline click rate. It is biased upward by MPP and prefetch. Start trusting the clicked-and-engaged segment: received the email, tagged as a real click by Elido, triggered a downstream pixel within 30 minutes. That segment is 10 to 30 percent smaller than the native click count, and it is the segment that correlates with revenue.

For Klaviyo, the Clicked Short Link metric is your segmentation primitive - use it instead of Klaviyo's native Clicked Email. For Brevo, build a last_real_click_at contact attribute for re-engagement timing. For Mailchimp, the cart mapping plugs into Customer Journeys, with cart.campaign_id as the segmentation primitive.

The cookieless attribution explainer covers the session-to-conversion leg, which is the second half of the problem.

You stop arguing about whether opens are real. You start arguing about whether clicks convert. That is a much more productive argument.

Elido testen

URL einfügen, kurzer Link in Sekunden

Kein Konto nötig. Link bleibt 30 Tage aktiv. Konto erstellen, um ihn dauerhaft zu behalten.

Kostenlos, keine Anmeldung erforderlich · 2 pro Tag

Elido testen

URL-Shortener mit EU-Hosting: eigene Domains, tiefe Analytik und eine offene API. Kostenloser Tarif - keine Kreditkarte nötig.

Tags
email click attribution
mailchimp link tracking
brevo click events
klaviyo url shortener
email utm tracking
short links in newsletters

Weiterlesen