LinkedIn Ads Reports
AdvertisingPull LinkedIn advertising performance and revenue-attribution analytics through the LinkedIn Marketing Reporting API. Agents read campaign results back into the systems where the revenue actually landed, closing the loop on what the spend produced.
What This Integration Enables
LinkedIn Ads Reports is the reading half of an ad account. It is deliberately read-only, and it is the third leg of a set FlowRunner already carries: LinkedIn Matched Audiences pushes an audience out of your systems and into LinkedIn, LinkedIn Offline Conversions sends the conversions that happened off-platform back so LinkedIn can attribute them, and this connector reads the resulting performance out again. Audience out, conversions back, results out. Run all three and the loop closes without anybody exporting a CSV. Entity management, meaning the campaigns and creatives themselves, lives in LinkedIn Ads Campaign Management, which this service reports on rather than duplicates.
Three actions is the entire surface, and the third one is why the page exists. Get Ad Analytics groups performance by a single pivot. Get Ad Statistics groups by up to three, so you can ask for Campaign by Creative by Serving Location and get one row per combination. Get Attributed Revenue Metrics is different in kind: for accounts with a CRM connected in Campaign Manager, it returns revenue won, return on ad spend, closed-won opportunities, average deal size and average days to close. That is not a marketing metric wearing a finance hat. It is the number the finance team already recognises, and LinkedIn is holding it in a tool that finance does not open.
Which is the argument this connector makes. The point of reading performance out is not to build another dashboard beside the one Campaign Manager already provides. It is to put the figure where the revenue actually landed. Return on ad spend attached to the account record in HubSpot or Salesforce is a fact a salesperson can act on. The same figure in a warehouse table in Snowflake joins to pipeline and lets someone ask a question that spans both systems. The same figure in a Campaign Manager tab is a screenshot waiting to be pasted into a deck.
Two constraints from the API shape how you should build on it. The reporting endpoints do not paginate and cap at 15,000 rows, so a three-pivot query over a long window can return a result that is complete-looking and incomplete. And every returned row identifies its pivot values as URNs such as urn:li:sponsoredCampaign:123, which you resolve to human names through the campaign management service. Neither is a defect. Both are things a flow should handle explicitly rather than discover in a board meeting.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Return on ad spend written onto the account record
Monthly, the agent calls Get Attributed Revenue Metrics for each ad account with a CRM connected, grouped by Campaign. It receives revenue won in USD, return on ad spend, closed-won opportunity counts, average deal size and average days to close. It resolves the campaign URNs to names, maps campaigns to the target accounts they were built for, and writes the result onto the account records in the CRM. The next time an account executive opens one of those records, the LinkedIn contribution to that account's revenue is a field on the page rather than a question someone has to go and ask marketing. Note the honest limit: attribution describes influence, and the window has to be between 30 and 366 days and inside the last year.
A demographic read that changes who you target next
The agent runs Get Ad Analytics with a member professional-demographic pivot, Seniority or Job Function or Industry, over the last completed month for a single campaign. The result describes who actually engaged, which is frequently not who the campaign was built for. The agent posts the breakdown into Slack for the campaign owner alongside the previous month's for comparison. Where the engaged audience has drifted away from the intended one, the correction is a matched-audience change, and the agent can hand the segment definition straight to LinkedIn Matched Audiences. Two caveats the flow should carry: conversion, carousel and reach metrics are not available with demographic pivots, and demographic data is delayed by 12 to 24 hours.
The daily snapshot that becomes a trend line
Every morning the agent calls Get Ad Statistics grouped by Campaign for the previous day, requesting spend, impressions, clicks and external website conversions, and appends the rows to a warehouse table or a Google Sheets tab. Doing it daily rather than pulling a range on demand matters for a specific reason: LinkedIn retains performance data for ten years but demographic data for two, and a daily snapshot is a copy you own on your own retention terms. Over a quarter this accumulates into the trend line nobody has because everybody re-queries instead of recording.
Human-in-Loop Highlight
This connector cannot spend a penny. It reads. So the honest gate is not on one of its own writes, because it has none, and pretending otherwise would be theatre. The gate is on the number it produces, and there is a precise moment where that number stops being trustworthy and does not say so.
The adAnalytics endpoints do not paginate. They cap at 15,000 rows. A Get Ad Statistics query grouped by three pivots over a quarter can cross that ceiling easily, and when it does the response is not an error. It is 15,000 perfectly well-formed rows, with plausible spend and plausible conversions, missing an unknown remainder. Sum them and you get a number that is wrong in one direction only, always understating. Feed that into a return on ad spend calculation and the campaign that got clipped looks like the worst performer in the account, which is precisely the campaign somebody is then going to defund. Get Attributed Revenue Metrics has a quieter version of the same problem: an account without a CRM connected in Campaign Manager does not report that it has no CRM connected, it simply returns nothing, and an empty revenue figure reads as zero revenue rather than as no data.
So the agent is built to detect both and to stop. It counts the rows it received and compares them against the ceiling. It checks whether every account it asked about actually returned revenue metrics. Where either check trips, it does not publish, it does not write to the CRM, and it does not feed a budget flow. It raises a human-in-the-loop step and asks the marketing ops owner through their usual channel: "Q3 statistics for Campaign by Creative by Serving Location came back at exactly 15,000 rows, which means the result is clipped and the spend total below it is a floor, not a total. Do I narrow the pivot combination, split the date range into months, or do you want the partial figure anyway with the caveat attached?" The person answers in one line and the flow continues.
That is the digital andon cord applied to a reporting connector. The agent is not asking permission to read. It is refusing to hand you a number that the API declined to certify as complete, because the failure mode here is not a broken flow that anyone would notice. It is a confident, well-formatted, quietly wrong figure arriving in front of somebody who is about to move budget with it.
Agent Capabilities
3 actionsReporting
3- Get Ad Analytics Retrieves ad performance analytics grouped by a single pivot using the `analytics` finder. Choose what to group by, covering Account, Campaign Group, Campaign, Creative, Advertiser Company, Conversion, Serving Location, Placement, and member professional-demographic pivots such as Company, Industry, Seniority, Job Title, Job Function, Country and Region. Set the time granularity to Entire Range, Daily, Monthly or Yearly, and give it a date range. Scope comes from the most specific of the selected Campaign, Campaign Group or Ad Account. Request up to 20 metrics through Fields, which defaults to impressions and clicks, with `pivotValues` and `dateRange` always included so every row is interpretable. Use it for the single-dimension questions: how did each campaign do, or who engaged with this one. The endpoint does not paginate and caps at 15,000 rows, and conversion, carousel and reach metrics are unavailable with demographic pivots. Requires the `r_ads_reporting` scope.
- Get Ad Statistics Retrieves ad performance statistics grouped by up to three pivots using the `statistics` finder, producing one row per pivot-value combination. Where Get Ad Analytics answers how each campaign performed, this answers how each creative performed within each campaign in each serving location. Set the time granularity and date range, and optionally filter by campaign type and objective; scope again comes from the most specific of Campaign, Campaign Group or Ad Account. Request up to 20 metrics through Fields. This is the action to use for the granular snapshot a warehouse table is built from, and the action most likely to run into the 15,000 row ceiling, so a flow using it should count its rows. Requires the `r_ads_reporting` scope.
- Get Attributed Revenue Metrics Retrieves revenue-attribution metrics for an ad account using the `attributedRevenueMetrics` finder, describing LinkedIn marketing's influence on CRM revenue. Groups by up to three of Account, Campaign Group and Campaign, and returns metrics including revenue won in USD, return on ad spend, opportunity win rate, closed-won opportunities, average deal size and average days to close. The account must have a CRM connected in Campaign Manager, the date range must be between 30 and 366 days, and it must fall within the last year. This is the action that lets an agent write a revenue figure back onto the record the revenue belongs to, and an account with no connected CRM returns nothing rather than reporting the absence, which is worth checking for explicitly. Requires the `r_ads_reporting` scope.
Frequently Asked Questions
What can FlowRunner do with LinkedIn Ads Reports?
FlowRunner agents can run Get Ad Analytics, Get Ad Statistics, and Get Attributed Revenue Metrics in LinkedIn Ads Reports.
Does connecting LinkedIn Ads Reports to FlowRunner require OAuth?
Yes. LinkedIn Ads Reports connects to FlowRunner with OAuth 2.0, so agents authenticate without handling raw credentials.
Can LinkedIn Ads Reports trigger a FlowRunner workflow automatically?
LinkedIn Ads Reports doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with LinkedIn Ads Reports
$100 in credits. No card required. Connect in minutes.