Almost everything in ZenABM is built on LinkedIn ad reporting data. It is worth knowing how we fetch it, how we store it, and where it comes with caveats.
What we fetch
ZenABM pulls your LinkedIn ad reporting at three levels, and stores each one separately rather than deriving it from the others:
Ad account
Overall interactions across the whole ad account, across all of your Campaigns.
Campaign
Interactions with the Campaign pivot, aggregated for each of your LinkedIn Campaigns.
Ad set
Interactions per ad set, the most granular level.
How often it syncs
Data is fetched in weekly intervals, every Monday (00:00 GMT). Your first sync backfills 90 days of your historical data; after that, each Monday adds the week that just closed.
Why weekly, and why our numbers are more accurate than native Campaign Manager
LinkedIn's own accuracy guidance says demographic metrics are approximated to protect member privacy, and that to minimize the effect of that approximation you should request a full time period instead of adding up daily metrics for that time period.
What this means in practice: the more granular your query, the more data will be obfuscated to protect LinkedIn members' privacy.
ZenABM requests and stores data over longer time periods and subtracts the differences. That often lets our users see more detailed data than the native Campaign Manager does.
What we store, and under whose rules
We store the data exposed by LinkedIn's API, in compliance with all of their Data Storage Requirements for the Marketing API Program, which set how long each type of data may be retained.
What this unlocks
Storing all three levels of granularity side by side is what lets us show how a single Company performed across your different motions. You can see which Campaigns and which Ad Sets reached it, when, and to what degree. That is the raw material for accurate company journeys, and for connecting ad activity to the deals attached to those accounts.
The important caveat: numbers won't always roll up
LinkedIn's reporting API is approximate by design, and comes with hard restrictions.
The practical consequence:
Adding up clicks from all your ad sets will often (but not always!) be less than the clicks reported on their parent campaign. Adding up all campaigns will often be less than the ad account total. Nothing is missing. It follows the logic stated above: the more granular the query, the more obfuscated the results.
LinkedIn says as much directly: you'll see inconsistencies when "adding campaign level data and comparing it to account level data," and their advice is to "select the highest reporting level you want to view."
So read each level for what it is. Use ad account totals for overall performance, campaign figures for campaign performance, and ad set figures for ad set reporting. Don't treat the lower levels as a decomposition of the higher ones.
Where you'll see this data
Dashboard
The ad account view, with overall spend, revenue and account movement. See Dashboard.
Company Insights
Per-company engagement, stages, deals and activity, built from the company breakdown. See Companies.
Job Title Insights
Which roles and personas your ads reached. See Job Titles.