RekomiRekomiBlogPricing
Rekomi Docs
Rekomi Docs
Welcome to Rekomi
Quickstart for brandsPlans and trialsIntegrationsStripe Connect (sales tracking)Organization settingsTeam managementNotifications
Install tracking

Payment platforms

Install on StripeStripe Marketplace appInstall on PaddleInstall on BraintreeInstall on ShopifyInstall on Lemon SqueezyInstall on ChargebeeInstall on PolarInstall on RecurlyInstall on GumroadInstall on CreemInstall on Dodo PaymentsS2S API (any gateway)

Membership and course platforms

Install on MemberstackInstall on OutsetaInstall on PodiaInstall on TeachableInstall on Thinkific

Newsletter and creator platforms

Install on GhostInstall on beehiivInstall on Kit (ConvertKit)

Site builders

Install on WordPressInstall on WebflowInstall on FramerInstall on SquarespaceInstall on WixInstall on BubbleInstall on Carrd

Frameworks

Install on Vanilla JavaScriptInstall on Next.js App RouterInstall on Next.js Pages RouterInstall on React (Vite, CRA, Remix)Install on VueInstall on RailsInstall on Django

Campaigns and commissions

CampaignsCommission modelsPay per click or lead (CPC & CPL)Coupon-code attributionSub-affiliate recruitingTracking and attribution

Affiliates

Recruit affiliatesManage affiliatesAI co-pilotApply to the curated network

Money flow

SalesPayoutsMulti-currencyTax formsReports

Email

Sending domainBroadcasts
For brandsInstall tracking
|Brands|

Install on Thinkific

Use Thinkific's Site Footer Code (not Header) so the head script runs on the Course Player. Conversion fires on the Order Confirmation page via a Liquid block.

Thinkific logo

Thinkific's install has one counterintuitive twist: the head script goes in the Site Footer Code field, not the Site Header Code field. Thinkific's Course Player (where students actually take courses) does not run header scripts reliably; the footer field fires on every page including the Course Player. Conversions fire on the Order Confirmation page via a Liquid block.

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 head script in the Site Footer Code field (NOT the Site Header Code field):

<script>
  (function(){
    var s=document.createElement('script');
    s.src='https://js.rekomi.com/v1/rekomi.js';
    s.async=true;
    s.dataset.programId='YOUR_PROGRAM_ID';
    document.head.appendChild(s);
  })();
</script>

The script self-injects into <head> once Thinkific renders the footer code, so first-party cookie behavior is identical to a header install. Rekomi's loader is async; footer placement has no performance downside.

Fire the conversion on the Order Confirmation page

Thinkific has a dedicated field for post-purchase code that fires on the Order Confirmation page after every successful checkout.

Step 1. In Thinkific admin, navigate to Settings > Order & Tax > Order Confirmation.

Step 2. Find the Code on confirmation page field. Paste the convert snippet:

<script>
  window.Rekomi && window.Rekomi.convert({
    external_event_id: '{{order_number}}',
    amount_cents: Math.round(parseFloat('{{order_total}}') * 100),
    currency: 'USD',
    customer_email: '{{order_email}}',
  });
</script>

Thinkific's {{order_total}} Liquid placeholder is a decimal (e.g., "49.00"), not cents. The Math.round(parseFloat(...) * 100) converts it to cents at render time on the client. Save.

The external_event_id uses order_number so retries and reloads of the confirmation page do not double-credit. Rekomi de-dupes on this field.

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 (Settings > Webhooks) and forward refund events to Rekomi's /api/tracking/refund endpoint with the matching external_event_id 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 SSO setups

If your marketing site is on a different domain from your Thinkific school (e.g., marketing on mybrand.com, school on courses.mybrand.com), the affiliate cookie set on mybrand.com is not readable on courses.mybrand.com (different effective domain). Install the Rekomi head script on BOTH:

  • On mybrand.com: standard install in the marketing site's <head>.
  • On courses.mybrand.com: the Thinkific Site Footer Code install above.

The two installations are independent. The click from the marketing site sets a cookie there; when the buyer crosses to the Thinkific school domain, the cookie does not survive (cross-domain limitation). Rekomi recovers attribution via email-matching on the Order Confirmation conversion: the email from {{order_email}} is matched against the affiliate's recent clicks, and the most likely affiliate is credited.

For tight, cookie-only attribution across domains, run the marketing site as a subdomain of the Thinkific domain (or vice versa) so the cookie effective domain covers both.

Quirks worth knowing

Site Header Code is the wrong field. This is the single most common install bug. The Course Player (courses.yourdomain.com/courses/...) does NOT run scripts from the Site Header Code field reliably. The Site Footer Code field is the only place that works site-wide. Triple-check you pasted in the footer field.

Decimal vs cents on order_total. Thinkific's Liquid placeholder returns a decimal string ("49.00"), not an integer in cents. The parseFloat * 100 round-trip is required. Hard-coding amount_cents: 49 instead would give you a $0.49 commission.

Single field for all courses. Unlike Teachable (which has per-course Thank You pages), Thinkific's Order Confirmation page is global. The convert snippet fires on every successful order regardless of which course was bought. No per-course configuration.

Tax inclusion. {{order_total}} includes tax by default (it is the total the buyer paid). If your commission is on net excluding tax, switch to {{order_subtotal}} (decimal), apply the same parseFloat * 100 conversion.

No <head> slot. Thinkific is rigid about where custom code goes. There is no "paste in head" option; the Site Footer Code field is the only no-code option. Rekomi's async loader works fine here.

Troubleshooting

Click cookie not set on the Thinkific Course Player. You installed in Site Header Code instead of Site Footer Code. Move the snippet to the footer field.

Conversion does not fire after an order. Check the Order Confirmation page Code field has the convert snippet (not just the header field). Both fields are required: footer for the head script, Order Confirmation for the convert event.

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).

Customer email matches but no affiliate is credited. The affiliate cookie was missing and the email-matching fallback did not find a recent click. Verify the head script is installed on whatever page the affiliate sent traffic to (marketing site or Thinkific storefront).

Related

  • JavaScript pixel reference
  • Tracking and attribution overview
  • Refund handling

Install on Teachable

Head snippet for click capture, plus a Liquid block on each Thank You page for the conversion event. 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 + Stripe Connect handles the conversion fire automatically. The head script in Code Injection captures the click. Optional Handlebars block fires a backup convert on the /portal/ redirect.

On this page

Install the tracking scriptFire the conversion on the Order Confirmation pageRefund handling depends on your billing modeCross-domain SSO setupsQuirks worth knowingTroubleshootingRelated