SKAdNetwork Postbacks can be directly uploaded to Kraken
1. Endpoints and Authentication
- Data is provided through CSV file upload via REST API
- Authentication happens through Bearer token, to be provided by Bubbleye upon project start. E.g.:
POST https://upload.bubbleye.com/skan Content-Type: text/csv Authorization: Bearer eyJhbGciOiJIUzI12345InR5cCI [...] [CSV content]
2. Upload frequency
- The expected upload frequency depends on the type of data being uploaded:
- Regular uploads of Retention or Ad Revenue: daily frequency
- If data is being uploaded one-off (typically for historical data ingestion before starting new campaigns), just make sure to inform your Bubbleye AM once the data is uploaded and we’ll ensure it was ingested successfully
- Note that every upload will result in NEW RECORDS being added into Kraken’s DB (if data related to a certain HOUR or DAY needs to be re-uploaded or amended, please contact your Bubbleye AM and they’ll assist with data deletion and re-upload).
3. Data updates/amendments
These APIs assess the uniqueness of a certain entry based on the concatenation of all dimensions. As a consequence, the following update options are supported:
- Updating values: if data related to a certain set of dimensions is uploaded multiple times (e.g. re-uploading the revenue generated through a certain publisher in a certain geo / time unit), the latest value will supersede (overwrite) any previously uploaded value for those same dimensions. This allows you to amend previously uploaded values for certain installs/events/revenue as long as you indicate a different value for the exact same dimensions.
- Updating dimensions: on the contrary, in situations where you’d like to amend a certain dimension (ie. because previously filled in erroneously) – e.g. the wrong ‘geo’ or ‘creative’ had been filled in a previous revenue upload – then the faulty rows will have to be deleted before being re-uploaded: please contact your Bubbleye AM and they will assist with data deletion and re-upload
4. Data format
- Expected one .CSV file containing all the desired data to be ingested for the given time frame. Note that all columns are required, though some of them may be left blank as indicated below.
- The file must follow the standard CSV specifications: https://tools.ietf.org/html/rfc4180
- Granularity: each record in the CSV shall refer to an aggregate count of SkAdNetwork postbacks generated in the time slot indicated in the ‘created_at’ column (see below).
- No matter what type of data is being uploaded, or its granularity, the following CSV columns are accepted:
- skan_network: skan ad-network-id. Bubbleye maintains the mapping between gta9lk7p23.skadnetwork => Vungle – iOS
- Examples: gta9lk7p23.skadnetwork
- skan_app: store ID of your app or game (without prefix: id)
- Examples: 880047117
- network_campaign_name Name of the campaign as defined by the network. Either of network campaign name and/or network campaign id is required.
- Example: AppLovinCampaignA
- network_campaign_id: ID of the campaign as defined by the network. Either of network campaign name and/or network campaign id is required.
- Example: networkID123
- skan_campaign_id: The SKAdNetwork campaign ID, an integer from 1-100
- Example: 14
- skan_version: SKAdNetwork version
- Examples: 2 / 2.1 / 2.2 / 1.0
- redownload: Bool, SKAdNetwork redownload
- geo: Two letter country code of the country, enriched by the network. Capitalized.
- Examples: US, DE, JP
- skan_source_app_id: without prefix: “id”, The ID of the publisher (app store id) responsible for generating the installs/events/revenue, as identified by Apple. This value should be sent as a string.
- Examples: 1234567890
- conversion_value: The 0 – 63 integer or null representing the conversion value of the postback
- network_received_at: The date and time when the network received the SkAdNetwork postback (in ISO format and UTC time zone). Granularity depends on the data being uploaded:
- creative_id* [ optional ]: The ID assigned by the network to the creative responsible for the installs/events/revenue generated at the indicated ‘created_at’ timeExample: “Mighty Warrior”
- Example: “xyz123”
- creative_name* [ optional ]: The name of the creative responsible for the installs/events/revenue generated at the indicated ‘created_at’ time
- Example: “Mighty Warrior”
- count: the count of postbacks for the dimensions used