Attribution Support
The gaming industry has become increasingly competitive, and acquiring users through organic growth is becoming more difficult. Nowadays, all successful games studios display ads in other games or platforms to reach their desired audience and redirect them to their game. This is what’s called user acquisition.
Ads are distributed through ad networks, like Unity ads. To start acquiring users with Unity, learn more here.
How you can use user acquisition data to grow your game
By analyzing your user acquisition data, you can quickly see which ad networks and campaigns bring the most valuable users to your game. This will let you focus your budget only on effective networks and bring, over time, only valuable users to your games and refine your ads.
You can also personalize the early content of your game depending on what is presented in the ad shown to each user. For example, in an RPG game, if you know the user clicked on an ad showing a warrior, the player can play the same warrior in the tutorial and not the default mage.
How to track user acquisition data
As users installing your game can come from multiple ad networks and campaigns, it is common to use a Mobile Measurement Partner (MMP) to identify from which network and campaign a player installing the game comes from. This is called attribution: attributing an app install to a specific network and campaign. The most used MMPs are AppsFlyer, Adjust, Singular, Kochava, and Tenjin.
You can track the data provided by MMPs on the client side such as (but not limited to): the ad network, the specific ad which brought the user to your game, and the cost to acquire this user. All of this data can be recorded in our standard event: acquisitionSource.
acquisitionSource Event
UGS Analytics provides a standard event called acquisitionSource
to record information about the channel the user was acquired from. This event should be populated with the information available from the attribution provider's SDK. Ensure you echo any guidance on tracking installs, for example, from Facebook, that it found on any MMP’s own guidance.
The table below explains the attribution event parameters:
Parameters | Purpose/description | Data type | Mandatory |
---|---|---|---|
acquisitionChannel | The name of the specific marketing provider used to drive traffic to the game. We recommend using the acquisition network name as this will be the name displayed when filtering or grouping by an acquisition channel. For a deeper analysis, use the network and campaign names. | string | Yes |
acquisitionCampaignId | The ID of the acquisition campaign. | string | Yes |
acquisitionCreativeId | The acquisition campaign creative ID. | string | Yes |
acquisitionCost | The cost of the install e.g. 2.36. | float | No |
acquisitionCostCurrency | The install cost currency e.g. USD. | string | No |
acquisitionCampaignName | The acquisition campaign name e.g. Interstitial:Halloween21. | string | Yes |
acquisitionNetwork | The acquisition campaign network e.g. Ironsource, Vungle or Unity. | string | No |
acquisitionProvider | The name of the attribution provider in use e.g. Adjust, AppsFlyer, Singular. | string | Yes |
acquisitionCampaignType | The acquisition campaign type. e.g. CPI. | string | No |
You’ll give different information about the attribution of a particular user, depending on the provider you use. You might not have enough information to populate every field in the event, so these can be left blank or be populated with your own data.
Adjust SDK integration guide
You can register a callback to get notified each time the Adjust SDK updates the conversion value for the user and sends the data to Analytics using the values from attribution variables following the mapping example below. For more details about Adjust SDK integration, see https://github.com/adjust/unity_sdk#attribution-callback.
Event parameters (* required) | Values from Adjust SDK (AdjustAttribution attribution) |
---|---|
acquisitionChannel* | Depends on the use case. We recommend using the acquisition network name by default. Ie. attribution.network |
acquisitionCampaignId* | attribution.campaign |
acquisitionCreativeId* | attribution.creative |
acquisitionCost* | attribution.costAmount |
acquisitionCostCurrency | attribution.costCurrency |
acquisitionCampaignName* | attribution.campaign |
acquisitionNetwork | attribution.network |
acquisitionProvider* | Adjust |
acquisitionCampaignType | attribution.costType |
Note: this is a guide and we recommend checking with the provider for accuracy.
Appsflyer SDK integration guide
Appsflyer SDK provides functionality to access real-time user attribution data for each install. See details about integration here about how to register a callback. You can register a callback to get notified each time the Appsflyer SDK updates the conversion value for the user and sends the data to Analytics using the values from attribution payload following the mapping example below. For more details about Appsflyer Payload, see here.
The following fields are recommended guidelines and not exhaustive:
Event parameters (* required) | Appsflyer Conversion Data Payload Fields |
---|---|
acquisitionChannel* | Depends on the use case. We recommend using the acquisition network name by default. Ie. attribution.network |
acquisitionCampaignId* | campaign_id |
acquisitionCreativeId* | adgroup_id |
acquisitionCreativeId* | af_cpi |
acquisitionCostCurrency | Check with provider |
acquisitionCampaignName* | campaign |
acquisitionNetwork | media_source |
acquisitionProvider* | Appsflyer |
acquisitionCampaignType | Check with provider |
Note: this is a guide and we recommend checking with the provider for accuracy.
Implement with the SDK
The SDK provides the AcquisitionSourceEvent
class to help you record these events.
This is an example of how to trigger an attribution event in your game:
var acquisitionSource = new AcquisitionSourceEvent()
{
AcquisitionChannel = "Unity",
AcquisitionCampaignId = "gwOfhjSjyiNfGdGlUjLK",
AcquisitionCreativeId = "creative_name",
AcquisitionCampaignName = "Game Name OS Country",
AcquisitionProvider = "AppsFlyer",
AcquisitionCampaignType = "CPI",
AcquisitionCost = 12,
AcquisitionCostCurrency = "EUR",
AcquisitionNetwork = "Unity",
};
AnalyticsService.Instance.RecordEvent(acquisitionSource);
Implement with the REST API
Send the standard event “userAcquisition” to set the Acquisition Source dimension values.
The event payload is as follows:
{
"eventTimestamp": {{eventDate}},
"eventVersion": 1,
"userID": {{userId}},
"eventName": "acquisitionSource",
"eventUUID": {{eventUUID}},
"eventParams": {
"clientVersion":"0.1",
"platform":"Android",
"userCountry":"DK",
"acquisitionChannel":"Unity",
"acquisitionCampaignId":"gwOfhjSjyiNfGdGlUjLK",
"acquisitionCampaignType":"CPI",
"acquisitionCampaignName":"Game Name OS Country",
"acquisitionCreativeId":"creative_name",
"acquisitionCost":"12",
"acquisitionCostCurrency":"EUR",
"acquisitionNetwork":"Unity",
"acquisitionProvider":"AppsFlyer"
}
}
The parameter acquisitionChannel
will populate the “Acquisition Channel” dimension, found in the filters and group by options across the Analytics tools:
Dashboard
Open Analytics in the Unity Cloud Dashboard, and select User Acquisition to understand how each acquisition channel is performing in your game: which channel is bringing the most players, the most valuable players, and overall, the most revenue. You can filter the dimensions: Country, Platform, Version, Audience, and Acquisition. You can also see new users per day per acquisition channel, DAU per acquisition channel, daily revenue per acquisition channel, and retention per acquisition channel.
See the DAU (daily active users) and MAU (monthly active users) filtered by acquisition.
See the average revenue per DAU and daily revenue filtered by acquisition.
Game performance
See how your game is performing from daily active users in the last day, 7 days, and 30 days, using the acquisition filter. All dashboards (revenue, retention, game performance, and user acquisition) can be filtered by acquisition source.
Use the Data Explorer to filter metrics by acquisition.