TEASEDocs
ProductsLinkQR codes

Read a QR code's funnel

See scans, visits, clicks, subscriptions, and revenue for one printed piece.

Every code's stats are computed live from the same attribution tables the rest of your reporting reads — nothing is pre-aggregated or stored on the code itself, so the numbers are always current as of the request.

curl https://app.tease.link/api/admin/qr/links.creator.com \
  -H "Authorization: Bearer $TEASE_API_KEY"

Returns every code on the domain, each with a stats object:

StatMeaning
scansScan events for this code specifically (recorded with button_id: __angel_qr__) — how many times the printed carrier was actually scanned.
visitsLanding-page visits carrying this code's source label — the scan's redirect landing.
clicksHuman button clicks on those visits (the scan event itself isn't counted here — this is what happened after the visitor landed).
subs / revenue_centsSubscriptions and gross revenue attributed to those clicks, via the click id joining to conversions — the same join the rest of Link's dashboards use.

How to read it

scans and visits should track closely — a big gap usually means bot/preview traffic hitting the scan path without a real visitor behind it (link-preview crawlers redirect but don't render a page). clicks, subs, and revenue_cents tell you whether the traffic a carrier drives actually converts, comparable code-to-code and against your other traffic sources since they run through the same pipeline.

If a number looks wrong

  • scans is 0 but you know it's been scanned — confirm the code is active and that you're reading the right domain; a scan of a disabled code still redirects the visitor but is never labelled, so it won't show up here at all (see Rename or disable a QR code).
  • A renamed code's history looks split — it shouldn't be: the source label is stamped once at creation and never changes when you rename the slug, so stats before and after a rename stay on the same code. If you're comparing against an old export keyed by slug rather than by code id, that's the mismatch.
  • subs / revenue_cents lag clicks — conversions can post after the click; re-check after the usual attribution window has passed rather than assuming the code under-converts.

What's next

On this page