Skip to content
Back to Academia

Affiliate programmes: CPA networks, referrals and paying for results

04.12The digital ecosystem
On this page

An online analytics school bought a paid post in a Telegram channel for marketers for 50,000 ₸ and got three course payments. The course costs 25,000 ₸ and the school keeps 15,000 ₸ from each payment, so the post lost 5,000 ₸. Now two people are writing to the owner: the admin of the same channel is up for a second post, and a CPA network is offering leads at 1,500 ₸ under the slogan "pay only for results". The owner asks whether to move every partner to paying for results, so the school stops taking risks. The figures in this lesson are made up.

A creator shows the promo code АВТОР, and two orders came through it: 042 fulfilled, 043 returned. The code tied both orders to the partner; whether each one earns a payout is up to the commission terms.
A creator shows the promo code АВТОР, and two orders came through it: 042 fulfilled, 043 returned. The code tied both orders to the partner; whether each one earns a payout is up to the commission terms.

How an affiliate programme differs from buying ads

When the school buys a post at a fixed price, as with bloggers, it pays before it sees any result, and all the risk is on the school. In an affiliate programme, the partner is paid for an action agreed in advance: a lead, a payment, an app install. That's where CPA networks get their name: cost per action. The risk moves to the partner, and so does the decision about where and how your offer is shown. The less you can see of where people came from, the more depends on the rules in the contract.

TypeWho brings peopleWhat they're paid forMain risk for the school
CPA networkThe network's publishers: websites, social pages, mailing lists, their own adsA rate per lead or per paymentYou can't see where the traffic comes from, and leads can be fake
Partner linkA channel admin, a blogger, an expertA commission on payments, sometimes plus a fixed partThe partner gets paid for people who would have bought anyway
Referral programmeStudents and graduatesA bonus for a friend who paid for the courseThe "friend" turns out to be the student on a second number

How much you can pay a partner

The ceiling on a payout is the contribution from a sale: the school keeps 15,000 ₸ from a course, and everything that goes to the partner comes out of that. Pay 15,000 ₸ per sale and the school breaks even, and that's only if those sales wouldn't have happened without the partner.

The ceiling per lead is lower by as many times as there are more leads than payments. The school's weekly report shows 65 leads and 15 payments, 23%, so an average lead is worth no more than 15,000 × 15 / 65 ≈ 3,460 ₸ to the school. The network's 1,500 ₸ rate pays off if at least one in ten of its leads turns into a payment (1,500 / 15,000). At the school, almost one in four does, but whether the network's leads are like the rest, nobody knows in advance, the network included.

With the channel admin, the school agreed a mixed deal: 20,000 ₸ for the post plus 5,000 ₸ for each payment within 30 days through his link or a new code, DIGEST2 (DIGEST stays with the first post). Here's what the school keeps after paying out, depending on the number of payments:

Payments from the postFixed 50,000 ₸20,000 ₸ + 5,000 ₸ per payment
2−20,000 ₸0 ₸
3−5,000 ₸+10,000 ₸
6+40,000 ₸+40,000 ₸
8+70,000 ₸+60,000 ₸

At six payments the two deals are equal. Below that, the mixed deal is better for the school; above it, the fixed price is. The admin does the sum from the other side: if he's sure there will be more than six payments, the mixed deal suits him better; if he has doubts, the fixed price does. That's why a mixed deal works when nobody knows how many payments there will be: the risk is shared, and both sides can see in advance who wins at which result.

Attribution rules in the contract

