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