Integrations — Bubble

Affiliate tracking for your Bubble app. One snippet, ten minutes.

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.

Beyond Bubble's built-in tools

Bubble apps can track referrals. Coupon fallback and fraud checks are the hard part.

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:

Tracking it yourself

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.

Qanary

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.

How it works

Paste, stamp, verify. Three steps.

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.

header script · bubble
<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.

What the snippet does

One tag. Three jobs.

Sets the attribution cookie

Reads ?via=AFFILIATE_CODE off the URL the moment a visitor lands and records the touchpoint — no configuration beyond the program slug.

Stamps your Stripe workflow

Feeds stamp.ref into your Stripe Checkout workflow action as client_reference_id, so a sale still traces back to the right affiliate.

Verifiable end to end

Ask your coding agent to run diagnose_attribution and it walks visit → identify → webhook → attribution → ledger, so a stalled conversion is never a mystery.

Common Bubble setups

Whatever workflow runs your checkout.

Bubble → Stripe Checkout workflow

The most common shape: a workflow action calls Stripe Checkout server-side. The snippet's stamp feeds straight into that call.

Bubble + a membership plugin

Gated content behind a Bubble membership plugin or user privacy rule — the snippet in the header keeps attributing independent of the access logic.

Marketing page, app elsewhere

A Bubble marketing site linking out to a separate app for checkout. Keep ?via= on the links and the cookie carries the referral across.

Migrating from another tool

Swap the old tracking snippet for Qanary's in the same header script field — existing ?via= links your affiliates already shared keep working.

At a glance

See it side by side.

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
Why this beats a spreadsheet

It works the day you publish.

FAQ

Fair questions.

Where exactly does the snippet go in Bubble?

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.

Does the snippet slow down my site?

No — it loads with the async attribute, so it fetches in the background and never blocks page rendering.

How does attribution survive a Stripe Checkout workflow action?

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.

Does this work with Bubble's built-in user privacy rules?

Yes. The tracking snippet runs independently of Bubble's privacy rules and membership logic, so it keeps attributing regardless of how you gate content.

Can an AI agent install this for me?

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.

Go deeper

Everything you need to start tracking.

Paste the snippet. Start tracking tonight.

Join the waitlist now; when registration opens, wire your Bubble app in ten minutes.

Join the waitlist