This article will cover the following:
How Click Tracking Works
Every time a visitor clicks your tracking link, CAKE records the event before redirecting to the destination. This happens in milliseconds and gives affiliates and advertisers a shared, reliable record of all traffic.
- The visitor clicks the tracking link. CAKE logs the click and captures timestamp, device type, browser, IP address, and any custom sub-IDs.
- CAKE checks the click against campaign traffic filters — geography, device, duplicate-click rules.
- A unique click ID (also called transaction ID or tid) is generated and stored. This ties any later conversion back to this specific click.
- The visitor is redirected to the offer page. From their perspective the process is seamless.
Tip:
Affiliates can append sub-ID parameters (s1–s5) to tracking links to track which placements or creatives are driving results.
Affiliates can append sub-ID parameters (s1–s5) to tracking links to track which placements or creatives are driving results.
Postback URLs vs. Pixel Tracking
| Method | How it works | Best for | Requires JavaScript? |
|---|---|---|---|
| Postback URL (S2S) | Your server sends an HTTP request directly to CAKE when a conversion occurs. | Mobile apps, server-side confirmation pages, high-volume campaigns. | No |
| Conversion Pixel | A tiny image or JS snippet on your thank-you page fires in the visitor's browser. | Standard web pages with an accessible confirmation page. | Image pixel: No. JS pixel: Yes |
Note:
Postback URLs are generally more reliable — not affected by ad blockers, browser privacy settings, or visitors who close the page early.
Postback URLs are generally more reliable — not affected by ad blockers, browser privacy settings, or visitors who close the page early.
Setting Up a Postback URL
- Log in and navigate to Offers. Open the offer you want to configure.
- Click the Tracking tab within the offer settings.
- Copy the Postback URL shown on screen.
- Replace the REPLACE placeholder with the dynamic click ID your system stored at click time.
- Optionally append &amount=SALE_AMOUNT if your offer pays a percentage of sale.
- Configure your server to make an HTTP GET request to this completed postback URL on each qualifying conversion.
- Test it: complete a test conversion, then check Reports → Conversions to confirm it was recorded.
Tip:
The click ID is typically passed in the original tracking link as a URL parameter — e.g.
The click ID is typically passed in the original tracking link as a URL parameter — e.g.
?s1={'{'}clickid{'}'}. Check with your network for the exact parameter name.Adding a Conversion Pixel
- Open the offer in CAKE and go to the Tracking tab.
- Copy the conversion pixel code snippet — available as an image tag or JavaScript.
- Paste the pixel into the HTML of your confirmation or thank-you page, before the closing
</body>tag. - Make sure the pixel fires only on genuine conversions — not on every page load.
- Test by completing a test conversion and confirming it appears in your CAKE conversion report.
Conversion Statuses
| Status | What it means | Who can change it |
|---|---|---|
| Approved | Valid; included in payouts. | Advertiser or network admin |
| Pending | Recorded but not yet reviewed or confirmed. | Advertiser or network admin |
| Rejected | Reviewed and deemed invalid. Not paid out. | Advertiser or network admin |
| Scrubbed | Removed automatically by fraud filters or campaign rules. | System or network admin |
Caution:
A high Rejected or Scrubbed rate signals a traffic quality issue. Reach out to your network account manager to investigate before continuing to run traffic.
A high Rejected or Scrubbed rate signals a traffic quality issue. Reach out to your network account manager to investigate before continuing to run traffic.
API: Tracking & Conversion Endpoints
Record a Conversion
GET /api/2/conversion.json
| Parameter | Type | Required | Description |
|---|---|---|---|
| click_id | string | Yes | The unique click ID generated at click time. |
| offer_id | integer | Yes | The CAKE offer ID associated with the conversion. |
| payout | decimal | No | Override the affiliate payout for this conversion. |
| revenue | decimal | No | Override the advertiser revenue for this conversion. |
| unique_id | string | No | Your system's unique transaction reference for deduplication. |
| order_id | string | No | Order ID from the advertiser system. |
| adv1–adv5 | string | No | Custom sub ID fields 1–5. |
Sample request
GET https://yourdomain.cakemarketing.com/api/2/conversion.json
?api_key=YOUR_API_KEY
&click_id=abc123xyz789
&offer_id=12345
&payout=5.00
&revenue=12.00
&order_id=ORD-98765
&unique_id=TXN-00112233Sample response
{
"request_status": "Success",
"conversion_id": 4456789,
"click_id": "abc123xyz789",
"offer_id": 12345,
"payout": 5.00,
"revenue": 12.00,
"conversion_status": "approved"
}Query Conversion History
GET /api/2/conversions.json
| Parameter | Type | Required | Description |
|---|---|---|---|
| start_date | date | Yes | Start of date range (YYYY-MM-DD). |
| end_date | date | Yes | End of date range (YYYY-MM-DD). |
| offer_id | integer | No | Filter to a specific offer. |
| affiliate_id | integer | No | Filter to a specific affiliate. |
| conversion_status | string | No | Filter by status: approved, pending, or rejected. |
| start_at_row | integer | No | Row offset for pagination. Default: 1. |
| row_limit | integer | No | Max rows to return. Default: 100; max: 500. |
Sample request
GET https://yourdomain.cakemarketing.com/api/2/conversions.json
?api_key=YOUR_API_KEY
&start_date=2024-01-01
&end_date=2024-01-31
&offer_id=12345
&conversion_status=approved
&start_at_row=1
&row_limit=25Sample response
{
"request_status": "Success",
"total_rows": 83,
"conversions": [{
"conversion_id": 4456789,
"click_id": "abc123xyz789",
"offer_id": 12345,
"payout": 5.00,
"conversion_status": "approved"
}]
}If you have any questions, please reach out to your dedicated CAKE Client Success Manager/Account Manager or contact the CAKE Support Team at support@getCAKE.com.