Paying for results only works if both sides understand whose result it is in the same way. Before launch, the contract sets out six points:

  1. The result. A course payment in full, meaning payments minus refunds on that lead, not the lead itself. A student can get a refund within the first 14 days, so a payment counts for the partner if there was no refund in that time, and payouts go out once a month for payments older than 14 days.
  2. The link to the partner. A link carrying the partner's tag that was saved in the CRM along with the lead, or their promo code. If a lead has one partner's link and another partner's code, the payment goes to the code's owner: the person typed the code themselves.
  3. The window. How many days after a click a payment still counts for the partner; the school chose 30. Safari deletes cookies written by a site's script after 7 days without a visit to the site (WebKit's rules), so on an iPhone the window can close sooner. A promo code doesn't depend on that.
  4. Overlaps. What happens if, before paying, the person also clicked the school's own ad or another partner's link.
  5. Bans. Ads on the school's name in search, incentivised traffic (people paid to submit the form), promo-code websites, spam, and texts the school didn't provide or approve: by default the school is responsible for an ad's content (Article 20(1) of the Law "On Advertising"), even if a network publisher wrote the post. Payments from banned sources earn the partner nothing, and the school can ask where the traffic came from.
  6. Reporting. The partner sees the status of each of their leads and the reason for any rejection, in a report or as a postback, an automatic request to their server.

A lead is a person's name and phone number, which makes it personal data. If a network publisher collects it on their own page, the consent must say who is collecting the data and that it will be passed to third parties (Article 8(4)(1) and (4) of the Law "On Personal Data and Their Protection", as amended up to 14 September 2026), and it's safer to name the school outright. The data is stored in a database located in Kazakhstan (Article 12(2)). In the partner's report, show the status by lead number, without the phone: a rejection reading "number already in the CRM" tells them this person is your customer. How to set up the consent and the data transfer is for a lawyer to decide.

The partner link is tagged using the UTM scheme the same way as a paid post, only with utm_medium=affiliate: the platform as the source, the same campaign as in other channels, and the partner ID in utm_content. For GA4's Affiliates channel group, utm_medium=affiliate alone is enough (default channel group rules), and in the CRM the tags travel with the lead and become the basis for the payout. For the second post in the channel, the link is now:

https://example.com/course?utm_source=telegram&utm_medium=affiliate&utm_campaign=course_start&utm_content=marketing_digest

Test the overlaps clause on a case that will happen sooner or later. On the 10th, someone tapped the link in the channel; on the 19th they found the school on Google by name, clicked an ad and paid. The school's rule: the payment goes to the admin, because his click is within the 30-day window and no other partner came after it, and the school's own ads don't cancel a partner. In GA4 the session in which the person submitted the form will come from paid search (google / cpc), and the Google Ads account will record the conversion too. Add up what the partner and Google Ads each claim and you get more than the payments in the CRM, which is fine as long as you remember that attribution models share out credit rather than find the cause. You could also decide the other way, so a click on the school's ad cancels the commission. What matters is that the rule is in the contract before the first payment.

CPA network: a cheap lead and an expensive payment

The network agreed to a test: two weeks, 1,500 ₸ per lead, and no payout for a lead whose number is already in the CRM, is a duplicate or doesn't exist.

MetricValue
Leads from the network100
Rejected under the contract18
Accepted and paid for82, that's 123,000 ₸
Answered the manager35
Paid for the course within 30 days of the lead4
Lead to payment5%
Cost per payment30,750 ₸
Contribution after paying the network−63,000 ₸

At the school's 23%, 82 leads would have produced about 19 payments. Four is so far from that that chance can't explain the gap: the network's leads turn into payments less often than those from other channels. The table can't say why. The leads themselves give hints: 29 of the 82 came in between 1 and 5 a.m., and 41 came from a single placement inside the network, whose number (sub ID) the network passes in its report. You go through these leads the same way as spam leads from ads: by time, repeats and who picked up the phone.

One lead in twenty turned into a payment, while the rate only pays off at one in ten: for this network a lead is worth 15,000 × 4 / 82 ≈ 730 ₸, half the rate. The school offered the network a different model, 5,000 ₸ per payment with the same 14 days for refunds. The network may say no, and then its leads are more than the school can afford.

Fraud: fake results and stolen ones

