Adform API
Getting the right data in your dashboard or in Google BigQuery
What is Adform?
Adform is one of the leading advertising technology companies in the world and provides software to automate digital advertising. Adform does not have it's own media so it is completely independent. As they say: 100% Media agnostic.
One of the key benefits is that Adform is an open system with an elaborate API. This allows external technology partners like Cervinodata to fetch, store, combine, interpret and deliver the performance statistics to external databases (like Google BigQuery) or directly to dashboard tools like Klipfolio or Google Data Studio.
Adform API
The Adform API keeps getting better and better (see the documentation here). But it is mostly focused on managing Ads and campaigns via the API. Not so much on getting advertising campaign statistics out and getting it in an Adform dashboard. However, it is possible to fetch key advertising statistics from the Adform API.
If you know where to find it, it is possible. For more information about the Adform API related to fetching campaign performance statistics, check out these links.
Which Metrics and dimensions do you really need?
To fetch data from the Adform API, there is no need to get all the metrics by every possible dimension. Thinking about this beforehand, and determining which metrics and dimensions you really need, will save a lot of storage capacity and will make enabling the Adform API a lot easier.
Adform API metrics
Based on our experience, there is a limited list of metrics that matter (for agencies and their clients). See the list below.
- impressions
- clicks
- conversions
- cost
- sales
- events (videoPlayStart)
- videoEventsPlayTimePercent (25Percent)
- videoEventsPlayTimePercent (50Percent)
- videoEventsPlayTimePercent (75Percent)
- videoEventsPlayTimePercent (100Percent)
Adform API dimensions
Most of the time, these dimensions will do the trick:
- date
- clientID
- campaignID
- lineItemID
- bannerID
- creative size
- bannerAttribute1ID
- tagID
Consider adding an "Organization" level that allows you to group Adform accounts (for instance multiple brands) that belong to one organization (for instance Unilever or Heineken). This dimension does not exist in the Adform API, but should be added to your data model.
Cervinodata API now available
Do you need multiple Adform accounts together in one API endpoint? Or the key metrics from Adform combined with other platforms? Feel free to give the Cervinodata API a spin. More info here.
The Cervinodata is now also available as a client api in Python and PHP, free to use in Github.
Things to consider before you go for it
- The reporting stats API will become depricated around September 2019. This means by that time you will need an asynchronized mechanism. Also, you will have to use Oauth in stead of just a username and password, which is also more complex. This will make setting up the API more complex.
- There is a limit of 10 metrics and 8 dimensions per call. So if you need more, you will need to develop a mechanism that combined multiple files.
- Another issue we came across is that for each data endpoint, you need to define specific scopes (see screenshots below). Although this seems straight forward, we found that, some dimensions required more scopes than where specified. It took a lot of time to find a solution for this.
- Last but not least, once you have the scopes defined, the user needs to make sure that there is permission for all the required scopes, otherwise there is no access.
Adform API scope definition
Adform API scopes approved by the user
Consider a relational data model
Since you probably use more advertising channels than just Adform, it's wise to consider creating a relational data model that allows you to blend Accounts, Campaings and e-commerce data into one data file. Within Cervinodata, we have created a relational data model that could give you some inspiration. Request the Cervinodata relational data model here
The Cervinodata relational data model lives both in our application and in Google BigQuery. With Cervinodata Gold, the relational datamodel is automatically created in Google BigQuery (on first sync). After that, Cervinodata syncs the collected data from the Adform API and other channels to Google BigQuery. From Google BigQuery, you can distribute the data to the exact table(s) you need for that specific client or report.
Consider a sync and back up mechanism
It will take some time to fetch from the Adform API and sync it with Google BigQuery. You should consider a backup and sync mechanism. We chose to use the following:
- A syncronization data set
- A Production data set
- A backup data set
This makes sure that all the data has the same time stamp, so you're always sure your data is correct. See the flow we use, on the right. If you want to know how this works, feel free to request more documentation.
Do it yourself or outsource?
Setting up the connection with the Adform API will take time. Once set up, you will need some time every now and then, to update the Adform API to a newer version. The same is true for all the other advertising platforms. Here's a short overview of advantages and disadvantages of doing it yourself.
Do it yourself
Benefits
- Complete flexibility in setting it up
- Full control over your data
- Data privacy
Downside
- Claims development resources (ongoing)
- A project like this will take a long time to set up. If it is not your core business, there's a high chance of not finishing.
- It is quit boring work. Make sure you put people on it that like doing it. Do you have those in your team?
Outsource
Benefits
- Up and running in minutes
- No claim on development resources
- API connections always up-to-date
Downside
- Less data privacy (however, Cervinodata Gold customers get a separate instance, where your data is completely separated from other clients)
- Maybe not every metric/dimension is available yet
Cervinodata and Google BigQuery
If you are considering outsourcing your data management, feel free to get in touch. We're happy to help you out.
Or check out more relevant pages here: