Identify Email Recipients
Summary: Add a dlvr_et value to the links in your marketing emails, and the Delivr pixel identifies the recipient on the page they land on, including recipients the pixel has never seen. The same browser keeps resolving on later visits. An optional open pixel records which recipients opened. This works with any email platform that supports a custom contact field and a merge tag.
How It Works
- Each contact in your email platform carries a custom field named
dlvr_et: an encrypted token Delivr issues for that contact's email address. - You add
dlvr_et=<merge tag>to the links in your emails that point at your site. - A recipient clicks. The landing page runs the Delivr pixel, which reads the token from the page URL and identifies the visitor as that recipient on that first page view.
- The pixel links the recipient to that browser, so later visits resolve without a token.
- The pixel removes
dlvr_etfrom the address bar, so it does not end up in links the visitor shares.
The token is encrypted, not just signed. Anyone who sees the URL, including analytics scripts on your page, learns nothing about the recipient. A token only works on pixels in the Delivr project it was issued for, and expires after 365 days.
Identification on click needs a Website pixel installed on the landing page. The landing page's domain must be in that pixel's allowed origins for the visitor to stay identified on later visits.
Set Up
1. Create an Email pixel
In the dashboard, add a pixel to your project and choose Email. Its page holds every snippet below, filled in with your pixel's IDs and your platform's merge tag, plus a live check for test clicks.
2. Put a token on every contact
Each contact needs a custom field named dlvr_et holding its token.
- On the Email pixel page, under Get tokens for your contacts, upload a CSV with an
emailcolumn. Other columns are ignored and never stored. - When the job finishes, download the result: a CSV with
email,dlvr_etandstatusfor every row, in your file's order. Rows that are not valid email addresses come back withstatusinvalid_emailand no token. The download is available for 7 days. - Import the file into your email platform, mapping the
dlvr_etcolumn to a custom contact field nameddlvr_et.
Tokens last 365 days. Upload your list again about every 10 months, and again when you add contacts. Contacts without a value render an empty dlvr_et=, which is harmless.
3. Add the token to your links
Add dlvr_et= and your platform's merge tag to the destination URL on your site, not to your platform's click-tracking URL. Click tracking wraps your links and keeps the destination's query parameters.
Use ? when the URL has no query string, otherwise &:
https://yoursite.com/pricing?dlvr_et={{ person.dlvr_et|default:'' }}
https://yoursite.com/pricing?utm_source=email&dlvr_et={{ person.dlvr_et|default:'' }}
| Platform | Contact field | Merge tag |
|---|---|---|
| Klaviyo | profile property dlvr_et | {{ person.dlvr_et|default:'' }} |
| HubSpot | contact property dlvr_et (internal name) | {{ contact.dlvr_et }} |
| Mailchimp | audience field, merge tag DLVR_ET | *|DLVR_ET|* |
| Salesforce Marketing Cloud | data extension or profile attribute dlvr_et | %%dlvr_et%% |
| Customer.io | attribute dlvr_et | {{ customer.dlvr_et }} |
| Braze | custom attribute dlvr_et | {{custom_attribute.${dlvr_et}}} |
| Iterable | user field dlvr_et (case-sensitive) | {{dlvr_et}} |
| Marketo | lead field with display name dlvr_et | {{lead.dlvr_et:default=}} |
| ActiveCampaign | custom field DLVR_ET | %DLVR_ET% (copy the exact tag from Contacts > Fields) |
| SendGrid Marketing Campaigns | contact custom field dlvr_et | {{dlvr_et}} |
| SendGrid Dynamic Templates | dlvr_et in your API call's dynamic_template_data | {{dlvr_et}} |
| Brevo | contact attribute DLVR_ET | {{ contact.DLVR_ET }} |
Marketo tokens use the field's display name, so name the field exactly dlvr_et. In Salesforce Marketing Cloud the tag works in a static link; if the whole link is a variable, wrap it in RedirectTo.
4. Optional: add the open pixel
Paste this image tag into your email template, with your platform's merge tag in place of the Klaviyo one:
<img src="https://api.sitelytics.tech/pixel/core/api/send-event/get?event_type=email_open&pixel_id=YOUR_EMAIL_PIXEL_ID&organization_id=YOUR_PROJECT_ID&dlvr_et={{ person.dlvr_et|default:'' }}&dlvr_msg=spring_launch" width="1" height="1" alt="" style="display:block;width:1px;height:1px;border:0;" />dlvr_msg is an optional campaign label: up to 128 letters, digits, _, . or -.
5. Test
Send a test email to yourself and check that the rendered link carries a long value after dlvr_et=. Click it, and watch the live check on the Email pixel page.
What You Get
- Landing page views from a recipient carry the recipient's identity, with
hem_sourceset toemail_token. Later visits from the same browser resolve through the normal cookie match. - Opens are
email_openevents on the Email pixel. They carry the recipient's identity andemail_client_proxy(gmail,yahooorunknown). An open almost never links a browser to the recipient: mail proxies carry no browser cookie, and most webmail sends no page address with images. Clicks are what link a browser. - Every event that carried a token has
email_token_result, which says whether the token worked. See Troubleshooting.
Opens are not site visits. They are left out of visitor counts, visitor lists, audiences, resolution stats and exports, and out of Events API results unless you ask for them with filter=event_type:eq:email_open.
Opens you request through the Events API bill like other events. On /api/v3/events/{tier} the route sets the price, so read opens from /api/v3/events/web_event to pay the event rate. On the older events routes, each open carries the recipient's identity, so a query without select bills at the identity tier; list only event columns in select to keep it at the event rate.
Treat opens as a weak signal. Gmail, Yahoo and Apple Mail fetch images through their own servers, and Apple Mail does it when the message arrives, whether or not anyone reads it. A click is what identifies a person.
Troubleshooting
email_token_result | What it means | Fix |
|---|---|---|
valid | The token worked | Nothing |
absent | The link had an empty dlvr_et= | The contact has no token yet; add one |
unrendered_merge_tag | Your platform sent the merge tag as text, such as {{ contact.dlvr_et }} | Check the field name and tag syntax for your platform |
org_mismatch | The token was issued for a different Delivr project | Issue tokens for the project this pixel belongs to |
expired | The token is older than 365 days | Issue fresh tokens |
malformed, auth_failed | The token was cut short or changed | A link shortener or rewriter altered the URL; link to your site directly |
Privacy and Limits
- Visitors with Global Privacy Control enabled, and visitors in restricted countries, are never identified from a token.
- One recipient is linked to at most 3 browsers in 30 days, which limits forwarded emails and shared links. A browser already identified as someone else is never relinked.
- Most link scanners (Microsoft, Proofpoint and others) open links without running JavaScript, so they do not trigger the pixel. The 3-browser limit bounds the ones that do.
- Staying identified on later visits depends on the browser keeping the pixel's cookie. Safari keeps it only where the pixel runs on your own domain; see Delivr White-Label Pixel.
- If your site's router rewrites the URL and conflicts with the pixel removing
dlvr_et, adddata-strip-email-token="false"to the pixel's script tag. The pixel still redacts the token from the event before storing it.
Updated about 1 hour ago
