RekomiRekomiBlogPricing
Rekomi Docs
Rekomi Docs
Welcome to Rekomi
API overviewAuthenticationOAuth 2.0Server-to-server trackingTracking script & window.RekomiTrack leads and signupsNo-code & non-Stripe checkoutsCustom domainConversion currencyCoupon code trackingSub-affiliate recruiting APIWebhooksZapierWhite-label embedMCP serverAPI reference
For developers
|Developers|

No-code & non-Stripe checkouts

Install the Rekomi tracking script for click attribution on a no-code platform, and record conversions via a native processor, the S2S API, or coupon codes.

Browser convert() was removed

Browser-side conversion firing (window.Rekomi.convert() and the q command queue) was removed — browser-only conversion tracking was unreliable. Record conversions via a native processor, the S2S API, or coupon codes instead. For the window.Rekomi JavaScript API (reading the referral / affiliate / campaign on page load), see Tracking script & window.Rekomi.

This is the path for no-code platforms whose checkout isn't a natively-tracked processor. It has two parts:

  • Clicks — paste the tracking script in your site's <head>. It captures the affiliate param (?via=, ?ref=, …), drops a first-party cookie, and registers window.Rekomi.
  • Conversions — record the sale via a native processor (automatic), the S2S API, or coupon codes. There is no browser-side conversion call.

Plan tier required: Starter or higher. Trial users (14-day free trial) accepted.

Works with these platforms

These platforms have step-by-step install guides in the Setup checklist and are pre-verified against this two-snippet recipe:

WordPress logo

WordPress

WPCode plugin in Code Snippets > Header & Footer.

Shopify logo

Shopify

Custom Pixel for clicks; track conversions via the order webhook to S2S. Shopify Payments has no direct Stripe Connect path.

Webflow logo

Webflow

Site settings > Custom code > Head code for the click script; track conversions via S2S.

Framer logo

Framer

Site settings > General > Custom Code > Start of <head> tag (Show Advanced).

Squarespace logo

Squarespace

Settings > Advanced > Code Injection > Header (Business plan or higher).

Wix logo

Wix

Dashboard > Settings > Custom Code > + Add Custom Code, applied to All pages.

Bubble logo

Bubble

Settings > SEO/metatags > Script/meta tags in Header.

Carrd logo

Carrd

Embed element with Location: Head (Pro Lite+) or site-wide head slot (Pro Plus).

Memberstack logo

Memberstack

Goes in the host platform's head (Webflow or custom HTML), not in Memberstack itself.

Outseta logo

Outseta

Same as Memberstack. Install in the host site alongside Outseta's own embed code.

Teachable logo

Teachable

Site > Code Snippets > Global Head Snippets (Builder plan+).

Podia logo

Podia

Site Settings > Analytics > Custom code > Website tracking code (footer-injected).

Thinkific logo

Thinkific

Settings > Site & app settings > Code & analytics > Site Footer Code.

Ghost logo

Ghost

Settings > Code injection > Site Header. Ghost Pro and self-hosted.

beehiiv logo

beehiiv

Loaded via Google Tag Manager (no arbitrary head HTML).

Kit (ConvertKit) logo

Kit (ConvertKit)

Per-landing-page Script element via Grow > Landing Pages & Forms.

Lemon Squeezy logo

Lemon Squeezy

Hosted checkout has no editable head — track conversions via S2S from the Lemon Squeezy webhook.

Vanilla JavaScript logo

Vanilla / custom HTML

Plain HTML + a script tag in your shared header partial.

Next.js logo

Next.js

App Router or Pages Router via next/script. SPA gotcha applies (see below).

React logo

React (Vite, CRA)

index.html head script for clicks; fire conversions from your backend via S2S.

Vue logo

Vue (Vite)

index.html head script. For Nuxt 3 use useHead in app.vue instead.

Don't see your platform? The script works on any site where you can paste an HTML <script> tag into the head. If your host strips <script> (some newsletter platforms do), use the S2S endpoint and fire conversions server-side from your fulfillment webhook.

How conversions are recorded

This page's script tracks clicks. Record the matching conversion through whichever path fits your stack:

PathBest forRefunds
Native processor (automatic)Stripe, Paddle, Braintree, or Shopify checkoutsAuto on refund / dispute
S2S API (reference)Anywhere you can run a server or fire a fulfillment webhookPOST /api/tracking/refund
Coupon codes (guide)Give each affiliate a unique discount code; nothing extra on your siteAuto when the order is refunded

