The following end-to-end flow describes both advertiser setup and third-party implementation required in order to run a campaign on DoubleClick buy-side products using a third-party app tracking solution.
For more information about DoubleClick Digital Marketing in general as well as an overview of in-app attribution features, see the DoubleClick Digital Marketing background page.
Advertiser sets up Conversion event in DDM to represent the install or conversion (Bid Manager only - conversion pixel) (Campaign Manager - Floodlight activity).
Advertiser "links" DDM conversion event in the third-party interface and provides key variables that identify an advertiser and conversion activity group.
src
is the advertiser ID that is the source of the Floodlight activity.cat
is the activity tag string, which Floodlight servers use to identify the activity group to which the activity belongs.type
is the group tag string, which identifies the activity group with which the Floodlight activity is associated.u1, u2, ...
(if available) are the custom Floodlight variable key-values.
Advertiser adds variables to signify consent collection for DMA compliance.
eea
is used to identify EEA users.eea=0
indicates that the user is not from the EEA.eea=1
indicates that the user is from the EEA.
ad_user_data
is the consent flag for the use of user data for ads purposes.- Only needs to be set if
eea=1
ad_user_data=0
indicates the user has denied consent for transmission of user level data to Google for ads purposes.ad_user_data=1
indicates the user has granted consent for transmission of user level data to Google for ads purposes.
- Only needs to be set if
npa
is used for ad personalization content.npa=0
indicates the user consents to personalization.npa=1
indicates the user has not consented to personalization.
test_request_reason=dma
can be used to test DMA parameters- Validates all DMA parameters and returns warnings.
- Returns multi-response with fake clicks.
- Logs the conversions as test conversions.
In addition, the advertiser needs to provide third parties with its specific authorization token:
token
is an advertiser-specific alphanumeric string that must be passed along with each server request to DDM.Advertiser runs in-app ad campaign with ad tags served by DBM on real-time bidding exchanges or served by DCM on direct-bought media.
End user sees and clicks on ads, which are logged by DDM.
When end user installs the app or completes a conversion event, such as "game play", third-party servers "ping" DDM on every app activity:
An example URL for user not in EEA
https://ad.doubleclick.net/ddm/s2s/appactivity/src=1234567;cat=fghij456;type=abcde123;u1=[friendlyname1];ord=1312312312;eea=0;npa=0
An example URL for user in EEA
https://ad.doubleclick.net/ddm/s2s/appactivity/src=1234567;cat=fghij456;type=abcde123;u1=[friendlyname1];ord=1312312312;eea=1;ad_user_data=1;npa=0
where:
src
is the advertiser ID that is the source of the Floodlight activity.cat
is the activity tag string, which Floodlight servers use to identify the activity group to which the activity belongs.type
is the group tag string, which identifies the activity group with which the Floodlight activity is associated.ord
is a random number that is used to make the Floodlight tag unique.u1, u2, ...
(if available) are the custom Floodlight variable key-values.eea
identifies if the user is in the EEA.ad_user_data
identifies if the user consents to cookies and Measurement.npa
identifies if the user consents to personalization.
with additional parameters sent through a JSON payload in an HTTP POST:
{ "app": { "bundle": "com.rovio.angrybirds" }, "device": { "ua": "Mozilla/5.0 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25", "ip": "108.176.57.230", "didmd5": "A2D2DA47AC2DE1BCA16883BD5CAA6F2F", "lmt": 1 } }
and the advertiser authorization token is passed in the HTTP Authorization Header:
Authorization: Token token="[advertiser authorization token string]"
where:
app
(required) is the JSON object representing the app where the conversion activity took place. Useapp: {}
if the app where the conversion activity took place is not available.bundle
(if available) is the app object field containing a string value of the Play Store bundle name or App Store ID.device
is the JSON object representing the device on which the conversion activity took place.ua
is the device object field representing the user agent string of the app where an activity was recorded. This parameter is required.ip
(if available) is the device IPv4 address assigned to the device. This parameter is required.didmd5
is the MD5-hash string of the uppercased IDFA or Google Play Advertising ID value.lmt
is an integer, with a value of 1 if the user has enabled the "Limit Ad Tracking" option with IDFA or AdID, or 0, if not set.
DDM will respond with a JSON response of whether the conversion event is attributed to a view or click served by DCM, and if "YES", additional information about the event (last view or click):
- Ad ID
- Site ID
- Placement ID
- Creative ID
- Timestamp
An example JSON response might look like:
{ "attributed": 1, // Whether the conversion can be attributed to a DCM event. "last_impression_ad_id":283641088, "last_impression_site_id":1408067, "last_impression_placement_id":107616368, "last_impression_creative_id":60162352, "last_impression_timestamp":1415647607, "last_click_ad_id":283641088, "last_click_site_id":1408067, "last_click_placement_id":107616368, "last_click_creative_id":60162352, "last_click_timestamp":1415647657, "last_click_exclid":"CKm0nLKhyssCFceH2wod8l4I4A", "cps": <cps>, "ad_events": [ <ad event objects> ], "warnings": [<warning strings>], "errors": [<error strings>], }
where:
attributed
is value 1 (if the conversion can be attributed to an impression or click) or 0 (if not attributable).last_impression_ad_id
(if attributed = 1) is the ad ID for the last impression.last_impression_site_id
(if attributed = 1) is the site ID for the last impression.last_impression_placement_id
(if attributed = 1) is the placement ID for the last impression.last_impression_creative_id
(if attributed = 1) is the creative ID for the last impression.last_click_ad_id
(if attributed = 1 and a click was attributed) is the ad ID for the last click.last_click_site_id
(if attributed = 1 and a click was attributed) is the site ID for the last click.last_click_placement_id
(if attributed = 1 and a click was attributed) is the placement ID for the last click.last_click_creative_id
(if attributed = 1 and a click was attributed) is the creative ID for the last click.last_click_exclid
corresponds to a unique click ID populated using the%eiid!
macro
Beginning with DMA enforcement in March 2024, the following fields will also be available:
cps
indicates which Core Platform Service the event belongs toa
: Adsm
: Mapsp
: Play Stores
: Searchh
: Shoppingy
: YouTube
ad_events
is an array ofad_event
objects containing all of the conversion events.- The
ad_event
object has the following fields: product_type
is a string that reports the product responsible for the conversion. This will be eitherDCM
orDBM
.interaction_type
is the type of interaction that lead to the event. Eitherimpression
orclick
.conversion_metric
is the conversion metric used for attribution. Eitherconversion
orview_through_conversion
.timestamp
is the UNIX timestamp the ad event occurred with microsecond precision. This value should be used for last-click attribution.campaign_type
identifies the type of campaign that produced the ad event.line_item_id
(DBM only) is the DBM line item ID that produced the ad event.line_item_name
(DBM only) is the name of the DBM line item that produced the ad event.placement_id
(DCM only) is the DCM placement tag ID that produced the ad event.placement_name
(DCM only) is the name of the DCM placement tag that produced the ad event.external_customer_id
is the advertiser identifier that owns the campaign that produced the ad event.- If
product
is DBM this field represents the DBM Advertiser ID. - If
product
is DCM this field represents the DCM Advertiser ID.
- If
creative_id
is the ID of the creative ad unit that produced the ad event.- If
product
is DBM this field represents the DBM Creative ID. - If
product
is DCM this field represents the DCM Creative ID.
- If
exchange_id
(DBM only) is the ID of the exchange that served the DBM ad.insertion_order_id
(DBM only) is the DBM insertion order ID.site_id
(DCM only) is the DCM site ID for the ad event.cps
indicates which Core Platform Service the ad event belongs to. Refer to the full explanation of thecps
field earlier in the documentation for further details.
- The
warnings
is an array of warnings produced by the conversion event.errors
is an array of errors produced by the conversion event with HTTP error codes, for the following scenarios:HTTP 204
if the request quota has been exceeded.HTTP 400
when the request is considered invalid—for example, missing required parameters, and the server has fallen back to pixel tracking.HTTP 401
if the authorization token is invalid.HTTP 404
for any bad requests.
Advertiser will be able to see campaign reports in your system; advertiser will also be able to see conversion reports in DCM with the same parameters.
Additional example responses after DMA is enforced in March 2024
An example of an attributed conversion tracking response where the conversion is attributed to both Search + YouTube ad interactions but 5(2)(b) + 5(2)(c) cross-use consent is denied between the Search + YouTube CPSs:
{ attributed: 1, last_impression_ad_id: 283641088, last_impression_site_id: 1408067, last_impression_placement_id: 107616368, last_impression_creative_id: 60162352, last_impression_timestamp: 1415647607, last_click_ad_id: 283641088, last_click_site_id: 1408067, last_click_placement_id: 107616368, last_click_creative_id: 60162352, last_click_timestamp: 1415647655, last_click_exclid: "CKm0nLKhyssCFceH2wod8l4I4A", cps: "s", ad_events: [{ cps : "s", product_type: "DCM", interaction_type: "click", ad_event_type: "click", campaign_type: "Display", placement_id: 107616368, placement_name: "TEST PLACEMENT NAME", external_customer_id: 7480542, creative_id: 60162352, timestamp: 1415647655.123456, site_id: 1408067, }, { cps : "s", product_type:"DCM", interaction_type: "impression", ad_event_type: "impression", campaign_type: "Display", placement_id: 107616368, placement_name: "TEST PLACEMENT NAME", external_customer_id: 7480542, creative_id: 60162352, timestamp: 1415647607.123456, site_id: 1408067 },{ cps : "y", product_type: "DCM", ad_event_type: "click", campaign_type: "Display", placement_id: 107616370, placement_name: "Placement on Youtube", external_customer_id: 7480542, creative_id: 6016444, timestamp: 14344344.123456, site_id: 140806 }, ]}
Example of an affirmative conversion tracking response for a DBM Campaign:
{ attributed: 1, last_click_ad_id: 283641088, last_click_site_id: 1408067, last_click_placement_id: 107616368, last_click_creative_id :60162352, last_click_timestamp: 1415647655, last_click_exclid: "CKm0nLKhyssCFceH2wod8l4I4A" cps: "y", ad_events: [{ product_type: "DBM", interaction_type: "click", ad_event_type: "click", campaign_type: "Display", line_item_id: 123456789, line_item_name: "TEST LINE ITEM NAME", external_customer_id: 2550, creative_id: 512333, exchange_id: 132, insertion_order_id: 523423, timestamp: 1432681913.123456 cps: "y" }, { product_type: "DCM", interaction_type: "click", campaign_type: "Display", placement_id: 9342323, placement_name: "TEST PLACEMENT NAME", external_customer_id: 7480542, creative_id: 8234234, timestamp: 1432681913.123456, cps: "y" } ]}