Paste one script tag into Bubble's header script settings, keep the ?via= links your affiliates already share, and Qanary starts tracking through to your checkout — no plugin marketplace, no waiting on a review.
settings → seo/metatags → script in the header. that's the whole install.
However you're tracking referrals on Bubble today — a spreadsheet, a generic pixel, or nothing yet — attribution needs to survive ad blockers, the commission math needs to survive an audit, and the payout needs to go out on a rail you already use. Here's what one script tag adds:
Basic click tracking at best — no coupon-code fallback for ad blockers or podcasts, no fraud check before a commission is owed, and payouts mean a manual spreadsheet.
One script tag in Settings → SEO/metatags → Script in the header. Coupon-code fallback, fraud checks before commission, and payouts through Wise or PayPal — the same system whether you're on Bubble or anywhere else.
1. Paste the tracking snippet — Settings → SEO/metatags → Script in the header. It sets the
first-party attribution cookie when a visitor lands with
?via=AFFILIATE_CODE and records the touchpoint.
2. Carry the referral into checkout — if you run Stripe Checkout via a server action or the Stripe plugin, read Qanary.checkoutStamp() in the page workflow and send stamp.ref into client_reference_id (Stripe) or customData.qanary_ref (Paddle).
3. Verify — open your site with a test ?via=,
run a test-mode checkout, and confirm the conversion lands attributed — or ask
your coding agent to run the MCP diagnose_attribution tool.
<script src="https://app.qanary.cloud/qanary.js" data-qanary="YOUR_PROGRAM_SLUG" async></script>
Paste this exact tag into Settings → SEO/metatags → Script in the header, publish, and it's
live. Swap YOUR_PROGRAM_SLUG for the program slug from your
Qanary dashboard.
Reads ?via=AFFILIATE_CODE off the URL the moment a visitor lands
and records the touchpoint — no configuration beyond the program slug.
Feeds stamp.ref into your Stripe Checkout workflow action as client_reference_id, so a sale still traces back to the right affiliate.
Ask your coding agent to run diagnose_attribution and it walks
visit → identify → webhook → attribution → ledger, so a stalled conversion is
never a mystery.
The most common shape: a workflow action calls Stripe Checkout server-side. The snippet's stamp feeds straight into that call.
Gated content behind a Bubble membership plugin or user privacy rule — the snippet in the header keeps attributing independent of the access logic.
A Bubble marketing site linking out to a separate app for checkout. Keep ?via= on the links and the cookie carries the referral across.
Swap the old tracking snippet for Qanary's in the same header script field — existing ?via= links your affiliates already shared keep working.
| Capability | Tracking it yourself | Qanary |
|---|---|---|
| Setup time on Bubble | Custom dev project | ~10 minutes |
| Coupon-code fallback for ad blockers | No | Yes |
| Fraud checked before commission is owed | No | Yes |
| Falls back with no page to instrument | No | Yes, via coupon codes |
async,
so it never blocks page rendering while it sets the attribution cookie.
Settings → SEO/metatags → Script in the header, then deploy to live. The snippet needs to load on every page a visitor might land on with a ?via= link.
No — it loads with the async attribute, so it fetches in the
background and never blocks page rendering.
Read Qanary.checkoutStamp() in the same workflow that calls Stripe Checkout, and send stamp.ref into client_reference_id. See the Stripe Checkout recipe for the exact fields.
Yes. The tracking snippet runs independently of Bubble's privacy rules and membership logic, so it keeps attributing regardless of how you gate content.
Yes — point Claude Code, Cursor, or Codex at Qanary's llms.txt
and it can install the tracking snippet and wire a webhook from a single
prompt. See the AI agent page for the exact setup.
Join the waitlist now; when registration opens, wire your Bubble app in ten minutes.
Join the waitlist