The Facebook or TikTok algorithm is a very diligent student, but it only learns from the examples you show it. If the platform sees only clicks, it will bring people who like to click. If it sees leads, it brings people who submit forms. If it sees approved sales, it brings people who buy. Sending conversions back to the ad platform — via Conversions API, Events API or offline conversions — is how you show it those examples.
Why send conversions back to the ad platform
In affiliate marketing the conversion does not happen on your site but in the affiliate network: you learn about it from a postback, sometimes days after the click, once the lead is approved. The ad account knows nothing about it. That leads to three problems:
- Optimizing for the wrong goal. The campaign runs "for clicks" or "for landing page views", and the algorithm brings cheap but useless traffic.
- Wrong stats in the ad account. You do not see cost per lead right in the ads and cannot turn off weak creatives based on platform data.
- No signal for scaling. Lookalike audiences and automated bidding strategies need conversion events.
Server-side conversion sending fixes all of that: the tracker gets a postback from the network and sends an event to the ad account with the platform's click ID.
click (fbclid / ttclid / gclid)
→ tracker stores the click and the platform ID
→ network sends a postback: lead or sale
→ tracker sends the event to the ad platform
How the tracker receives the network postback is covered in postback URL in affiliate marketing.
Ways to send conversions
| Method | Platforms | How it works |
|---|---|---|
| Postback to the source | Push, pop, native, many ad networks | The network gives you a URL; the tracker calls it with the network's click ID |
| Conversions API (CAPI) | Meta: Facebook, Instagram | The server sends an event with a pixel ID and access token |
| Events API | TikTok | The CAPI equivalent: pixel ID, token, event |
| Offline conversions via API | Google Ads | Upload via the API with the gclid |
| Offline conversions by file | Google Ads | A file with gclid, conversion name and time — manually or on a schedule |
Postback to the traffic source
The simplest option. A push or pop traffic network gives you a URL like:
https://tracker.example/conversion?click_id={clickid}&payout={payout}
…where {clickid} is the ad network's own click ID. You pass it into the ad link with the network's macro, store it in the tracker and insert it when sending. More on this kind of traffic in push and pop traffic.
Conversions API (Meta)
Conversions API is Meta's server-side channel for events. To send events you need a pixel (dataset) ID and an access token generated in Events Manager (how it ties in with macros and fbclid is covered in Facebook ads tracking). Each event contains:
- the event name:
Lead,Purchaseor a custom one; - the event time;
fbc— a value built from the click'sfbclid;- matching data: IP, user agent and, where available, hashed contact details;
- for a purchase, the value and currency;
- an event ID to deduplicate against the pixel.
A sample request body (simplified):
{
"data": [{
"event_name": "Lead",
"event_time": 1759312800,
"action_source": "website",
"user_data": {
"fbc": "fb.1.1759310000000.IwAR2Xk9vQ7mP3",
"client_ip_address": "203.0.113.10",
"client_user_agent": "Mozilla/5.0 ..."
}
}]
}
The more accurate the user data, the higher the Event Match Quality in Events Manager.
Events API (TikTok)
Same logic: pixel ID, access token, event and matching data. The key field is the ttclid from the ad link. Without it TikTok matches the event worse. How not to lose it along the way is covered in ttclid and Events API in TikTok.
Google Ads offline conversions
Google works with the gclid (and on part of iOS traffic with wbraid and gbraid; more in gclid, ValueTrack and offline conversions). In Google Ads you create a conversion action with "Import" as the source, and then upload conversions via the API or by file. The minimum set of file columns:
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
Cj0KCQjw8eTFBhCX,Lead,2026-09-08 14:32:00+03:00,0,USD
Cj0KCQjw1aBcDeFg,Sale,2026-09-08 18:05:00+03:00,24,USD
Uploads can be scheduled: Google fetches the file from a URL by itself. That is a good option if you do not want to deal with API keys. What gclid is and where it comes from is described in detail in fbclid, gclid, ttclid, yclid.
What to send: leads, hold or approval
The affiliate network reports a conversion several times: a lead, then an approval or a rejection. Which event to give the platform is a strategic decision.
| What you send | Pros | Cons |
|---|---|---|
| All leads | Lots of events, the algorithm learns fast | It also learns from junk and rejected leads |
| Approvals only | The platform looks for real buyers | Few events, and they arrive with a delay |
| Both, as different events | Flexibility: you pick the campaign goal in the ad account | You have to keep goal settings in order |
A separate issue is rejected leads. Most platforms cannot "take back" an event once sent, so if you sent a lead and the network later rejected it, the algorithm keeps counting it as a success. That is one more argument for sending approved sales as soon as their volume is enough to learn from.
Tip. If approvals in your vertical take several days and volume is small, start by optimizing for leads and send sales in parallel as a separate event. Once enough sales have accumulated, switch the campaign goal.
What each status means and why hold cannot be counted as revenue is covered in conversion statuses: lead, hold, approved, rejected, trash.
How to prepare the ad account to receive conversions
Before you turn on sending in the tracker, do the setup on the platform side. Without it events will go "into the void".
Meta
- In Events Manager create or choose a dataset (pixel) linked to the ad account.
- Generate a Conversions API access token in the dataset settings.
- Decide which standard events you will use: usually
Leadfor a form submission andPurchasefor a sale. - After the first events, check them in the test events tab and the dataset overview: did they arrive, did they match clicks.
TikTok
- In TikTok Events Manager create a pixel connected via Events API.
- Generate an access token.
- Choose events for optimization and check that they show as active after the first sends.
Google Ads
- Create a conversion action with "Import" as the source (offline conversions from clicks).
- Set the conversion window and attribution model.
- For API uploads, prepare access to the account; for file uploads, a schedule with the file URL.
- After a day or two, check the upload history: Google shows how many rows were accepted and why the rest were rejected.
Tip. Conversion action names in Google Ads must match exactly what arrives in the file or via the API, including letter case. A mismatch is the most common cause of the "conversion not found" error.
Common mistakes when sending conversions
No platform click ID. If the fbclid, ttclid or gclid was not stored in the tracker, the event either will not match or will match poorly. Make sure parameters are not lost in redirects.
Duplicates with the pixel. A pixel on the thank-you page plus a server event without a shared ID means double counting. Either use deduplication or pick one of the two.
Resending on a status change. The network sent "hold", then "approved", and both went to the platform as separate purchases. Sending should happen once per conversion and status.
Wrong time zone. Google Ads is sensitive to conversion time: if it is earlier than the click or has no time zone, the row is rejected.
Not checking after launch. You set it up, saw the first event, and forgot. A week later the token expired or someone recreated the pixel, and the campaign keeps "optimizing" without a signal. Every few days compare the number of conversions in the tracker and in the ad platform.
Value in the wrong currency. The payout is in euros but the event says USD — the platform miscalculates return and bids on distorted value.
A token pasted in plain text into the team chat. Access keys are access to the ad account. Keep them in a system where they are encrypted and not shown again.
Sending conversions in ArtisanClo
In ArtisanClo conversion sending is configured in the traffic source card and works for flows with the tracker on ("Tracker" and "Cloaking + Tracker" modes). Options:
- Postback to the source — the network gets its own click ID and the conversion status. You can choose which statuses to report. Sending happens once per conversion and status, so a hold turning into a sale will not create a duplicate.
- Meta, TikTok, Google Ads directly (from the Professional plan) — conversions go to your ad account using your keys: pixel ID and token for Meta and TikTok; account ID and a service account key from your own Google Cloud for Google Ads.
- Google Ads by scheduled file (from Professional) — no keys needed: paste the file URL into Google Ads ("Goals → Conversions → Uploads → Schedules"). The file includes leads and sales for 90 days on clicks with a
gclid.
Keys and tokens are stored encrypted and are not shown again after saving.
Where conversions come from: the affiliate network, an external tracker or your own site sends them to the "Conversions setup" section. Network statuses are mapped automatically (approved — sale, pending — hold, refund — rejected, fraud — trash). In the "Conversions" section each record has a click history: click data, what the network sent, status changes and sending to the ad platform — this shows whether the event went out.
On the Business plan there is the reverse direction too — spend import: every morning spend for the last 3 days is pulled from Meta, TikTok and Google Ads, and the campaign is matched to the flow by the campaign ID in the clicks. That way ROI is calculated from the actual amounts in the ad account. You can compare plans on the pricing page.
Setups for specific platforms are in the traffic source catalog, for example for Facebook Ads.
Summary
Sending conversions to ad platforms closes the loop: click → network postback → event to the platform → the algorithm learns from your buyers. Store the platform click ID, decide which statuses to send, and make sure one event never goes out twice. And to know whether the campaign became more profitable afterwards, calculate results correctly — see how to calculate profit and ROI and affiliate marketing metrics.



