DMPs: data in, data out

I still remember vividly how, after coming back from my summer holidays in 2014, my manager told me to book a flight to NYC to get trained on Adobe Audience Manager (AAM). The training was a hit and miss type: I understood some concepts, while others were totally alien to me. It did not help the fact that, after this training, I spent 6 months without working on AAM projects.

However, the 2 other EMEA consultants left and I became, for a while, the only AAM consultant for the whole region. That helped me learn a lot very fast and I started to understand in depth what a DMP was. I wrote an initial introduction to AAM long time ago and today I want to update how I understand it.

Double funnel

At the core of any DMP, there is a very simple functionality. It very much looks like an ETL: you feed it with raw data (signals), it processes this data and it spits segments out. This is the simplest explanation and the beauty of it. In fact, it does nothing else and, as you can see, on its own, it is pretty useless.

With this explanation, you may be wondering, why does it even make sense to have a DMP like AAM? Could an ETL do the same? The answer is speed: you need to create audiences in real time. Think about it: AAM is capable of evaluating 100,000 traits and 20,000 segments in less than a second, for every server call. Could your ETL do that?

Data in

AAM ingests data as key/value pairs associated with a visitor or user. Each key/value pair is called a signal. You can send signals to AAM in two different ways:

  • Real-time. These are the HTTP calls made directly to the Data Collection Servers (DCS) using the DCS API. There are in various data centres around the world, to make the round-trip time as low as possible. You usually see this case in:
    • Adobe Analytics Server-Side Forwarding, which is the most common way of sending your website data to AAM.
    • Tracking pixels, either in banners or 3rd party websites.
  • Batch. You can also send files to AAM, which are processed in batch. Typical use cases for this format:
    • 1st data coming from your own systems, typically from your CRM.
    • 2nd party data shared from another AAM customer.
    • 3rd party data from the Adobe Marketplace.

I already explained the UI and configuration in the post on data sources.

One word of caution, do not confuse the DCS API with the REST APIs. The former is used to send data to AAM, while the latter allows the configuration of AAM, instead of using the UI.


AAM gets the signals and applies the rules you have configured in the UI:

  • Traits. It would be impossible to process all signals, as there could be millions of them. Instead, you select those that you are interested in. These are your traits.
  • Segments. With the traits you have selected and using boolean logic, you define segments.

Although this may seem very simple, remember what I said earlier. For the real-time signals, AAM must be able to do all this processing in less than a second. I know I have simplified this part and left out some functionality, but AAMs core is made of traits and segments.

Data out

The only type of data AAM produces are audiences, which are the visitors or uses who qualify for each segment. However, as I have mentioned, AAM cannot do anything with the audiences internally. It is up to other systems to use these audiences. There are 3 types of destinations:

  • Server to server (S2S). These are the integrations with DSPs and similar tools. As with the data in, there are two types:
    • Real-time. These are HTTP calls from AAM servers to the DSP server, in (near) real-time, with an ID and the segments it qualifies for. In case it is not clear, AAM makes one of these calls for each visitor, as a consequence of a real-time call to the DCS.
    • Batch. Every predefined time, AAM calculates all audiences and sends them via files to the DSPs.
  • URL-based destination. Create a pixel on the HTML page the visitor is browsing if he/she qualifies for a segment.
  • Cookie-based destination. Create a cookie in the browser of the visitor with the segments he/she qualifies for.

There is one special case: Adobe Target. It has a special connection with AAM, which happens behind the scenes and Adobe takes care of it. The only configuration parameter, which you need to communicate to your Adobe CSM or Client Care, is whether you want this connection to be done on every page view or once per session.


These are the connections to the left of the left funnel and to the right of the right funnel.

If you re-read the previous sections, you will notice that AAM has no activation features. Your display or Adwords campaigns, your personalisation activities, your creatives, your messages… must be managed in a separate tool. In other words, in order to make any useful use of the tool, AAM must be connected to other systems; on its own, it is meaningless. Since this is a fundamental requirement, AAM must very easily integrate with other tools. Its connections with Analytics and Target are not only out of the box, but seamless. Adding DSPs takes a bit of time, but it is only the initial configuration; AAM already has platform-wide connections with dozens of DSPs.

I remember speaking with a colleague a few years ago. He was surprised to see that AAM was the easiest tool to integrate with. But then he immediately realised that this was so because AAM was designed and built to be easily integrated with other platforms.


Image by

9 thoughts on “DMPs: data in, data out”

  1. Thank you Pedro

    I am learning AAM and the concepts seem fine; but using it productively is a challenge in terms of configurations.

    Can AAM be used to send all data to AA without having the AA extension in Launch?

    Thank you

    • The JavaScript extension is mainly to parse the response from AAM and do something useful with it in the browser. The connection between AA and AAM happens server-side, so, the data exchange does not need the extension.

  2. Hi Pedro,

    I’m wondering, you mention, “Your display or Adwords campaigns, your personalisation activities, your creatives, your messages… must be managed in a separate tool. In other words, in order to make any useful use of the tool, AAM must be connected to other systems”.

    I’ve made the connection to my display campaigns by ingesting the DCM log files and am wondering, since you mention Adwords, is there an integration to this that I have not yet found? Can search feed into AAM?

    Please let me know. Love the blog by the way!

    • Thanks for following my blog, Glenn!

      There is no server-to-server connection with AdWords. However, you can use RLSA and URL-based destinations, which I will explain in a future post. The idea is to create, for each remarketing list in Google Adwords a segment in AAM. Then, when you qualify for an AAM segment, AAM will insert a pixel to make the browser qualify for the associated remarketing lists in AdWords. Some tools like Adobe AdCloud have features to ease the work with RLSA.

  3. Hi Pedro,

    I think your blog is very valuable to me!
    I am trying to set up an integration between AAM and Salesforce Marketing Cloud i.e. sending CRM ID of users who qualifies for a given segment (let it be segment “X”) in AAM to SFMC, in order to send emails to them and so on…

    But, I understand that there is NO standard server-to-server integration between AAM and SFMC. Am I right?

    So, the two methods I am studying are:
    1. URL destinations (if SFMC FTP folders can receive that http calls). Do you think it is a viable option?
    2. Customer Data Feed. Can CDF files be sent to a FTP folders other than s3 bucket? Can I export data qualifying for a given segment only instead of whole data?

    I’m sorry for the amount of questions, but I can’t see the right solution.
    Please let me know.


    • Hi Francesco,
      There is an option to generate the files you need. It will not be a direct integration, but you can generate a file with CRM IDs and segments that this CRM ID qualifies for. You need to work with your assigned Customer Success Specialist of Adobe consultant to generate it.

  4. Hi Pedro,

    thanks for your kind reply. Is the option you wrote about a different thing than Customer Data Feed, right?


    • That’s correct, it’s two different types of exports. The CDF is ALL the data, whereas the traits or segments export is just that information.


Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.