The snippet
In Settings → Pixel, the Cliqo Tracking Pixel panel shows your snippet already personalised, with a Copy all button. It looks like this:The identifier appears twice, on purpose. In the address —Paste it in thehttps://app.cliqo.io/px.js?t=YOUR-ID—, which Google Tag Manager never touches, and indata-tenant, which GTM strips when it injects the tag. That’s why the same snippet works for GTM and for a direct install. (With no identifier at all the pixel still works: it resolves the store by domain. But only if that domain is already registered in Cliqo — your verified domain, or the Store website under Settings → Brand.)
<head> of every page of the store — not just the home page. It has to be the <head>, not the end of <body>: the pixel needs to load before the content to measure time on page correctly.
Where to paste it, by platform
The panel offers three routes, each with its step-by-step on screen:- GTM — marked Recommended, it’s the one that opens first. A Custom HTML tag triggered on all pages; a link opens Google Tag Manager.
- Loja Integrada — shows up when your account is registered as a Loja Integrada store. The snippet goes under Design → Edit theme HTML, just above
</head>; a link opens that platform’s dashboard. - Manual — for any other store: paste it into your theme template, just above
</head>.
data-* attributes, and data-tenant is one of them — that’s why the snippet also carries your identifier inside the script address (?t=…), which GTM cannot strip.
Confirming it works
At the top of the same panel there is a Verify pixel button (once the first hit arrives, it becomes Verify now). After pasting the snippet, open a page of your store in another tab and click it. While the panel is open, the check also repeats on its own every minute. The result has three states:- Pixel active — traffic arrived in the last 24 hours. You are set.
- Installed · no recent traffic — the pixel has sent hits before, but nothing in the last 24 hours. It is installed; the store just had a quiet day. Don’t touch the snippet.
- Awaiting installation — no hit has ever arrived.
What it captures on its own
You do not have to tag anything. Once installed, the pixel identifies the page type and emits the events below — and each one feeds an automatic segment under Audience › Lists and segments, Segments tab:
Beyond those, the pixel measures scroll depth on product pages (25%, 50%, 75%, 90%) and real time on page — interest signals that open rate cannot capture.
To recognise the page type it first reads your theme’s standard markup (
og:type, og:title, og:price), then structured product data, and only then falls back to heuristics. That is what makes it work on any platform, with no dedicated integration.
Recording a purchase
The pixel recognises the order confirmation page on its own when its address contains one of the common fragments —/finalizacao, /obrigado, /pedido/sucesso, /order/success, /thank-you, /order-received or /concluido — and records the purchase with the order number and value. If your thank-you page matches none of them, call this on it:
Tie the purchase to who bought it
This is the call that separates “there was a sale” from “Marina bought it”. Cliqo ties browsing to a person when they arrive through one of your email links. Someone who walks straight into the store and buys never takes that path: the order exists on one side, the browsing on the other, and the two never meet. Without this link, abandoned cart and revenue per campaign have no way to work — the sale shows up with no owner. On the thank-you page, say who bought:BUYER_EMAIL with your platform’s variable holding the order’s email.
Email works — and it’s what your store actually has. The call accepts two forms: the contact’s Cliqo identifier (a UUID your store doesn’t know) or the email. Given the email, the server resolves the contact and stitches the earlier browsing on its own.
Order is what makes it work
The email has to be on the page before the purchase is recorded. It isn’t sent on its own: it rides along on that page’s next event — and on the thank-you page the only event is the purchase. If it arrives after that, there’s nothing left to carry it, and the identification doesn’t happen. With no error on screen. Hence two recommendations:- Use the form above (
window._cliqo.push), notwindow.cliqo.identify(...). It works even when it runs before the pixel loads, and it’s the only safe one when you don’t control the order. - Place the snippet above the purchase call in your template (or above the pixel snippet, if the purchase is detected automatically).
Through Google Tag Manager
A Custom HTML tag, fired only on the order confirmation page, with a higher priority than the tag that fires the purchase. In GTM, a higher priority number fires first — if the other one sits at0, put this one at 10.
How to check it worked
Place a test order. On the thank-you page, open developer tools (F12) → Network tab → filter bytrack. The request must carry an identify_email field with the buyer’s email.
If it isn’t there, it’s almost always the order: the email tag is firing after the pixel.
Privacy of this call
The email is used only to find the contact that already exists in your base. It never appears in a log, and Cliqo does not answer whether the email exists or not — the identification is silent on both sides, so the pixel’s address can’t be used to discover who is on your list.Privacy and LGPD
The pixel stores an anonymous identifier in the visitor’s browser and records which pages they saw. Under Brazil’s LGPD that is pseudonymised personal data, even with no name or email attached. Two obligations that are yours, not Cliqo’s:- Your privacy policy must state that the store uses a tracking pixel, what it is for, and who the data is shared with.
- If your store shows a cookie notice, the pixel belongs in it.
When the visitor declines
If the visitor declines marketing cookies, the pixel keeps counting visits but does not link the browsing to any customer: events stay anonymous. It understands the refusal on its own in two cases:- Google Consent Mode v2 (your cookie notice sends
ad_storageoranalytics_storage=denied); - Shopify, through the store’s own customer privacy setting.
{ marketing: true }.
When to stop waiting and ask for help
If the snippet is in the<head>, you visited the store, and the panel still records nothing, open the page source in your browser and search for px.js.
Finding px.js does not mean it is working — it means it loaded. There are three different answers, and only one of them closes the matter.
① It is not there. The snippet sits in a template that page does not use. This is the most common cause. Move it to the template the store actually loads.
② It is there with your identifier — either data-tenant="..." on the tag itself, or ?t=... at the end of the px.js address. It loaded and identified itself: the install is correct and the problem is on our side. Talk to us.
③ It is there, but with no identifier at all. This is the misleading case. The page loads the pixel, it fires normally, and still nothing reaches the panel — no error, no warning. With no identifier it arrives anonymous, and the visit is only counted if your store address is already registered on our side. If it is not, it is discarded silently.
This happens mostly with tag-manager installs: Google Tag Manager strips data-* attributes when it injects the tag, but never touches the address.
How to confirm it is ③: open the browser console (F12 → Console tab) and reload the page. If the line [cliqo] sem token na tag shows up, this is the case.
The fix: put the identifier in the address itself, https://app.cliqo.io/px.js?t=YOUR-ID. The address survives the tag manager; data-tenant does not.
If it persists, write to us at [email protected] with the address of a page where it should be.