For trainers, coaches, and course creators
Course creators: the content that sells the course
You publish a video, send an email, host a webinar — and the month ends with a sales number. In between, nobody knows what did what. That is the only piece of information that tells you what to do next month.
The problem, as it actually happens
Four steps. None of them in the dark.
Your email tool knows its open rates. Your calendar knows its bookings. Stripe knows its payments. None of the three knows that Thursday's purchase came from the February podcast episode — because none of them can see both ends at once.
So you go on gut feeling: you keep the newsletter because you like it, cut the ad because it costs money, redo a webinar because the last one "went well." Three decisions, zero proof.
The same buyer, tracked end to end
- The link in the newsletterA Subtraq link under Tuesday's email button. The click is timestamped and filed under the "newsletter" channel.
- The Calendly bookingThe "Redirect to an external site" setting sends the guest through that link — the booking links back to the email that drove it.
- The course purchaseStripe sends the payment to Subtraq. The sale is matched to the person by email address, along with the amount.
- The reportWhat Tuesday's email brought in, in dollars, next to the video, the podcast, and the ad.
Between the first click and the sale, thirty days by default. Beyond that, the sale is recorded as unattributed and the report says so plainly: the product never invents a plausible origin.
The setting, tool by tool
One gesture, always the same: your tool already offers to send the person somewhere after they submit. Put a Subtraq link there — it counts the visit, then redirects to the intended page.
| Your tool | The setting, in its own words | Path recorded on |
|---|---|---|
| Calendly | Sous « After booking », choisissez « Redirect to an external site ». | 08/28/2026 |
| Cal.com | Activez « Redirect on booking ». | 08/28/2026 |
| Typeform | Choisissez « Redirect to URL ». | 08/28/2026 |
| Tally | Activez l'interrupteur « Redirect on completion ». | 08/28/2026 |
| Systeme.io | Choisissez l'action qui enregistre le contact, puis une redirection. | 08/28/2026 |
| Brevo | Dans « Redirect Options », ouvrez « Form redirect action » et choisissez « Link to a URL ». | 09/05/2026 |
Paths are taken from each tool's official documentation — the date is there because interfaces change, and a wrong path costs more than no guide at all. Two notes that save a search: at Typeform, post-submit redirect is restricted to the Plus plan and above, and in both Cal.com and Calendly the setting lives on the event type — a discovery call and a follow-up can carry different links and be read separately. Other connected tools.
The sale, not just the click
They paid. No more guessing.
Selling a course means collecting payment: the measurement has to stop at an amount, not a click. The payment arrives server-side, signed by Stripe. An amount posted from a browser is an amount anyone can write.
What the webhook rejects is as important as what it accepts: a missing or invalid signature, a zero amount — a free trial, a zeroed invoice — and an event with no email address, which would leave no one to match. A payment is counted once, even if Stripe replays it or announces it under two different event types.
An event destination
One event type checked — checkout.session.completed — and the Subtraq address pasted into the endpoint URL.
The key that starts with whsec_
Revealed on the webhook page, copied, pasted into Subtraq. That key is what authorizes it — the address alone grants nothing.
30 days
the default window between the first click and the sale
1
single Stripe event to check: checkout.session.completed
$0
the free plan: 2 workspaces, 10 links per month, 3,000 tracked clicks
Common objections
Four objections this industry always raises, and the exact answer to each.
"I don't code, and I have no one to do it for me."
None of the six settings in the table above requires a single line of code: you paste a link into a field that already exists. The only different gesture is Stripe's, and it means copying an address and a key from one screen to another. The principle in three steps.
"My course platform already gives me stats."
It counts what happens inside it: enrollments, completed modules, monthly revenue. It has no idea where the enrolled person came from — and it never will. That information is born before it arrives, at the moment of the click.
"A large share of my sales comes from word of mouth."
Then the report will say unattributed, and that will be the right answer. The rule is written into the engine: no identified click within the window, no invented origin. A report that manufactures a plausible origin is worse than an incomplete one — you would make decisions based on it.
"A webinar or a call isn't a sale."
No, but it is always what comes before one. A sign-up form connected to a Subtraq link turns every submission into an attributed lead: you know which content fills the room, then which content makes it buy. Both numbers sit side by side in the same report.
"What if I want to separate the discovery call from the course sale?"
See a live reportFrequently asked questions
Do I need to install a pixel on my sales page?
No. The settings on this page paste a link into an existing field, or an address from one tool to another. Nothing to install on your pages, nothing to get a developer to approve.
I use Typeform — does this work for me?
Post-submit redirect is restricted to the Plus plan and above at Typeform. Below that, Tally offers the exact same gesture with its "Redirect on completion" toggle, and its guide is written.
How does a Stripe payment find the right person?
By the email address in the payment event. If the event carries none, it is ignored and the report says so: no orphaned sale is written into your report.
What if the purchase comes three months after the first click?
The attribution window is thirty days by default. Beyond that, the sale is recorded as unattributed and appears as such. That is a deliberate choice: a blank is better than a false origin.
Can the same payment be counted twice?
No. Deduplication is based on the payment ID, not the event ID — that is the only key that holds when Stripe announces the same charge under two different event types.
Can the first click be replaced by a more recent one?
No. The first identified contact stays the reference, and nothing moves it. Other clicks by the same person are recorded alongside it, letting you reread the same data differently — never fabricate it.
Can I start without paying?
Yes, with no time limit: two workspaces, ten links per month, three thousand tracked clicks, and one short domain. Enough to measure one course and its full funnel.
Create your first free link
The next purchase will tell you what drove it. That is the only thing missing from a launch that works: the reason it did.
Create a free account