Install on Thinkific
Paste the Rekomi loader in Thinkific's Site Footer Code under Settings > Code & Analytics for click capture, then record sales through your own Stripe account with lead capture, or a server-to-server relay on Thinkific Payments.
Thinkific's custom-code slot is the Site Footer Code field under Settings > Code & Analytics. It runs on your storefront and landing pages, which is exactly where affiliate clicks land; per Thinkific's docs it does not run inside the newer Course Player or Performance Checkout by default, and that does not affect click capture. The loader captures the affiliate click; the sale itself is recorded through your payment platform: your own Stripe account (plus lead capture for attribution) or a server-to-server relay on Thinkific Payments.
Install the tracking script
Step 1. In Thinkific admin, navigate to Settings > Site & app settings > Code & analytics > Site Footer Code.
Some legacy accounts show the path as Settings > Site & SEO > Site Code. Thinkific has been renaming this surface; either path leads to the same field.
Step 2. Paste the Rekomi loader in the Site Footer Code field:
<script async src="https://api.rekomi.com/api/v1/r/loader.js" data-program-id="YOUR_PROGRAM_ID"></script>The async loader runs from the footer just as it would from the head, so click capture behaves identically; footer placement has no performance downside. Copy the snippet with your program ID already filled in from Setup > Install in Rekomi.
Record the conversion
The loader above only captures the affiliate click, and a click alone does not attribute a sale. There is no Order Confirmation snippet to paste: the browser convert() call that older setups used for sales was removed, and today convert() records leads, which is part of the working path below. How the sale is recorded depends on your billing mode.
Stripe billing (your own Stripe account). If your own Stripe account processes payments (Settings > Payments), connect Stripe in Rekomi (Setup > Connect payment gateway, at /dashboard/setup/connect-sales) and sales, refunds, and cancellations record automatically. One scope note: the Stripe rail records subscription and invoice events, so products billed as real Stripe subscriptions (memberships, payment plans) always land; a course Thinkific charges as a bare one-time card payment generates no Stripe invoice and may not. Place a test order for each product type and check the Sales page; anything that doesn't appear needs the S2S relay described below, or a lead-based campaign instead. Crediting a first-time buyer takes one more piece: Thinkific's checkout cannot stamp Rekomi metadata onto the Stripe payment, so attribution relies on matching the checkout email against a lead recorded in the last 90 days. Capture that lead with window.Rekomi.convert({ email: "the-signup-email" }) from a page you control, or relay a signup webhook from your backend to POST /api/tracking/lead. See Track leads and signups.
Thinkific Payments (server-to-server). On Thinkific Payments, Thinkific is the merchant of record, so there is no Stripe account of yours for Rekomi to read. Record sales by subscribing to Thinkific's order.created webhook (Thinkific webhooks are typically created through its Webhooks API) and relaying each order from your own backend to Rekomi's server-to-server endpoint. See the server-to-server tracking guide for the payload fields and signature. Attribute each order by the referral you captured on the landing page and passed through with the order; without it the relay cannot credit an affiliate. S2S and a live Stripe connection are mutually exclusive: the endpoint returns 409 while Stripe is connected, so this path applies when Stripe is not.
Refund handling depends on your billing mode
Thinkific supports two billing modes.
Thinkific Payments (Merchant of Record). Thinkific is the merchant; refunds do NOT fire charge.refunded on your Stripe (because Thinkific is the seller, not you). To clawback commissions on refunds, subscribe to Thinkific's refund webhook (created the same way as the order webhook) and forward refund events to Rekomi's /api/tracking/refund endpoint with the matching externalEventId from the original conversion.
Stripe Connect billing. Your own Stripe processes payments. Refunds fire charge.refunded to Rekomi's Stripe webhook listener and the clawback is automatic.
To check your billing mode: Thinkific admin > Settings > Payments. Thinkific Payments is the default for newer accounts; Stripe Connect requires explicit setup.
Cross-domain setups
The captured referral persists in localStorage scoped to the exact origin where the click landed, plus a cookie on Rekomi's tracking host. The localStorage copy does not survive a move to a different hostname. So if your marketing site and your Thinkific school live on genuinely different domains (say, marketing on mybrand.com and the school on mybrand-courses.com), a click captured on the marketing site is not readable on the school domain.
The reliable fix: point affiliate links at the domain where signup and checkout happen, usually the Thinkific school itself, so the referral is captured on the origin that matters and the lead recorded there carries it. Installing the loader on both sites is still worth doing for coverage, but a referral captured only on the marketing origin will not follow the buyer across the hop.
The same advice holds when both sites sit under one registrable domain (mybrand.com and courses.mybrand.com): install the loader on each origin and send affiliate traffic to the one where the buyer converts.
Quirks worth knowing
The footer field skips the new Course Player and Performance Checkout. Per Thinkific's docs, Site Footer Code does not run there by default. That is fine for tracking: affiliate clicks land on your storefront and landing pages, where the field does run, so click capture is unaffected.
Thinkific coupons are invisible to Rekomi. Rekomi coupon codes only attribute when redeemed as real Stripe promotion codes at a checkout running on your Rekomi-connected Stripe. Thinkific's discount codes are platform-native and never surface to Rekomi, so creating a matching code in Thinkific does nothing for attribution. Use lead capture (own Stripe) or the S2S relay (Thinkific Payments) instead.
No <head> slot. Thinkific is rigid about where custom code goes; the Site Footer Code field is the only site-wide no-code slot. Rekomi's async loader works fine there.
Sales tax on relayed orders. If you relay Thinkific Payments orders over server-to-server, send the amount your commission is based on, and check the webhook payload to confirm whether the amount you pick up includes tax before you choose. Be consistent across every relayed order.
Troubleshooting
Click not captured. Confirm the loader is pasted in the Site Footer Code field and that the affiliate link lands on a storefront or landing page, where the field runs. The newer Course Player and Performance Checkout do not run the field, but affiliate traffic should not be landing there anyway.
No conversion is recorded after an order. Confirm your conversion path is wired up: your own Stripe is connected in Rekomi, or your Thinkific Payments order webhook is reaching your relay. The footer loader only captures the click; it does not record the sale on its own.
Refund did not clawback on Thinkific Payments. Thinkific Payments does not route refunds through your Stripe. Set up the Thinkific webhook relay to /api/tracking/refund (see "Refund handling" above).
Conversion recorded but no affiliate is credited. On your own Stripe: no lead with the buyer's email was recorded before checkout, or the buyer paid with a different email. On Thinkific Payments: the relay did not pass the captured referral through with the order. Verify the loader runs where the affiliate sent traffic and that the lead or relayed referral carries the same email the buyer checks out with.
Related
Install on Teachable
Paste the Rekomi loader in Teachable's Head Code Snippets for click capture, then record sales through your own Stripe account with lead capture, or a server-to-server relay on Teachable:Pay. Heads up that Teachable's head snippets don't run on the checkout subdomain, so affiliate links need to route through your marketing pages first.
Install on Ghost
Ghost Members bills through your own Stripe account, so a connected Stripe records every sale automatically. The head script in Code Injection captures the click, and a one-line lead capture on your signup form names the affiliate.