Data Partners (Batch)
GroundTruth is the leading location platform, helping app developers to monetize their location data, create location based services in their app, and understand their audience through their offline behavior.
You must first create an account with GroundTruth in order to proceed with the integration.
If you do not have an account, please contact your account manager, or send an email to: [email protected]
Overview
This document outlines how a partner can send user location signals to GroundTruth for interpretation of user location data. A partner can provide this information via uploading a file with multiple records on a daily basis.
Feasibility
Before integration, please communicate to our account manager / business development team member with an estimate number of rows per day to assess feasibility.
Data preparation
We have strict guidelines for certain fields that will allow our data pipelines to process all your data with minimum issues. The data will be sent over CSV files, so some basic understanding is required.
Mobile Applications Only
GroundTrust is not interested in any data from website or mobile website. So please make sure that all location data sent through this process are from mobile applications.
CSV Headers
The first line must contain the header. You must include all mandatory fields as well as any additional fields you can find in the addendum at the bottom of this document. Please make sure all the data and headers are aligned like a spreadsheet e.g. put date data under the date column.
Data Encoding
If there is no data for a given field on a given record please leave it empty, i.e. no space between the commas (,,).
Values in the file should be CSV escaped (a backslash before the comma).
Data Freshness
The exptimestamp of each record (row) must be within 96 hours of the time of upload.
Limited Country Support
We only support the following countries: US and CA. If you have additional data please inform us so we can explicitly enabled them.
Note: The country field is deprecated. Country is derived using the coordinates.
GDPR
We are adding two new fields to allow data vendors to pass along the status of the user as well as their consent to their data sharing. The two fields are gdpr and gdpr_consent. If the user is from the EU/EEA you must set gdpr to 1, otherwise set to 0. When from EU/EEA gdpr_consent must also have a value, if not keep the field blank, but gdpr_consent is still mandatory.
Mandatory Fields
Each file at a minimum must contain the following fields (can accept additional fields):
Field | Required | Description | Example |
---|---|---|---|
recordtype | YES | 0 - Applications 1 - Web / Mobile Web Due to exclusive interest in mobile applications, the field should only be populated with 0s | 0 |
exptimestamp | YES | UNIX timestamp of record | 1467843086186 |
id | YES | The bundle/name of the source providing the record. Used for traffic segmentation. If not able to pass individual traffic sources, static name of company passing data is required | com.appname |
os | YES | Operating system of the device: android ios If not in the list above, provide the name of the OS that the runtime environment provides | ios |
uid | YES | User's IDFA for iOS Users' AAID for Android | 46ab0a92-8497-46dd-b70a-d640a225ec24 |
uidtype | YES | pass "IDFA" for iOS pass "AAID " for Android | IDFA |
lat | YES | User's latitude | 37.79867 |
lon | YES | User's longitude | -122.41762 |
ha | YES | Horizontal accuracy as it is read from the device GPS in meters. Convert to meters when device provides a different unit | 10 |
va | YES | Vertical accuracy as it is read from the device GPS in meters | 10 |
alt | YES | Device altitude | 200.9 |
speed | YES | Speed of device in MPH | 10 |
speedaccuracy | Yes (Android only) | Speed Accuracy (meters per second) | 1 |
direction | YES | An azimuth that is measured in degrees relative to north (course / bearing) | 90 |
directionaccuracy | Yes (Android only) | Estimated bearing accuracy of this location (degrees) | 10 |
floor | Yes (iOS only) | Floor in building device is located | 12 |
country | YES | (Deprecated) ISO country code where the device is located Supported values are "US", "CA", "GB", "DE" , "ES", "FR","JP","IT" and "IN" for United States, Canada, United Kingdom, Germany, Spain, France, Japan, and India respectively | us |
gdpr | YES | 0 - Not restricted by GDPR 1 - Restricted by GDPR If user is located in EU/EEA then this field must be set to 1 | 0 |
gpdr_consent | YES | This is the IAB consent string which is a daisybit encoded in base64. Always have this column present even if gdpr=0, just keep the consent blank. | Y29uc2VudF9zdHJpbmc= |
lmt | YES | “Limit Ad Tracking” signal commercially endorsed (e.g., iOS, Android), where: 0 - Tracking is unrestricted 1 - Tracking must be limited per commercial guidelines | 0 |
Supported Fields
Field | Required | Description | Example |
---|---|---|---|
activity | No | User's state (walking, running, driving etc.) | 0 - driving (iOS automotive) 1 - cycling (iOS cycling) 2 - on foot (Android only) 3 - still (iOS - stationary) 4 - unknown (iOS unknown) 5 - tilting (Android only) 7 - walking (iOS - walking) 8 - running (iOS - running) |
beaconid | No | Beacon identifier | 2792c5ca-b8fa-11e2-99a7-14109fd63bf9 |
beaconidtype | No | Beacon protocol | iBeacon |
beaconproximity | No | Proximity description | near |
beaconmajor | No | Used to identify beacon | 123 |
beaconminor | No | Used to identify beacon | 456 |
beaconurl | No | Beacon url | https://someurl.com |
bundle | No | Application bundle or package name | com.gt.mygame |
carrier | No | The name of the mobile service provider: at&t metropcs sprint tmobile verizon If mot in the list above, simply send the name of the carrier that the telephony API offers the application | verizon |
city | No | The city the device is located in | san diego |
connectiontype | No | Device connection type: 0 - Unknown 1 - Ethernet 2 - WIFI 3 - Cellular Network- Unknown Generation 4 - Cellular Network-2G 5 - Cellular Network-3G 6 - Cellular Network-4G | 2 |
coppa | No | Flag indicating if this request is subject to the COPPA regulations established by the USA FTC | 0 |
devicetype | No | Type of device: mobile/tablet pc connected tv phone tablet connected device set top box | tablet |
domain | No | Application or site domain | meetme.com |
gender | No | Gender of user: m - Male f - Female u - Unknown | f |
ip | No | IPv4 address of the device | 127.0.0.1 |
ipv6 | No | IPv6 address of the device | 2001:cdba:0000:0000:0000:0000:3257:9652 |
language | No | Language. Default value is "en-us". Use standard values from ISO 6391 | en-us |
make | No | Make of the device | LG717 |
model | No | Model of the device | SGH-T429 |
name | No | Application or site name | mygame |
osv | No | Version of the operating system | 7 |
paid | No | 0 - Free version of application 1 - Paid version of application | 1 |
publisherdomain | No | Publisher domain name | groundtruth.com |
publisherid | No | Publisher id | groundtruth |
publishername | No | Publisher name | groundtruth |
region | No | Two letter state code in US | ca |
storeurl | No | Application url (URL encoded). For mobile web sites use the URL where the site resides. For native apps it will be the URL to the app store | https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Ffind-my-iphone%2Fid376101648 |
ua | No | User agent of the browser if applicable | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 |
ver | No | Application or site version | 1 |
yob | No | User’s year of birth | 1980 |
zip | No | The zip code in which the device is located | 90210 |
0000000000000000000000000000000000000000000000 |
File preparation
Data must be delivered in CSV format and can be compressed. If the data is huge, you must chunk them into parts:
If transferred uncompressed, files must each be 1GB in size
If transferred compressed, files must each be 500MB in size
If the total volume of data transferred is less than this amount, must transfer a single file containing all of the data
We support both .gz and .zip compressed files.
You can also choose to break the payload into multiple files called parts. For example you can break a 400MB file into 2x 200MB files part_0001.csv and part_0002.csv.
Data Uploading
You will be provided a destination folder on our Amazon S3 bucket from which you will be able to upload your data file(s) along with a success file.
S3://dataprovidersapi/<partner_name>
Upload your files in the correct subfolder structure of the following format:
/<year>/<month>/<day>/
For example if today was April 12, 2018 you will need to upload your files in the following subfolder:
S3://dataprovidersapi/your-biz-name/2018/04/12
Once you upload all your files you will need to make sure you also upload a success file named _SUCCESS. The contents of that file should contain the total number of rows transferred to that bucket for that day. There should only be one success file per day. The reason this is needed are:
- to know when all your files are fully uploaded and
- as a checksum to confirm the read was successful
Updated about 1 year ago