7 min readIntegrations

Brevo URL Shortener: Branded Short Links in Campaigns

Use a Brevo URL shortener for email and SMS: branded short links, link_click events sent back to Brevo, and why Elido and Brevo click counts differ.

Ana Kowalska
Marketing solutions engineering
Brevo URL shortener cover: a branded short link in a Brevo email and SMS, with the click returning to Brevo as a link_click event

A Brevo URL shortener setup is simple to describe: you create a branded short link in Elido, paste it into your Brevo email or SMS, and every click on it is sent back to Brevo as a link_click custom event through Brevo's trackEvent endpoint. The event carries the link's slug and ID, the clicker's country and device, and the destination. It lands on a placeholder contact rather than on the person who clicked, so it's campaign-level data, not a per-subscriber trail.

That last point shapes everything else in this guide. Brevo link tracking already knows which contact clicked; Elido knows what happened at the redirect, including clicks that never came through the email at all. Used together they cover more than either one alone, and short links in Brevo campaigns also do two jobs Brevo can't: they put your own domain in the message and they save characters in SMS.

If you haven't settled how you tag campaigns yet, start with the cornerstone on tracking UTMs end to end. All Brevo ever sees is what the link carries.

What Elido Sends to Brevo on Each Click

One click produces one POST to in-automate.brevo.com/api/v2/trackEvent, the endpoint Brevo documents for tracking custom events over REST. It fires after the visitor has been redirected. A slow Brevo never slows the link.

Here's the body, with a real-looking link:

{
  "email": "[email protected]",
  "event": "link_click",
  "properties": {
    "workspace_id": 12,
    "link_id": 4711,
    "slug": "sept-sale",
    "country": "DE",
    "device": "mobile",
    "destination": "https://shop.example/sale?utm_source=brevo&utm_medium=email"
  }
}
FieldWhat it holdsHow to use it in Brevo
eventAlways link_clickThe name you pick in automation triggers
emailA placeholder per link, or one address you setSee the identity section before relying on it
slug / link_idWhich short link was clickedTell campaigns and CTAs apart
country, deviceResolved at the redirectSplit flows by market or by phone vs desktop
destinationThe URL the visitor was sent toUTM tags ride inside this string only

What's missing matters as much. There's no IP address and no user agent in the payload, which keeps the event light from a GDPR point of view. There's no timestamp either, so Brevo records the time it received the event. And there's no switch per link: once Brevo is connected, every click in the workspace is forwarded.

Why the Event Can't Find the Subscriber

The limit is identity. When someone taps go.yourbrand.com/sept-sale, the redirect sees a phone and a country. It doesn't see a Brevo contact. No cookie either.

So the email field falls back to elido-link-<link ID>@noemail.elido.app, one address per link. Every click on sept-sale goes to the same placeholder, whoever made it. You can override that with a single fixed address for the whole workspace, but that's one address too, not the clicker's.

Brevo link tracking identity: Brevo's own tracking link knows which contact clicked, while the Elido link_click event is filed under a placeholder address per link, so three subscribers clicking the same short link produce three events on one placeholder contact

I think that's the right trade. It has a side effect, though. The docs don't say whether trackEvent creates a contact for an address it hasn't seen, so look in Contacts after your first test click. If placeholder contacts show up, keep the noemail.elido.app domain out of every sending list. Nothing should ever be mailed to it.

Per-subscriber attribution already exists, by the way. It's Brevo's own link tracking. Leave it on.

The setup is one credential, and it's easy to grab the wrong one. The trackEvent endpoint authenticates with an ma-key header, and Brevo's REST tracker guide sends you to your account's automation settings to find it. The xkeysib- key under SMTP & API is a different thing.

  1. In Brevo, copy the tracker key from the automation settings page.
  2. In Elido, open Integrations, pick Brevo, click Connect, paste the key and save. It's encrypted at rest and never shown back in full.
  3. Wait about five minutes. The forwarder caches workspace settings for that long.
  4. Tap one of your short links on your phone, off the office Wi-Fi.

The Test connection button helps with the key: it sends one test event (marked elido_test: true) to Brevo's tracker and shows Brevo's answer, so a REST key pasted where the tracker key belongs fails right there. It doesn't show the event on a contact, so the tap from your phone is still the check that counts.

If you want every event on one contact you own, say [email protected], set it through the API: PUT /v1/workspaces/{workspace_id}/event-integrations/brevo with Authorization: Bearer elido_... and a body holding both api_key and email. The dashboard form only has the key field, and saving it again replaces the whole config, so the email goes with it.

Delivery is best effort. A failed POST is retried once after a second, then dropped.

SMS is where the case for Brevo SMS links is pure arithmetic. The SMS campaign reference says the maximum per SMS is 160 characters and anything longer "will be counted as more than one SMS". Sender names are capped at 11 alphanumeric characters. The unsubscribe line eats into the same 160.

A landing page with full UTM tags is easily 110 characters. go.yourbrand.com/sept is 21. On a 40,000-recipient send, that's the difference between one billed segment per message and two.

The branded part matters as much as the length. Carriers and recipients both distrust generic shortener domains in texts, and a link on your own subdomain reads as yours. The SMS marketing shortener guide goes through consent wording and opt-out rules; for SMS the device property on the Brevo event is nearly always mobile, so split on country instead.

Branded Domains in Brevo Emails

In email, length is free. The reason to use short links in Brevo campaigns is the domain. A shared public shortener domain carries every spammer who ever used it. A custom domain carries only your sending history. The deliverability explainer covers what filters actually look at.

The other reason is control after send. A link in a sent newsletter is frozen in thousands of inboxes. A short link isn't; you can repoint sept-sale at the extended-sale page on Monday without touching the email.

Brevo Click Tracking vs Elido Click Counts

Put an Elido link in a Brevo email and you get a double-wrapped redirect. Your short link gets rewritten into Brevo's own tracking link, so a tap goes to Brevo first, then to Elido, then to the page.

Double-wrapped click in a Brevo email: the tap hits Brevo's tracking link and is counted for the contact, then the Elido short link counts it per link and filters obvious bots, then the visitor lands on the destination while Elido posts a link_click event back to Brevo

Each hop counts by its own rules, so the numbers won't match. Elido drops clicks whose user agent announces a bot, which covers crawlers, link-preview fetchers and scripts like curl. A security scanner that presents as a normal browser gets through, and clicks the redirect flags as suspicious are still forwarded to Brevo. Whatever Brevo filters at its hop, Elido never sees. Forwards and group-chat pastes? Elido only.

This one is easy to miss. Brevo can add UTM values to its outgoing tracking links, but on a short link those land on the short URL, and Elido redirects to the destination stored on the link. Tag the Elido destination instead.

Want the redirect side of your campaigns on your own domain? Pick a plan and send the next newsletter through branded links.

The events documentation lists two uses that matter here: triggering automation workflows and segmenting contacts by behaviour. link_click behaves like any other custom event there. The catch from the identity section decides what's useful.

A workflow that emails "the person who clicked" won't work off this event, because the contact is a placeholder. Use Brevo's own click conditions on the email for that. What does work is internal: set the fixed address to a team inbox contact, then trigger a Slack or email alert when a launch link gets its first click from a new country, or when a reprint of an old QR code wakes up.

For reporting, the per-link events give you a click series per slug, minus obvious bots, that includes shares outside Brevo. Compare it with the click analytics dashboard, which also has referrer and browser.

One EU note, sourced. Brevo's parent company, Sendinblue SAS, is registered in Paris per its privacy policy. The event it gets from Elido holds no IP and no subscriber email. That's fixed in the forwarder, not a setting you have to remember. The destination URL does travel, though, so keep personal data out of your UTM values.

Frequently asked questions

Does Brevo have a built-in URL shortener?

Brevo wraps the links in your emails in its own tracking links, which lets it count clicks per contact, but that is tracking, not a branded short link you control. For SMS, where every character is billed, and for links you want on your own domain, you create the short link in a tool like Elido and paste it into the Brevo message.

What event does Elido send to Brevo when a short link is clicked?

One custom event called link_click, posted to Brevo's trackEvent endpoint for every click on a link in your workspace. Its properties are the workspace ID, link ID, slug, country, device and the destination URL. There is no IP address, no user agent and no separate UTM fields in it.

Can Brevo attach an Elido click to the contact who clicked?

No. The redirect doesn't know which Brevo contact tapped the link, so the event is filed under a placeholder address per link, or under one fixed address you configure for the whole workspace. Per-contact attribution comes from Brevo's own link tracking, which you should leave on for that reason.

Which Brevo key does the link click integration need?

The trackEvent endpoint authenticates with an ma-key header, and Brevo's REST tracker docs point you to the automation settings of your account to get that key. The xkeysib- API key from the SMTP and API page is a different credential and is not what this endpoint checks.

How many characters does a short link save in a Brevo SMS?

Brevo counts 160 characters per SMS and bills anything longer as more than one message. A tagged landing-page URL often runs past 100 characters on its own, while a branded short link fits in about 20, which usually keeps a promotional text inside a single segment.

Why do Brevo and Elido show different click numbers for the same campaign?

They count at two different doors. Brevo counts the hit on its tracking link and ties it to a contact; Elido counts the hit on the short link and drops visitors whose user agent says they are a bot. Clicks from links shared outside the email land only in Elido, so some gap is normal.

Try Elido

Paste a URL, get a working short link

No signup. Link lives for 30 days. Sign up to keep it forever.

Free, no signup required · 2 per day

Try Elido

EU-hosted URL shortener with custom domains, deep analytics, and an open API. Free tier - no credit card.

Tags
brevo url shortener
brevo link tracking
short links in brevo campaigns
brevo sms links
brevo custom events
branded short links

Continue reading