Gamesight has a robust postback (webhook) system that provides real-time notifications of new attributed installs. These postbacks can be sent to Ad Networks, BI platforms, or other external services that would want to be notified of new attributed goals.

Postbacks are sent as HTTP requests to an external web server, most frequently GET or POST requests.

📘

Postback Events

Postbacks are only available for triggered Goals. Postbacks for clicks/impressions are not supported.

Configuring Postbacks

To setup postbacks for a particular network, navigate to the tracker page and click on the Postbacks tab. Top level network trackers will have a postback created automatically for your primary conversion goal. You can add additional goals as triggers for this postback or create a new postback for those goals.

2438

Custom Postbacks

Many networks have postbacks enabled that only require you to configure a few parameters. But if you want a fully custom postback that will send goal data back to an internal BI system, you can do so by clicking Add Postback and selecting Custom URL from the select. This will reveal an input for the HTTP method and URL where you would like us to send your goal data. When filling out the parameters you can select from a list of macros that we will replace with information about the touchpoint, event, and goal.

2374

📘

Postback Scope

When postbacks are created they are scoped to the same Game, Team, and Network as the tracker.

Macros

When setting up a new postback there are many macros that are available. Macros are dynamic values or variables that you can request

Global

These macros are available on all postbacks.

MacroDescriptionExample Value
{touchpoint.id}The Touchpoint ID that was attributed to the Goal (either Click or Impression ID) - String - 32 bytes5f13a20a7e65424b8da117affaaf2f84
{touchpoint.network_touchpoint_id}Either the network_click_id or network_impression_id passed into the tracking url - StringmyNetworkClickId123
{touchpoint.type}The type of touchpoint attributed - Stringclick or impression
{touchpoint.created_at}Time the touchpoint was triggered - String - ISO86012018-01-01T00:00:00
{touchpoint.sub1}Sub 1 value from tracking link - String-
{touchpoint.sub2}Sub 2 value from tracking link - String-
{touchpoint.sub3}Sub 3 value from tracking link - String-
{touchpoint.sub4}Sub 4 value from tracking link - String-
{touchpoint.sub5}Sub 5 value from tracking link - String-
{click.id}The Click ID that was attributed to the Goal. Empty if touchpoint was an Impression - String(32) - 32 bytes5f13a20a7e65424b8da117affaaf2f84
{click.network_click_id}The network_click_id passed into the tracking url - StringmyNetworkClickId123
{impression.id}The Impression ID that was attributed to the Goal. Empty if touchpoint was a Click - String(32) - 32 bytes5f13a20a7e65424b8da117affaaf2f84
{impression.network_impression_id}The network_impression_id passed into the tracking url - StringmyNetworkImpressionId123
{goal.created_at}Timestamp that the Goal was created at - String - ISO86012018-01-01T00:00:00
{goal.goal_type_id}The Goal Type ID that triggered with postback - UInt321234
{goal.trigger_type}The type of trigger that occurred - Stringstandard or assist or contribution
{postback.id}A unique ID for this specific postback request. Can be useful for deduplication or as a primary key for postback logs - String(64) - 64 bytes55afccaad56024aabf5ba8675aa9bd68e17a88155bd93ec44bf6ab377e1bed83
MacroDescriptionExample Value
{event.id}Event ID that triggered the Goal - String - 32 bytes5f13a20a7e65424b8da117affaaf2f84
{event.user_id}User ID for the Event that triggered the Goal - StringmyUserId123
{event.hashed_user_id}Hashed version of the User ID for the Event that triggered the Goal - String(64) - 64 bytes55afccaad56024aabf5ba8675aa9bd68e17a88155bd93ec44bf6ab377e1bed83
{event.game_id}Game ID for the Event that triggered the Goal - UInt32100
{event.type}Type of the Event that triggered the Goal - Stringgame_launch
{event.platform}Platform included with this event - Stringsteam
{event.external_ids}The JSON encoded list of external IDs passed with this event payload - String[{"external_id_type": "myid", "external_id": "12345"}]
{event.ip_location.country}The Country detected for this Event, based on IP geolocation - String - ISO 3166-1 Alpha-2MX
{event.revenue_amount}The Revenue amount passed with this event - Decimal(10,2)10.00
{event.revenue_currency}The Revenue currency passed with this event - String - ISO 4217USD
{event.created_at}Timestamp of the Event that triggered the Goal - String - ISO86012018-01-01T00:00:00
{goal.revenue_amount}The revenue amount associated with this Goal - Decimal(10,2)10.00
{goal.revenue_currency}The revenue currency associated with this Goal. Currently this is always normalized to USD - String - ISO 4217USD
{goal.attributed}Whether this goal is attributed or unattributedtrue
{touchpoint.game_id}Touchpoint's Game ID - UInt32100
{touchpoint.team_id}Touchpoint's Team ID - UInt32100
{touchpoint.network}Touchpoint's Network - Stringfacebook (set to unattributed for unattributed goals)
{touchpoint.campaign}Touchpoint's Campaign - Stringcampaign1
{touchpoint.ad_group}Touchpoint's Ad Group - Stringadgroup123
{touchpoint.ad}Touchpoint's Ad - Stringplacement1010
{touchpoint.team_name}Touchpoint's Team Name* - StringAgency 1
{touchpoint.network_name}Touchpoint's Network Name* - StringFacebook
{touchpoint.campaign_name}Touchpoint's Campaign Name* StringLaunch Campaign
{touchpoint.ad_group_name}Touchpoint's Ad Group Name* StringUS Targeting Group
{touchpoint.ad_name}Touchpoint's Ad Name* -StringBanner Placement
{touchpoint.session_id}Touchpoint's Session ID - String - 32 bytes5f13a20a7e65424b8da117affaaf2f84

