Traqio.

SaaS & web app · This is you if

Your ads send people to your SaaS or web app, and you can't tell which campaign brings customers who pay.

For SaaS and web apps: from the ad click to the paying customer

Per campaign: sign-ups, how many became paying customers, and the revenue they brought — tied to the ad click, first-party.

Free up to 2,000 conversions a month, per product. No card, no call.

Reports
Example data
Sign-ups, paying customers and ROAS by campaign
Last 30 days
  • MetaRetargeting_blog
    1.16×

    Spend $380 · Sign-ups 64 · Paying 9

  • MetaLookalike_trial
    0.56×

    Spend $610 · Sign-ups 38 · Paying 7

  • TikTokFounder_story
    0.28×

    Spend $520 · Sign-ups 41 · Paying 3

  • Organic
    —

    Spend — · Sign-ups 112 · Paying 15

Break-even = 1.00×

Reading it: retargeting has already earned back its cost in first payments; the other two are still paying back — and every renewal keeps adding to their revenue.

Today

Without Traqio, it looks like this

  • Ad platforms report clicks and their own modelled conversions — not who signed up, even less who paid.
  • Your analytics tool sees the visit, then loses the click when the sign-up — or the payment — comes days later.
  • So budget follows cheap sign-ups, not paying customers.

How it works

Three steps, then you read the report

  1. 1

    Add the browser SDK

    One script keeps the ad click's id on your own domain, first-party.

    // In the page — keeps the ad click's id, first-party
    Traqio.init({ sdkKey: "YOUR_WEB_KEY" });
    
    // On your server, once, at sign-up
    await traqio.signup({ userId: user.id, trackId });
    
    // On the Stripe subscription — payments then come from Stripe
    metadata: { traqio_user_id: user.id }
  2. 2

    Report the sign-up, connect Stripe

    One server call at sign-up, with your user id and a secret key. Connect Stripe with a read-only key: every payment, renewal and refund arrives from there. Then Meta and TikTok for spend.

    Connects with

  3. 3

    Read sign-up → paid by campaign

    Sign-ups, paying customers and ROAS per campaign — and renewals keep crediting the campaign that brought the customer.

    Example data
    • Meta · Retargeting_blog1.16×
    • Meta · Lookalike_trial0.56×

What it costs

Free up to 2,000 conversions a month, then $0.04 each

  • A conversion is one attributed install, or one new user on a website.
  • Purchases, renewals and every other event are measured, never billed.
  • Every feature is on every plan — the plans differ in volume only.

Billing is not switched on during early access: nothing is charged today.

See full pricing

Example: 2,800 conversions this month

2,000
included
800 × $0.04
$32
Total
$32 this month

Questions before you start

How is a website conversion billed?

One new user is one conversion, exactly like one app install: the same counter and the same free allowance. Payments and every other event are never billed.

Do I have to report every payment from my server?

Not with Stripe. Connect it with a read-only key and put the user id in the subscription's metadata: payments, renewals and refunds arrive from Stripe. Without Stripe, one server call per payment does the same job.

Does a renewal months later still count for the campaign?

Yes. Every payment of that user — from Stripe or from your server — is revenue of the campaign that brought that customer, month one and month twelve.

What if the sign-up happens in another browser?

Then there is no click id, and the sign-up is counted as organic — never assigned to the nearest campaign.

Are website conversions sent back to Meta and TikTok?

Yes. The sign-ups and payments your server reports go to the Meta Conversions API and the TikTok Events API as website events, with the ad click's id, under the event id your pixel also fires with — so nothing counts twice.

The detailed answer, with sources

A web conversion is a new user of a website — a user id seen on that site for the first time, reported at sign-up — tied to the ad click that brought the visitor, through that click's own id carried from the landing URL to the site's backend. Traqio is a mobile measurement partner (MMP) for apps and websites: it attributes app installs, website sign-ups and the events that follow them to ad campaigns and reports return on ad spend, with per-conversion pricing published up front. For a SaaS or a web app, that means each campaign's sign-ups, the payments those users make for months after, and the return on the spend — deterministic, first-party, and on the free plan, because Traqio's plans differ in billed volume only.

The chain, from the ad click to the sign-up

