Skip to content

Commit

Permalink
Fixes #64: Adapter for Google Funding Choices (#65)
Browse files Browse the repository at this point in the history
  • Loading branch information
baltpeter authored Jun 7, 2024
1 parent f767229 commit 2017d7a
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 0 deletions.
1 change: 1 addition & 0 deletions i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
"branch-io": "Branch offers the following services:\n\n- Mobile attribution[https://www.branch.io/attribution/] to “[c]apture every customer touchpoint across any channel, platform, OS to optimize […] campaigns and maximize ROI.”[https://www.branch.io/features/]\n- Ad conversion tracking. Branch can “[r]etarget app users who see a web ad and then purchase in the app, attribute revenue to the web ad that drove the install, and measure cumulative revenue from users across both web and app.”[https://www.branch.io/universal-ads/]\n- Custom audiences to “communicate the perfect message to the ideal customer, at the right moment”. “Get higher return on ad spend (ROAS) with precision retargeting of high-value active users and eliminate wasted spend in your acquisition campaigns by excluding existing customers. Re-engage lapsed users, boost propensity to purchase, and increase sessions per user.”[https://www.branch.io/engagement-builder/]\n- Fraud protection.[https://www.branch.io/fraud-protection/]\n\nBranch provides integrations to automatically “send Branch data to […] marketing and analytics partners to measure and optimize […] campaigns.”[https://www.branch.io/data-feeds/]",
"branch-io-attribution-api": "The Branch Attribution API is used for “deep linking and session attribution. […] Every time the API is called, it will track an INSTALL, REINSTALL, or OPEN event in Branch and return deep link data in the response if the session is attributed.”[https://help.branch.io/developers-hub/reference/attribution-api] It can also track “additional downstream conversion events” like PURCHASE.[https://help.branch.io/developers-hub/reference/attribution-api#tracking-downstream-events]",
"chartboost": "Chartboost is an advertising platform focused on mobile gaming that caters to both publishers[https://www.chartboost.com/products/monetization/] and advertisers[https://www.chartboost.com/products/advertising/].\n\nChartboost supports mediation (real-time bidding)[https://www.chartboost.com/products/mediation/], analytics[https://docs.chartboost.com/en/mediation/analytics/], and A/B testing[https://docs.chartboost.com/en/mediation/ab-tests/].",
"google-fundingchoices": "With Google's Privacy & Messaging API (formerly Funding Choices[https://support.google.com/fundingchoices/answer/9010669?hl=en]), app developers can manage users' consent choices[https://developers.google.com/funding-choices] and show consent forms[https://developers.google.com/admob/android/privacy#load-and-show-form]. It can also be used to detect ad blockers and display messages to “recover lost revenue from ad blocking users”.[https://support.google.com/admob/answer/10107561]\n\nThe Privacy & Messaging API is available through Google's AdMob, Ad Manager, and AdSense SDKs on the web, Android, and iOS.[https://support.google.com/fundingchoices/answer/9010669?hl=en]",
"facebook-audience-network": "Meta Audience Network is a service by Facebook that allows app developers to monetize their apps with ads.[https://developers.facebook.com/docs/audience-network] Facebook offers Audience Network SDKs for Android[https://developers.facebook.com/docs/audience-network/setting-up/platform-setup/android/add-sdk], iOS[https://developers.facebook.com/docs/audience-network/setting-up/platform-setup/ios/add-sdk], and Unity[https://developers.facebook.com/docs/audience-network/setting-up/platform-steup/unity/add-sdk].",
"facebook-graph-app-events": "The Graph API is provided by Facebook to “get data into and out of the Facebook platform”.[https://developers.facebook.com/docs/graph-api/overview] It can be accessed through the Facebook SDKs for Android[https://developers.facebook.com/docs/android/graph] and iOS[https://developers.facebook.com/docs/ios/graph].\n\nThe App Events endpoint allows developers to “track actions that occur in [a] mobile app or web page such as app installs and purchase events” in order to “measure ad performance and build audiences for ad targeting”. The Facebook SDK automatically logs app installs, app sessions, and in-app purchases using this endpoint. Additionally, developers can manually log their own events.[https://developers.facebook.com/docs/marketing-api/app-event-api]",
"infonline": "INFOnline provides digital audience measurement for websites and apps.[https://www.infonline.de/en/]\n\nThey offer two separate measurement systems: Census Measurement (IOMb[https://www.infonline.de/download/?wpdmdl=7135]) and INFOnline Measurement pseudonymous (IOMp[https://www.infonline.de/download/?wpdmdl=7135], formerly SZMnG[https://www.infonline.de/faqs/]). Census Measurement can be recognized by the URL path fragment “base.io”, whereas INFOnline Measurement pseudonymous uses “tx.io”.[https://docs.infonline.de/infonline-measurement/en/integration/web/checkliste_web_allgemein/]\n\nINFOnline boasts with constantly adapting their technology in order to circumvent browser restrictions, ad and tracking blockers, and privacy-preserving changes by operating systems.[https://www.infonline.de/measurement/]",
Expand Down
8 changes: 8 additions & 0 deletions research-docs/google/device_info.os_type.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
The `device_info.os_type` holds the device's operating system.