Fraud in affiliate programmes comes in two kinds, just as in mobile advertising. In the first there's no result at all: leads come from bots, from people paid to fill in the form, or from the partner using bought numbers. Paying for something a bot can't reach protects you here: a course payment, not a lead.

In the second the result is real, but the partner claims it. A promo-code website publishes DIGEST2, and someone who has already decided to buy the course searches for the school's promo code and finds it there. A partner buys ads on the school's name and intercepts people who were searching for it anyway. A partner's script drops cookies on people who never clicked their link (cookie stuffing). Paying per sale doesn't help here: the sale is real, only the person getting paid for it is wrong. Two signs help you notice:

  • the share of payments with a partner's code but without their link has gone up: the code has leaked to promo-code sites;
  • a partner's leads turn into payments noticeably better than everyone else's, and the people who come had searched for the school by name just before.

A partner like that costs more than their rate. If the code leaked and half the payments with it would have happened without the admin, 5,000 ₸ per payment becomes 10,000 ₸ for every payment he actually added.

A referral programme has its own fraud: a student invites themselves from a second number, or splits the bonus with a friend who would have bought anyway. So the bonus is paid after the same 14 days, only for a number that wasn't in the CRM, and with a monthly cap per student.

So here's the answer for the owner: you can move partners to paying for results if the result is a course payment, the attribution rules are in the contract, and someone keeps an eye on traffic sources. The risk stays, only in another form: instead of a post that flops, the school now risks overpaying for sales that would have happened without the partner.

Labelling affiliate posts

What follows summarises the rules on adilet.zan.kz and isn't legal advice. As of 13 October 2026, the Rules for Labelling Online Advertising (Order No. 59-НҚ) have one edition, dated 16 February 2024; the Law "On Online Platforms and Online Advertising" is as amended up to 2 March 2026, and the Law "On Advertising" up to 17 May 2026.

A partner's post with a link to the school is still an ad, even if they're only paid per sale. The Rules for Labelling Online Advertising require a blogger's ads placed "on a commercial and (or) contractual basis" to be labelled, and they name links to the advertiser's website or accounts outright (clause 3(3)). The admin runs his channel on Telegram, and the Rules exempt ads in messengers (clause 6(1)). Whether that covers public channels isn't stated outright, just as with Telegram ads, and that's a question for a lawyer. But even without a label, an ad must be recognisable (Article 6(1) of the Law "On Advertising") and must name the sponsor (Article 21(1) of the Law "On Online Platforms and Online Advertising"). So the school asks the admin to add the label and name the school on Telegram too. Students who recommend the school openly for a bonus should label their posts as well: such a post can turn out to be an ad.

Meta asks for the paid partnership label on content with an affiliate link too, and under its rules tagging the brand in it is optional (labels on paid partnership posts). Kazakhstan's law asks for more: sponsored content must say who the sponsor is (Article 21(1)). It's safer to treat a partner's post as sponsored content, so the partner names the school in the text even if the label doesn't.

For the content and language of an ad, the Law "On Advertising" holds the advertiser liable unless the ad producer or distributor is proven to be at fault (Article 20(1)). So the school gives partners ready-made texts or approves what they write themselves, and "I took this course" is written only by someone who did: reviews in sponsored content must be genuine and verifiable (Article 21(3)).

Exercise: affiliate terms for your own project

A business that has already been offered a CPA network or a share of sales works best; if there isn't one, use your own project.

For the school it came to 15,000 × 15 / 65 ≈ 3,460 ₸ per lead, and the deals are equal when 50,000 = 20,000 + 5,000 × n, that is, at n = 6. If you have no way of knowing what share of leads turn into payments, don't pay per lead: pay per payment until you have at least a month of data on that partner. Without the partner ID on the test lead's record, don't launch the programme: otherwise every payout will have to be proven with screenshots from the partner's dashboard.

Video: the creator and the affiliate model

Influencer Affiliate Marketing: Tips for Building an Effective Strategy - Influencity

Need help applying this to your analytics? Discuss your project with Goodlabs →