There is no browser-side conversion call. If your platform can't run any server code or fire a webhook, coupon-code attribution is usually the simplest path.

Tracking free signups (leads)

Recording a sale and recording a lead are separate. For Stripe and Paddle, leads are captured automatically, with no code. For freemium / free-plan signups (no Stripe or Paddle object created) and the other processors, record the signup with Rekomi.convert({ email }), using the same email the customer will bill with, so a later upgrade is matched back to the lead and credited even when the click cookie is gone. See Track leads and signups.

Recognized attribution params

Rekomi reads any of these 16 industry-standard attribution query params natively. You don't have to configure anything; whichever convention your previous affiliate platform used keeps working out of the box:

?via= (Rewardful, Reditus, Dub Partners), ?ref= (Tapfiliate, AffiliateWP, UpPromote, Goaffpro, Friendbuy), ?fpr= (FirstPromoter), ?aff= (Affiliately, LeadDyno, Tolt), ?rfsn= (Refersion), ?a_aid= (Post Affiliate Pro), ?awc= (Awin), ?sscid= (ShareASale), ?cjevent= (CJ Affiliate), ?irclickid= (Impact), ?partner_key= (PartnerStack), ?affid= (Voluum / generic CPA), ?affiliate_id= (Friendbuy alt), ?affcode= (Cellxpert / generic), ?idev= (iDevAffiliate), ?mbsy= (Talkable).

Migrating from a platform not on this list? Add a custom param under Settings > Attribution in the dashboard. Up to 10 custom entries, each [a-z0-9_-]{2,32}. Custom params get priority over the defaults in resolution order. See the full migration guide for the matrix.

Install the script (<head>)

Paste this on every page of your site. The script registers window.Rekomi, captures the attribution param from the URL into a first-party cookie + localStorage, and POSTs the click to Rekomi.

<script async
  src="https://api.rekomi.com/api/v1/r/loader.js"
  data-program-id="{your_program_id}"></script>

If you have custom params configured in Settings > Attribution, your install snippet also gets a data-rkmi-params="..." attribute that the dashboard generates automatically. Copy the exact snippet from Dashboard > Settings > Tracking script (pre-filled with your real data-program-id and any custom params) rather than hand-editing the placeholder above. If you have a verified custom domain, the copied snippet loads from your own subdomain instead of api.rekomi.com.

The window.Rekomi object

The script registers window.Rekomi, exposing the referral slug plus the affiliate and campaign name on page load — so you can capture who referred a signup, client-side. See the full API (referral, affiliate, campaign, ready(), getReferral(), clearReferral()) in Tracking script & window.Rekomi.

Common gotchas

Cookie-blocking browsers (Safari ITP, Brave Shields): if the click cookie is rejected, attribution still works via localStorage (also first-party, with its own block rules). A custom domain recovers most otherwise-blocked clicks.

Single-page apps: window.Rekomi is set once on the first load and persists across client-side route changes. If you read the referral context from a component that mounts after a route change, use a ready() callback — see the SPA note.

Verifying installation

After pasting the script:

  1. Open Dashboard > Settings > Tracking script in Rekomi.
  2. Click Refresh under "Test installation."
  3. Visit your site with ?via=test on a URL to register a test click.
  4. Re-click Refresh — the test click should appear.

To verify end-to-end (click → conversion → commission), use your campaign's Activity tab ("Send test conversion") or your payment processor's test mode. If a test click doesn't register, hard-refresh (hosts cache HTML) and re-test in an incognito window (ad blockers filter trackers).

Lifting accuracy further: custom domain

The default snippet loads from api.rekomi.com, which content blockers can match on. Growth brands can swap the script host to a domain they control (e.g. affiliates.brand.com) via a custom domain. The script then loads first-party, sidestepping generic blocker rules and Safari ITP's third-party caps. The same domain also serves your affiliate signup pages, so one host covers both tracking and the portal. Realistic lift: +3-5 percentage points of conversions tracked.

Track leads and signups

Capture a free identified signup (an email tied to the referral) before payment, so a later sale is still credited to the affiliate even if the click cookie is gone. Automatic for Stripe and Paddle; optional for everything else.

Custom domain

Serve the Rekomi tracking script from your own subdomain so it loads first-party and bypasses tracker-blocking content filters.

On this page

Works with these platformsHow conversions are recordedRecognized attribution paramsInstall the script (<head>)The window.Rekomi objectCommon gotchasVerifying installationLifting accuracy further: custom domain