Sunday, March 10, 2019

Mobile App Marketing with Adobe Audience Manager

80% of smartphone users are more likely purchase from companies who have a mobile app (Google, 2018) and  up to 70% of all Internet activity happens on a mobile device (Ciodive, Nov 2017). These are some of the many statistics that remind us about the importance and relevance of consumer behavior on mobile apps. This also means that companies who have mobile apps need to invest in marketing their apps. This post will cover how can customers leverage Adobe Audience Manager to share their audiences with Demand Side Platforms that deal with mobile publisher networks for two use cases which are Retargeting and Suppression.

Mobile App Device IDs and Advertising

The first thing I want to cover is the lack of a UUID (cookie ID) on mobile apps. Mobile Apps have their own device ids that are primarily used for advertising purposes. Apple iOS has IDFA (identifier for advertisers) and Google has the (Google ID) and this is the ID that gets sent to Audience Manager to integration purposes. 

Mobile Advertising is primarily of two types:

  • In-App and Push Messaging: This is messaging and "advertising" within your own app to bring back users to your app once they've downloaded the application. The Adobe documentation covers this in a lot more detail.
  • External App Messaging: This type of advertising happens on other apps where you see ads of apps that you either have or don't have (see example below). This is what I will cover in this blog post.

Mobile App Device ID Sync

I recently wrote about the newly launched Adobe Experience Platform SDK which shows you how to deploy it using Launch by Adobe. I suggest that you deploy the new Adobe SDK on your App if you're starting new. For this post, I'll focus on SDK4.0 given that it's still the most popular SDK being used by our clients.

Assuming that you have the Adobe SDK already setup on either your iOS or Android  Apps and Audience Manager deployed, we need to make sure you send the respective device advertising ID for iOS and Android to the SDK which enables advertising on your apps for Audience Manager. The methods are outlined here:

  • iOS: setAdvertisingIdentifier (More information here)
  • Android: submitAdvertisingIdentifierTask (More information here)
Once you deploy the device ID sync, you should expect to see the following output in a packet sniffer for your iOS app as an example: 

Please note that 20915 a unique identifier for iOS and needs to be used in case you want to upload any records for specific device IDs to AAM.

Validate Mobile Apps Signals in Audience Manager

The first step is to validate incoming mobile app signals in AAM which you can do by looking for 'c_contextData.a.Launches' to confirm if a mobile app signal is coming into AAM. This attribute should show up only if you have a mobile app forwarding data to AAM. 

Create Mobile App Traits in Audience Manager

Once mobile app signals are identified, we need to create a mobile app specific data source by selecting 'Device Advertising ID' as the type. Both iOS and Android app specific traits will be created based on this setting.

The next step is to create traits tied to our specific use cases of Retargeting and Suppression. 

Retargeting Trait

The following example is to setup a trait for retargeting users who added to cart but did not purchase. The numbers in the trait builder are evaluated as strings so we have to be careful with the logic. The other thing to note is that you will have to send in specific context data variables which map to various events in the checkout flow. 

Exclusion Trait (Suppression using Segments)

Suppressing an audience simply means that we want to suppress certain audiences who've either purchased a product or in my case, I'm showing an example of users who have launched the app who will be suppressed using an AAM segment. 
One other thing to note is the you can create these traits in all lowercase.

Map to Segments and Activate

Once retargeting and exclusion traits have been created, map these to segments. This particular example excludes users by leveraging instant cross device suppression using the "AND NOT" logic. You can also suppress the audience at the DSP level but my recommendation is to exclude it in AAM. 

Finally, map segments to AAM destinations for activation. A few examples of Demand Side Platforms that work for mobile apps are AppNexus and DataXu. Criteo is another company that specializes in mobile app retargeting. 

So that's it! I hope that gave you some insight on how to execute media campaigns on mobile apps with the sole goal of maximizing your return on ad spend.


Unknown said...

Hi thanks for this write up, super informative!!

One question, in your sample ID sync:

is "DSID_" simply your Integration Code for the target datasource?


Rohan Kapoor said...

@casey Thanks for your comment. 20915 is the data source id for iOS which isn't shown in the AAM UI. It's primarily used for ID syncing and uploading additional attributes to AAM so is evaluated as an integration code as well. Similarly 20914 is the DPID for Android and it follows a similar process.

Anonymous said...

Hi Rohan,

Thanks for informative post but I have specific question regarding the mobile pixels. In d_cid_ic=20914%01 does the automatically collects the device data or we have to enter the 32 character alphanumeric value manually?
Please clarify as my consultant is informing Publisher has to give that data and the Google team is not supporting in this matter.


Rohan Kapoor said...

@Raghav, the alphanumeric value needs to be added in your mobile app as part of the id sync which maps the mobile app data source with your login id.

Anonymous said...

@Rohan - Actually its the the GAID/IDFA macros we have to implement right. I am not getting any macros associated with it neither the Google support team helped nor the publisher.

Rohan Kapoor said...

I'm not sure if macros are involved in this setup as the ID sync with GAID is coded directly in the app using the syncIdentifier method listed here: Once your mobile app developer sets up the id sync, you can validate the image request like I've shown above (d_cid_ic). Hope this helps.