Traqio ties a website sign-up to its ad click in four steps, and the click's own id travels through every one of them.

  • The click: a Traqio tracking link with a website destination records the click and opens the landing page with the trackID in its URL, as the traq_click parameter.
  • The landing: a small script on the page keeps the trackID in first-party storage on the site's own domain.
  • The sign-up: the site's backend creates the account, then reports it to Traqio with the user's id and the trackID, signed with a secret server key.
  • The join: Traqio binds that click to that user, once, and credits the campaign, ad set and ad of the last qualifying click before the sign-up.

Deterministic, not modelled

Deterministic attribution matches a click to a conversion using an identifier that is present on both sides, so the match is exact rather than inferred. On a website that identifier is the trackID: the id of one ad click, added to the landing-page URL and carried to the sign-up. No third-party cookie, no fingerprint and no advertising identifier is involved, and a sign-up that arrives without a trackID is counted as organic rather than assigned to the nearest campaign.

Only the site's backend can credit a campaign

The key in the page is public, because anyone can read a page, so it can record visits and events but can never tie a conversion to a click. Tying a sign-up to its click takes the secret server key, which only the site's backend holds, through a server SDK in the backend's own language. A click already bound to one user cannot be claimed by another user or by an app install.

Purchases follow the user, whatever page they pay on

A site that bills with Stripe reports nothing per payment: once its Stripe account is connected with a read-only key, each paid invoice, renewal and refund arrives from Stripe and is tied to the user whose id the backend put in the subscription's metadata as traqio_user_id — the id it reported at sign-up. A payment that names no user is recorded as unmatched revenue, never given to a user by guess. Without Stripe, the backend reports each purchase with the same user id. Either way the purchase is revenue of the campaign that acquired that user, deduplicated on its event id and its payment id. In Traqio's reports a campaign's web conversions are their own number, beside its installs and never inside them, and cost per web conversion is a metric of its own, so return on ad spend covers what the site earned as well as what the app earned.

What a website costs

In Traqio, a conversion is one attributed install in an app, or one new user of a website — a user id seen on that site for the first time; the events that follow are measured and reported but never billed, and organic installs are not billed. One install on mobile, one new user on the web: the site owner does not choose what triggers the bill, and Traqio bills an identity, never a visit or an event, so sending more events never raises it. The website uses the same counter, the same allowance and the same price as an app — 2,000 free conversions a month for each product, then $0.04 per conversion.

Where the chain breaks

The trackID lives in the browser that landed on the page, and the limits of website attribution follow from that.

  • A click inside an app's own browser followed by a sign-up in another browser arrives without its trackID, so that sign-up is organic.
  • Safari can clear storage written by a script after seven days on sites it classifies as tracking, so a trackID can expire sooner there.
  • A backend on a different domain from the page does not receive the cookie, so the sign-up form has to pass the trackID itself.
  • Only the conversions your server reports are forwarded to Meta and TikTok; events sent from the page with the public web key never are.
Is website attribution probabilistic?
No. The trackID is the id of the ad click itself; it travels from the landing URL to the sign-up in first-party storage on the site's own domain, and the site's backend reports it with the user's id. The conversion is tied to the exact click it names, and a sign-up that arrives without one is counted as organic, never assigned by similarity.
Does a website need a backend to be measured?
To credit a campaign, yes: the sign-up is reported by the site's backend, because the key in a public page must not be able to credit a campaign. The page itself only needs a small script, which keeps the trackID and can record visits and events.
Does a SaaS have to report every payment to Traqio?
Not when it bills with Stripe. The backend makes one call, at sign-up; Stripe, connected with a read-only restricted key, sends every paid invoice, renewal and refund, matched to the user through metadata.traqio_user_id on the subscription or the customer. Test-mode payments are shown and never counted, and a refund is recorded as its own negative entry.
Does a website conversion cost more than an app install?
No. One new user on a website counts as one conversion, exactly like one attributed install in an app, on the same counter: 2,000 free conversions a month for each product, then $0.04 per conversion, with no website add-on and no feature behind a higher plan.
What triggers billing on a website?
A new user id. The first time a user id Traqio has never billed appears on a site, that is one conversion, and that user is never billed again on that site. The site owner does not pick a billable event: purchases and every other event are measured and reported, never billed. The same rule holds in an app, where the billed unit is the attributed install.

Last updated 2026-11-13

See this report with your own numbers.

Create an account, declare your app or site, get your keys. Nobody will call you.

Free up to 2,000 conversions a month, per product. No card, no call.

Other cases

Use cases