* Touchpoint names for platforms with Tracker Hierarchy Mirroring (Facebook, Google CM, etc) may not be present at the time of postback for the first few hours after a new campaign goes live (our systems pull down new campaign names from external platforms every few hours). If a name is not set for the Tracker, these fields will fallback to the ID (eg touchpoint.campaign_name will be the same as touchpoint.campaign).

Network Params

Additional parameters can be made available during Network Tracker configuration. These fields are generally used to define values like security keys or other client-specific Network parameters. All of these Macros are of the form {postback_params.*}

Query Params

All query parameters present in the Touchpoint that triggered the postback are available for use as postback Macros. You can access these fields through the {query_params.*} Macros.

Transforms

The postback system also supports several transforms that will adjust the value of the postback macro before replacing it into your postback request.

TransformDescription
|jsonJSON encodes the parameter. This is useful if you are writing postbacks into a JSON object to ensure that any special characters are properly escaped

Example:{"my_key": {touchpoint.ad_name|json}}
Returns: {"my_key": "My \"Campaign"}
|urlencodeURL encodes the parameter with plusses. This is useful if your postback accepts values like names and you would like to ensure any special characters are properly escaped

Example:https://postback.com?my_key={touchpoint.ad_name|urlencode}
Returns: https://postback.com?my_key=My+%22Campaign
|json|urlencodeJSON encodes the parameter, then URL encodes the resulting value

Example:https://postback.com?data=%7B%22my_key%22%3A%20{touchpoint.ad_name|json|urlencode}%7D
Returns: https://postback.com?data=%7B%22my_key%22%3A+%22My+%5C%22Campaign%22%7D

Postback Logs

You can view the Postback Log for each individual postback that you have set up in Gamesight for your Network Trackers.

From the Tracker Configuration page, click on the Tracker that you want to view your postbacks for. Next, click the Postbacks tab and click on the postback that you want to view logs for - followed by clicking the "View Logs" button as shown below.

1455 1693

Using the Filters tab, you can set a specific time range for your search. Using the Display tab, you can add additional columns of data such as the User ID, Game ID, Request Headers, Request Body, etc. as shown below.