This article will cover the following:
How Postback Tracking Works
A postback URL (also called server-to-server or S2S tracking) works in three steps:
s1 value). The click ID is passed to the advertiser's landing page as a URL parameter.Every conversion depends on the click ID making the full round trip. If the click ID is not captured at step 1, or not sent back at step 2, CAKE cannot record the conversion. This is the root cause of the vast majority of postback issues.
Pre-Flight Checklist
Run through this checklist before investigating further. Most postback failures are caused by one of these five things:
| Check | What to verify | How to verify |
|---|---|---|
| Click ID captured | The advertiser's landing page is reading the click ID from the URL and storing it for use at conversion time. | Manually click a test tracking link and inspect the landing page URL in your browser. Confirm the click ID parameter (e.g. ?s1=) is present and has a non-empty value. |
| Postback URL correct | The postback URL being called matches exactly what CAKE provided — correct domain, path, and parameters. | Copy the postback URL from the offer's Tracking tab and compare character-by-character with what is configured in the advertiser's system. |
| Click ID passed back | The click ID value stored at click time is included in the postback call. | Review the advertiser's server logs for the postback call and confirm the click ID parameter is populated with the value from the original click. |
| Session not expired | The click ID is being sent back within the offer's configured session window. | Check the offer's session hours setting. The postback must fire before the session expires. |
| Offer is active | The offer is in Active status at the time the postback fires. | Confirm the offer status in CAKE. Postbacks sent to paused or expired offers will not record conversions. |
Common Issues and Fixes
Conversions Not Appearing in CAKE
| Symptom | Likely Cause | Fix |
|---|---|---|
| Postback fires (advertiser confirms) but no conversion in CAKE | Click ID was empty or malformed in the postback call. | Check the advertiser's postback log. Confirm the click ID parameter contains the actual value from the original click — not a placeholder like {clickid} or an empty string. |
| No conversion and no postback in advertiser logs | The postback URL is not being called at all. | Verify the advertiser's conversion trigger is firing. Check their server-side logic to confirm the postback call is executed on successful conversion, not just on page load. |
| Conversion appears as Rejected | Click ID expired — the session window elapsed before the postback fired. | Increase the offer's session hours if the conversion journey legitimately takes longer than the current window. |
| Conversion appears as Scrubbed | The lead matched a suppression list entry. | Check the suppression list for the email, phone, or IP address associated with the conversion. |
| Postback returns HTTP 4xx error | The postback URL is malformed or the domain is incorrect. | Copy the postback URL from Offers → [Offer] → Tracking Tab and re-paste it into the advertiser's system exactly. |
| Postback returns HTTP 5xx error | CAKE-side service issue. | Check CAKE system status under Admin → System Settings → Status. If status is green, retry the postback and contact support if the issue persists. |
Duplicate Conversions
Duplicate conversions occur when a postback fires more than once for the same transaction. The most common causes are:
- No unique ID deduplication. CAKE can suppress duplicate conversions when a
unique_idparameter is included in the postback. If the sameunique_idhas already been recorded, CAKE will reject the duplicate automatically. - Multiple conversion triggers. The advertiser is firing the postback from both their confirmation page and their server-side order processing. Standardize to one trigger.
- Postback retry logic. Some systems retry failed postback calls. Implement deduplication on the advertiser side using the order ID before retrying.
Add
&unique_id=YOUR_ORDER_ID to your postback URL. This is the most reliable way to prevent duplicate conversions in CAKE.Wrong Affiliate or Campaign Attributed
If a conversion is recording but being credited to the wrong affiliate:
- The user clicked multiple tracking links before converting. CAKE's default attribution is last-touch — the most recent click within the session window wins.
- A shared or recycled click ID is being passed in the postback. Each click must have a unique click ID — never reuse or cache click IDs across different users.
Testing Your Postback
curl "https://yourdomain.cakemarketing.com/api/2/conversion.json"\
"?api_key=YOUR_API_KEY"\
"&click_id=CAPTURED_CLICK_ID"\
"&offer_id=YOUR_OFFER_ID"Always use a dedicated test tracking link for postback tests. Never fire test postbacks against live campaign tracking links — this creates false conversion records that affect affiliate payouts and billing.
Using the API Log to Diagnose
The API Log records every inbound request to your CAKE instance, including postback calls. It is the fastest way to confirm whether a postback was received and what response CAKE returned.
/api/2/conversion.json or /c.asmx/conversion).| API Log Response | What It Means | What to Do |
|---|---|---|
| Success | CAKE received and recorded the conversion. | Check Reports → Conversions to confirm it appears. |
| Invalid click_id | The click ID in the postback did not match any recorded click. | Verify the click ID was captured correctly from the original click and has not been modified. |
| Expired click_id | The click ID exists but the session window has elapsed. | Increase the offer session hours or investigate why the conversion journey is taking longer than expected. |
| Duplicate conversion | A conversion with the same click ID or unique_id was already recorded. | Expected if deduplication is working. Investigate if this appears for conversions that should be unique. |
| Offer not found / inactive | The offer_id in the postback does not match an active offer. | Confirm the offer ID in the postback matches the active offer in CAKE and the offer is in Active status. |
FAQ
The most common reason is the click ID was empty or a literal placeholder like {clickid} in the postback call. Open the API Log and find the corresponding request — the response will show the exact error. Also confirm the postback is hitting your correct CAKE domain (not a staging or test domain).
Yes — you can manually fire the postback using the original click ID if it has not yet expired. If the session has expired, you will need to manually create the conversion via Admin → Conversions → Add Conversion or request a bulk adjustment.
The parameter name depends on your CAKE configuration. Check the postback URL in your offer's Tracking tab — the parameter at the end of the URL (e.g. &s1= or &transaction_id=) is what the advertiser must populate. See Setting Up Postback URLs and Pixel Tracking in CAKE for the full parameter reference.
Tag manager-fired postbacks are browser-dependent and can be blocked by ad blockers, privacy settings, or slow page loads. For maximum reliability, postbacks should be fired server-side from the advertiser's backend, not from a browser-side tag. If GTM is the only option, implement a server-side GTM container.
Pending status means the conversion has been received but is under review. This may be a manual review hold, a return/cancellation window, or a fraud screening delay. See Understanding Conversion Statuses in CAKE for a full explanation of each status.
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.