Skip to main content

Conversion tracking

Record a conversion pixel or API event against a hashed visitor, attribute it last-click, and read conversions and CVR on Analytics.

Reviewed 24 Oct 2026Available from the Business plan

Open AnalyticsIn your workspace. You are asked to log in first if you are not already.

Did the click do the thing?

Clicks tell you traffic arrived. A conversion is a later event that you fire from your own site or server, such as a sign-up, a purchase, or a download. ShortZen attributes it to the last non-bot click for that visitor inside your attribution window.

Attribution needs Audience analytics

Every conversion is counted either way. Crediting it to the link the visitor clicked needs the opt-in visitor hash; without it, a pixel conversion is credited to the link named in the snippet.

Pixel and API

Two doors. The pixel counts conversions from a page: add the snippet below to every page of your site, then call szConversion on the thank-you page. POST /api/v1/conversions, with a key that holds conversions:write, also takes the value and currency: revenue goes through the API only, because a pixel on a public page can be called by anyone.

<script>
(function (w, d) {
  var k = 'sz_vid', q = new URLSearchParams(location.search), v = q.get(k);
  if (v) {
    d.cookie = k + '=' + encodeURIComponent(v) + '; Max-Age=2592000; Path=/; SameSite=Lax; Secure';
    q.delete(k);
    var rest = q.toString();
    history.replaceState(null, '', location.pathname + (rest ? '?' + rest : '') + location.hash);
  }
  w.szConversion = function (goal, eventId) {
    var m = d.cookie.match(/(?:^|; )sz_vid=([^;]*)/), i = new Image();
    i.referrerPolicy = 'no-referrer';
    i.src = 'https://YOUR_APP_HOST/t?lid=lnk_YOUR_LINK&goal=' + encodeURIComponent(goal)
      + (m ? '&v=' + m[1] : '')
      + (eventId ? '&eid=' + encodeURIComponent(eventId) : '');
  };
})(window, document);
</script>

<!-- On the thank-you page -->
<script>szConversion('signup', 'ORDER_OR_SIGNUP_ID');</script>

When conversion tracking is on the plan, the redirect adds an opaque sz_vid token to the destination address. The snippet keeps it in a first-party cookie on your own site for 30 days and takes it off the address bar, so a visitor who signs up pages or days later is still recognised. Pass your order or sign-up id as the second argument: a reload of the same page then records once. Without one, each page load counts.

Fire a conversion from the destination page

For: Whoever owns the landing page

Before you start

  • A workspace on a plan with conversion tracking (from Business).
  • Audience analytics on if you want last-click attribution.
  • The destination URL of a ShortZen link.

Steps

  1. Copy the snippet from Settings › Workspace › Tracking or from this article.

    Replace YOUR_APP_HOST and lnk_YOUR_LINK with one of your links.

  2. Add it to every page of your site, then call szConversion on the thank-you page.

    A 1×1 request goes to /t when the thank-you page loads.

  3. Click the short link, complete the goal, then open Analytics.

    Conversions and CVR appear for the period. An empty period says there were no pixel or API events, not "No data".

What you should see

A conversion row attributed to the last click when a visitor hash was present, visible as Conversions and CVR on Analytics.

How to check it worked

  • The thank-you page requests /t.
  • Analytics shows the conversion straight away: conversions count on insert, not on the hourly rollup.
  • Reloading the thank-you page with the same event id does not add a second conversion.

Edge cases

The visitor has no sz_vid.
The conversion is stored without an attributed click. It still counts toward Conversions.
You fire from a server instead of a page.
POST /api/v1/conversions with conversions:write. Pass visitorId as the sz_vid token the snippet kept in its cookie, and the order id as the idempotency key.

If something goes wrong

CVR stays empty.
Confirm the plan includes conversion tracking, the pixel URL is the app host (not the short domain), and the date range includes the event.
Conversions are credited to the wrong link.
Turn on Audience analytics, and make sure the snippet is on the page the link lands on as well as the thank-you page, so the visitor's token is kept.

Attribution window

Last non-bot click for that visitor hash, on any of this workspace's links, at or before the conversion, inside 1, 7, or 28 days. The window is set next to the Audience analytics toggle. Unattributed events are kept; they just have no click id.

Check and correct events

View events on the Conversions panel lists every conversion behind the figures, for the dates and filters on screen: when it happened, its goal and value, the link it was credited to, whether a click was found, and whether the pixel or the API sent it. Export CSV downloads the same rows, up to 10,000 at a time. Owners and admins can delete a test or mistaken event; every figure updates at once, webhook endpoints receive conversion.deleted, and the audit log keeps the event so it can be sent again.

Plans

Conversion tracking is available from Business. The pixel and the API both refuse to record on a plan that does not include it. The pixel image still loads so a missing plan does not break the page.

Source: the plan registry, the same figures billing reads.
LimitFreeStarterProBusiness
Links / month305002,00010,000
Tracked clicks / month (alert only)2,00025,000100,000500,000
Custom domains131050
Link-in-bio pages13510
Team seats11310
Webhook endpointsNone1520
UTM presets31050200
Folders1025100500
Tags20502001,000
Saved analytics views31030100
Shared analytics reports131020
Bulk CSV rows / importNone1005002,000
One-time import allowanceNone2,00010,00050,000
API calls / hour3001,2005,00020,000
Analytics history3090365730
Smart routing rules / linkNoneNone2050
Links per bio page10100100100
Webhook deliveries / monthNone2,00020,000100,000

Try it on a real link

The free plan needs no card and has no time limit.