Get attribution working, and get help when it doesn’t.
Most answers depend on two things: the browser your visitors use and the computer your tool installs on. Find yours in the matrix, run three checks, and if you’re still stuck, write to us from this page.
01Support matrix
Where attribution works, and how to get it everywhere else.
Find the system your visitors browse on and their browser. Each row says what works with the default setup, where the handoff command gets attribution instead, and the one step to take in each case.
Links an install to the visit on the same Mac or Linux computer in Chrome, Firefox, Edge, Brave and Vivaldi, and in Safari through the handoff command.*
Plans. Attribution (the same-machine match, the handoff command and reconstruction) runs on Standard and Enterprise. On Free, CLItrail counts visits and installs without matching them, and installs reported on Free are never matched later.
The support matrix is drawn by this page’s script. The same matrix, with its methodology, is in the documentation.
Where the install runs
The same browser can match or not depending on where your command runs. These cases hold for every browser above.
* On macOS and Linux the hook searches the profile folders of Chrome, Chrome Beta, Chrome Dev, Chromium, Edge, Brave, Vivaldi and Firefox; on macOS also Chrome Canary, and on Linux also Zen and the Snap and Flatpak builds. Safari, WebKit browsers and forks that name themselves, such as Opera, get the handoff command from prepareInstall in auto mode. For browsers that present themselves as Chrome or Firefox but keep their own profiles, such as Arc or LibreWolf, use handoff mode. Support matrix in the docs↑
Each check looks at one link in the chain: the visit on your install page, the hook on the installing computer, then the delivery to your ad platforms.
The visit was recorded
Open your install page in the browser you want to check, then run this in its developer console:
await InstallAttribution.ready
{ ok: true, … } means the visit and its receipt were recorded. Anything else carries a reason that names the cause.
New destinations start in test mode: events are prepared and listed, and nothing is sent. Use Send test event, check the delivery on Install events, then Go live.
The Logs tab shows every request CLItrail received and every delivery attempt, with the bodies as sent and credentials redacted.
DO_NOT_TRACK or CLITRAIL_DISABLE is set, a CI variable is set, or neither curl nor wget is installed.
The Status line names the reason. Opt-outs and CI are respected by design. Opt-outs
The installer runs with sudo
The hook ran as root, whose home folder has none of the visitor’s browser profiles.
Do the privileged steps with sudo, then run the hook as the original user. Run as the right user
Nothing reaches an ad platform
The destination is still in test mode, the event type isn’t ticked, the visit carried none of that platform’s click or browser IDs, or consent was not granted.
Check the destination’s health and each delivery on Install events, then the attempt itself in Logs. Common problems
No sources, channels or campaigns in the dashboard
The organisation is on Free, which counts visits and installs without matching them.
Upgrade to Standard or Enterprise. Installs reported from then on are matched. Plan and usage
402 plan_limit
A plan limit was reached: install paths, websites, domains, members, destinations or log streams.
The response names the limit and its maximum. Remove one, or upgrade. Limits
429 rate_limited
Too many requests in a short window, from one client or for one website.
Wait the number of seconds in the Retry-After header, then retry. Limits
03Plans and billing
Plans, upgrades and invoices.
Plans belong to an organisation, not to a person. Its owner manages billing; every member sees the plan.
Free
$01 install path · counts only, no attribution
Standard
$99 per month1 install path · attribution and every destination
Enterprise
$499 per monthEverything in Standard · up to 10 install paths · log streams
Billed monthly through Stripe. Cancel anytime. Compare plans
How do I upgrade?
The organisation’s owner opens Plan and usage in the dashboard and picks Standard or Enterprise. Payment happens on Stripe Checkout, and the plan changes as soon as Stripe confirms it, usually within a few seconds.
Are installs from before the upgrade matched?
No. Free performs no matching of any kind. Attribution starts with installs reported after the upgrade; nothing reported on Free is matched later.
How do I change plan, cancel, update the card or get invoices?
From Plan and usage, the owner opens Stripe’s billing portal, which handles plan changes, cancellation, the payment card and invoices.
What happens when we move to a smaller plan?
Nothing is deleted. Install paths, destinations and log streams over the new plan’s limit are paused until the owner chooses which to keep; a paused install path is still counted but not attributed or delivered. Websites over the limit keep collecting, and members over the limit stay, but new ones can’t be added until you’re under it.
What happens past the monthly event quota?
Paid plans are never cut off: past the quota, data keeps flowing, the dashboard tells you, and there is no overage charge. On Free, events past the quota that month are counted but not stored.
Who can see and change billing?
Only owners start checkout or open the billing portal. Admins, members and viewers see the plan and its usage.
Which limits apply to our plan?
Every plan and service limit, with the error each one returns, is listed in the docs, and your organisation’s usage against them is on Plan and usage. Limits
04Security and privacy
Report a problem safely.
Report a security issue
Sign in and write to us below with the topic Security, or email founders@pilotprotocol.network. Describe what you found and how to reproduce it. The message and diagnostics of a request sent from this page are visible only to you and the CLItrail operator. Your organisation’s activity records that you sent a request, with its topic and website, but not its message or diagnostics.
Support never needs your API secrets, access tokens, service-account keys, webhook signing secrets or session cookies. If one was exposed, revoke it at its platform and paste the new one into the destination. Credentials are write-only and encrypted, in a store apart from the main database.
If you installed a tool or visited a website that uses CLItrail and want to use your privacy rights, contact that company first: they control the data. For data requests about CLItrail itself, email founders@pilotprotocol.network.
Sign in with Google or an email link. The first sign-in creates a free account for you and your organisation, so there is nothing to set up before you write.