FlowRunner
PricingContact
Theme
Start Free

LinkedIn Ads Reports

Advertising

Pull 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.

3 actions OAuth available
The weekly reporting schedule fires, or the finance close job signals that the period is final
Agent calls Get Ad Statistics grouped by Campaign and Creative for the period, requesting spend and conversion metrics
Agent compares the returned row count against the endpoint's 15,000 row ceiling to detect a silently clipped result
Agent calls Get Attributed Revenue Metrics for the same accounts to pull return on ad spend and closed-won revenue
Agent confirms each account actually returned revenue metrics rather than an empty set, which indicates no CRM is connected
Agent writes the combined performance and revenue rows back into the CRM and the warehouse where the revenue already lives
Any clipped result or missing-revenue account stops the flow, and the marketing ops owner rules on it before the number reaches a budget decision

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

Numbers live in two places Spend sits in Campaign Manager and revenue sits in the CRM, joined by hand in a spreadsheet
Reporting is a person's Monday Someone exports, pivots and pastes before anyone can look at the week
Truncation is invisible A query that hits the row cap returns a plausible number with no warning attached

With FlowRunner

Spend meets revenue in one row Performance and attribution land together in the system the revenue team already works in
Reporting is a scheduled read The pull runs on its own and a person reads the result rather than assembling it
Truncation is reported A response at the row ceiling is flagged before the figure is published anywhere

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 processes routinely
Detects both and to stop
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

3 actions

Reporting

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.