Use links to record clicks, a JavaScript snippet if you want the fastest setup, and server-to-server calls when conversions must not depend on the visitor's browser. Most programs end up combining them: links and a snippet at the front, backend calls and billing webhooks behind them for anything that pays money.
Tracking sounds like one decision and is really three. How does a click get recorded? How does the signup get reported? How do payments get matched? Each question has more than one answer, and the answers carry different costs in setup time and in conversions quietly lost.
What does each method actually do?
Referral links. The partner's link records a click and sets a first-party cookie holding a click id. This is the front door of every program and needs nothing installed beyond the link itself. It records interest, not a result. A click proves someone arrived.
A JavaScript snippet. You paste a small script on your pages. It reads the stored click id and, when you call its signup function with the customer's email and your customer id, reports the conversion. In Affiliate Tabs you copy it from the settings page and call signup when a visitor becomes a customer. The call is idempotent on your customer id, so firing it twice does not create two customers.
Server-to-server (S2S). Your backend calls the platform's tracking API with a token. It sends the signup, a conversion, a transaction or a custom action, and passes the click id when you have it, or a partner key when the customer came through a code instead of a click. The browser is not part of this step.
A fourth path sits beside them: billing-provider webhooks. Stripe and similar providers tell the platform about each payment directly, which is how recurring revenue reaches the right partner.
Where does each one fail?
The snippet's weakness is the browser it runs in. A content blocker can stop it from loading. A page can render before the script does. A single-page app can swap routes without triggering it. A redesign can delete it. Each failure is silent: the visitor signs up, you are happy, and the partner never sees the conversion.
Server-to-server fails in a different way, through omission. The call is only as good as the data your server has. If your signup handler never saved the click id from the cookie, there is nothing to send. Plenty of teams build the API call correctly and forget the earlier step of capturing the id into the session or user record.
Links fail at the handoff. A cookie that expires, a visitor who changes devices, or an in-app browser that discards storage all break the chain between click and signup, and no conversion method downstream can repair a click id that was never kept. That gap is why coupon codes matter, which we cover in when coupon code attribution beats links.
Webhooks fail on matching. A payment arrives with an email but your records have a different one, or the customer was never told to the platform in the first place. The better platforms hold those events in a queue for manual linking instead of discarding them.
How do you choose?
Start from what the commission pays on.
If you pay a flat amount per free signup, the snippet is probably enough to begin. The cost of a miss is small, the volume matters more than any single record, and the setup takes minutes.
If you pay a percentage of payments, put the payment itself on webhooks from day one, and report the signup from your backend. Money should not hinge on whether a script loaded in a stranger's browser.
If the sale is sales-led, with a form, a call and a contract signed weeks later, links and snippets matter less than capturing the partner at the lead stage. Look at how deal registration works; the cookie is a poor tool for a 90-day enterprise sale.
If you have no developer at all, begin with links, the snippet and a billing connection, and plan to move signups to S2S once someone has time. Do not postpone launch for it.
What does a combined setup look like?
Here is a setup for a SaaS product with self-serve signup, built in stages.
- Day one: partners get links. Your site has the snippet. The billing provider is connected, so every payment becomes a transaction on the matching customer.
- Week two: your signup handler saves the click id from the cookie onto the new user record and in the billing customer's metadata, then calls the tracking API from the backend. The snippet is still there; the API call is the one you trust.
- Later: each partner also gets a coupon code, so purchases that start on one device and finish on another still land.
Because both the snippet and the API call carry the same customer id, the platform treats them as one customer. You are not double-paying; you are making sure one path survives when the other does not.
In Affiliate Tabs, the options listed above are all available: links with a first-party cookie, the snippet, the server-to-server API with a tracking token, billing-provider webhooks and CSV import. If a payment arrives that cannot be matched, it waits in a queue where you can link it to a customer by hand.
What should you test before launch?
Whichever mix you choose, run one end-to-end test on the real signup flow. Click a partner link in a clean browser window, sign up with a throwaway address, and pay with a test card if your provider has a test mode. Then check three places: the click exists, the customer shows the right partner, and the payment became a commission. Do it again on a phone, because a surprising number of signup forms break on mobile in ways that never show up on a desktop.
Repeat the test whenever someone changes the signup page. The most common tracking outage is a harmless-looking redesign that drops the snippet or renames a form field, and the first sign of it is usually a partner asking where their signups went. If you want the background on how the pieces fit, how affiliate link tracking works walks through the whole chain.
Common questions
- What is server-to-server tracking?
- Your backend sends the conversion directly to the tracking platform, with no browser involved. When a customer signs up, your server calls an API and includes the click id it saved earlier. Because nothing runs in the visitor's browser, blockers and cookie settings cannot interfere with that step.
- Do I need a developer to track affiliate conversions?
- Not for a first version. Links plus a pasted snippet need no real development, and a billing-provider connection is configuration. Server-to-server calls do need a developer, usually for an afternoon, and they are worth it once commissions are meaningful.
- Can I use more than one tracking method at once?
- Yes, and it is the common setup. Methods report the same customer, and the platform deduplicates on your customer id so one signup is not counted twice. Having a second path means a failure in one does not lose the conversion.
- Which method is hardest for a partner to cheat?
- Server-to-server and billing webhooks, since the data comes from your systems and not the visitor's browser. Client-side snippets can be spoofed or triggered artificially. Fraud checks on top matter regardless of method.
