Skip to main content

Troubleshooting: Common Reasons Why Offers Didn't Track (S2S Postback Setup)

Written by GoKart Support

When setting up server-to-server (S2S) tracking, a single missing or incorrect parameter can cause conversions not to track. This guide outlines the most common issues and how to spot and fix them.


1. Wrong Parameter Name for the Tracking System / MMP

Each tracking system or MMP (Mobile Measurement Partner) uses different parameter names to capture gk_click_id or any other values you want to pass.

If the wrong parameter name is used, the tracking system can’t match the click to a conversion.

Example:

Platform

Parameter Name

Example Link

AppsFlyer

clickid

https://app.appsflyer.com/app_id?pid=network&af_click_lookback=7d&clickid={gk_click_id}

TUNE

aff_click_id

https://app.tune.com/abc123?aff_click_id={gk_click_id}

🔍 Why this happens:
Each tracking system names its parameters differently. These parameters are placeholders — they tell the tracking platform where to store the click ID that will later be used to fire the postback when a conversion occurs.


2. Typo in the Link

Even a small typo in the tracking link (extra space, missing character, wrong case, or incorrect domain) can break the redirect path or prevent the postback from being delivered.

⚠️ Common mistakes:

  • gk_click_id misspelled as gkclickid

  • Extra space or line break in the link

  • Using http instead of https

  • Missing {} around macros (e.g., {gk_click_id})


3. Wrong Link Format or Syntax (? vs &)

Tracking URLs follow a strict format. The first parameter in a URL always starts with a ?, and any additional parameters are added using &.

If these are placed incorrectly, the system may not read the parameters properly.

✅ Correct Format:

  • https://example.com/offer?pub_click_id={click_id}&source=network

❌ Incorrect Formats:

  • https://example.com/offer&pub_click_id={click_id}?source=network

  • https://example.com/offer??pub_click_id={click_id}


4. Missing Click ID or Macro Not Populating

Sometimes the {click_id} placeholder isn’t replaced with a real value when the user clicks the offer.
This means the postback later has nothing to match against, so no conversion is attributed.

⚠️ How to check:

Click your offer link and see if a real value appears in place of {gk_click_id} in the URL:

https://api.brownboots.getgokart.ai/api/v1/offer-link/redirect/12345?aff_click_id=ABC123XYZ

If you still see a macro instead of a value, the macro wasn’t populated — that means the partner’s tracking system isn’t passing it correctly.


5. Postback URL Missing the Click ID or Using the Wrong Macro

Your postback URL must contain the macro that the advertiser’s or tracking system replaces with the click ID or conversion data.

If the postback doesn’t include the click ID macro, GoKart (or any tracking system) won’t know which click to credit.

✅ TUNE Example:

Correct Postback:

https://api.brownboots.getgokart.ai/api/v1/postback?gk_click_id={aff_click_id}

Incorrect Postback (missing click ID):

https://api.brownboots.getgokart.ai/api/v1/postback

💡 Always double-check that the advertiser’s tracking platform is set to fire your postback with the correct macros replaced. (No click ID = no match.)


6. Incorrect or Missing Encoding

If your tracking link includes special characters (+, =, &, etc.) but isn’t URL-encoded, some systems may break the link during redirect.

✅ Example:

  • Instead of &source=Network A, use &source=Network%20A

  • Use online URL encoders if unsure.


7. Using the Wrong Environment (Sandbox vs Production)

Sometimes clients test using sandbox URLs but the live system fires to production URLs.
Make sure both sides (tracking and postback) point to the same environment.


8. Wrong Event ID (for Multi-Event Offers)

If your offer has multiple conversion events (e.g., Sign Up, First Trade, Level 1 Completion), GoKart needs to know which specific event the conversion belongs to.

This is controlled by the cnv_event_id parameter in your postback.

Option 1: Hardcoded Value

Use this when you want to always send a specific event ID.

https://api.brownboots.getgokart.ai/.../?cnv_event_id=FirstTrade&gk_click_id={subid}

✅ GoKart expects an event named exactly FirstTrade to exist in the offer setup.

Option 2: Dynamic Macro (e.g. {event_name})

Use this if your advertiser or MMP sends different event names dynamically.

https://api.brownboots.getgokart.ai/.../?cnv_event_id={event_name}&gk_click_id={subid}

In this case, GoKart will look for an event ID that matches whatever value the advertiser sends back for {event_name}.

⚠️ Important: The event ID in GoKart must exactly match the value the advertiser sends in the postback — including case sensitivity and underscores.


Example Reference Table

Event Name (From Advertiser)

Event ID in GoKart

Example Postback

Sign Up

SignUp

...?cnv_event_id=SignUp

First Trade

FirstTrade

...?cnv_event_id=FirstTrade

Dynamic Event

Matches {event_name}

...?cnv_event_id={event_name}


Common Mistakes with Multi-Event Offers

Mistake

Why It Fails

Event name in GoKart is FirstTrade but postback sends first_trade

Event ID mismatch (case-sensitive)

Testing a “Level 1” conversion but no “Level 1” event mapped in GoKart

Conversion won’t track because GoKart doesn’t know what that event refers to

Fix:
Always double-check that:

  • Every event listed in your postback matches an existing Event ID in GoKart

  • If you’re testing a specific level or milestone, ensure that event is actually mapped in the offer setup


Did this answer your question?