In our request database, we have observed the following values being transmitted for this property:

* `ANDROID`
* `2`

For requests made from Android devices, the value was always `ANDROID`. For requests made from iOS devices, it was always `2`.
3 changes: 3 additions & 0 deletions research-docs/google/rdid.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
According to the [targeting parameter documentation](https://support.google.com/admanager/answer/7320899?hl=en#rdid-idtype-is_lat) in Google's Ad Manager Help ([archived](https://web.archive.org/web/20240429092541/https://support.google.com/admanager/answer/7320899?hl=en#rdid-idtype-is_lat)), the `rdid` property holds a "resettable device identifier".

Google's further [documentation on resettable device identifiers](https://support.google.com/admanager/answer/6238701) ([archived](https://web.archive.org/web/20240429092547/https://support.google.com/admanager/answer/6238701)) lists the following examples of RDIDs: Google AdID, Apple IDFA, Amazon AFAI, Roku RIDA, Xbox MSAI
91 changes: 91 additions & 0 deletions src/adapters/google.ts
Original file line number Diff line number Diff line change
Expand Up @@ -262,4 +262,95 @@ export const adapters: Adapter[] = [
decodingSteps: [{ function: 'parseQueryString', input: 'query', output: 'res.query' }],
containedDataPaths: containedDataPathsDoubleclickMadsGma('query'),
},

{
slug: 'fundingchoicesmessages',
name: 'Privacy & Messaging API',
description: 'google-fundingchoices',
tracker,

endpointUrls: ['https://fundingchoicesmessages.google.com/a/consent'],

decodingSteps: [{ function: 'parseJson', input: 'body', output: 'res.body' }],
containedDataPaths: {
idfa: {
context: 'body',
path: 'adid',
reasoning: 'observed values match known device parameters',
},

osName: {
context: 'body',
path: 'device_info.os_type',
reasoning: 'google/device_info.os_type.md',
},

model: {
context: 'body',
path: 'device_info.model',
reasoning: 'obvious property name',
},

osVersion: [
{
context: 'body',
path: 'device_info.android_api_level',
reasoning: 'obvious property name',
},
{
context: 'body',
path: 'device_info.version',
reasoning: 'observed values match known device parameters',
},
],

language: {
context: 'body',
path: 'language_code',
reasoning: 'obvious property name',
},

screenWidth: {
context: 'body',
path: 'screen_info.width',
reasoning: 'obvious property name',
},

screenHeight: {
context: 'body',
path: 'screen_info.height',
reasoning: 'obvious property name',
},

appId: {
context: 'body',
path: 'app_info.package_name',
reasoning: 'obvious property name',
},

appName: {
context: 'body',
path: 'app_info.publisher_display_name',
reasoning: 'obvious property name',
},

appVersion: {
context: 'body',
path: 'app_info.version',
reasoning: 'obvious property name',
},

trackerSdkVersion: {
context: 'body',
path: 'sdk_info.version',
reasoning: 'obvious property name',
},

otherIdentifiers: {
context: 'body',
path: 'rdid',
reasoning: 'google/rdid.md',
},
},
},
];

0 comments on commit 2017d7a

Please sign in to comment.