Opus Growth

LinkedIn Performance Report

LinkedIn performance report.

Type
Reads only
Credits
2
Platform
LinkedIn Ads
Approval
Not needed, nothing changes

What it does

LinkedIn performance report. pivot: CAMPAIGN | CREATIVE | CAMPAIGN_GROUP | ACCOUNT | MEMBER_JOB_TITLE | MEMBER_JOB_FUNCTION | MEMBER_INDUSTRY | MEMBER_SENIORITY | MEMBER_COMPANY_SIZE ... Up to THREE pivots at once, comma-separated (pivot='CAMPAIGN_GROUP,CAMPAIGN,CREATIVE') via LinkedIn's Statistics finder; combinable pivots are ACCOUNT, CAMPAIGN_GROUP, CAMPAIGN, CREATIVE, CONVERSION. Professional demographic pivots (MEMBER_*) work one at a time. campaign_ids = comma-separated campaign ids to narrow the report. start_date/end_date (YYYY-MM-DD) override days. Performance data is kept 10 years, professional demographic data 2 years (https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/ads-reporting). time_granularity: ALL | DAILY | MONTHLY. fields: comma-separated metric list (empty = default set; up to 20). Demographic pivots have a 12-24h delay and privacy thresholds.

Each row carries `pivot_names` — the HUMAN-READABLE labels for `pivotValues`, resolved for you at EVERY level: campaign / ad set / campaign group / creative names as well as demographic labels. `pivot_names` holds the readable names for the URNs (such as urn:li:title:95); typeahead search only goes name→ID and cannot reverse them. Anything that genuinely could not be resolved remains as its raw URN in that row's `pivotValues` / `pivot_names`; `unresolved_pivot_urn_count` is the account-wide count.

With pivot=CREATIVE each row also carries `creative_content` (headline, description, landing_page, format), so for TEXT-BASED formats (textAd, spotlight, follow/jobs ads) you can correlate MESSAGING with performance directly, without a second call.

POST-BASED formats are the exception and in many accounts they are the MAJORITY of spend (Sponsored Content, Document Ads, Thought Leader Ads). There the copy lives in the referenced post, so by default `creative_content` carries `post_urn` + `post_permalink` and `ad_copy_status: "not_fetched"` instead of the text, which keeps the report fast. The copy IS retrievable: rank the rows first, then call `linkedin_ad_copy` with the top creative ids (or re-run with include_ad_previews=true) — it reads the real ad text from LinkedIn's PUBLIC Ad Library, plus `author_type` / `is_thought_leader_ad` (Thought Leader Ads) and `preview_url`. Each previewed creative costs about two extra LinkedIn requests. An internal creative name is not the ad text.

Rows also carry computed `ctr`, `engagement_rate`, `cpc`, `cpm` (ratios, not %); LinkedIn returns only raw counts. `pivotValues` is always requested even with a custom `fields` list (without it rows have no identity).

Every matching row is retained: `limit` controls only this transport response (0 = as many rows as safely fit). When `has_more` is true, call again with `page_token=next_page_token`; the remaining cached rows are returned without another LinkedIn request or credit.

MCP: linkedin_campaign_analytics

How to use it

You don't call tools by name. Write what you want in ChatGPT, Claude or another assistant connected to Opus Growth, in your own words; it picks this tool when it fits.

Parameters

NameTypeRequiredDefault
account_idstringOptional·Advertising account identifier to query or change. Use the exact ID returned by the relevant account-listing tool, not the display name.
daysintegerOptional30Number of calendar days to look back from now for this analysis or report.
pivotstringOptionalCAMPAIGNExact pivot value for linkedin campaign analytics. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation.
time_granularitystringOptionalALLExact time granularity value for linkedin campaign analytics. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation.
fieldsstringOptional·Structured field values for the selected form, entity, or provider request.
include_ad_previewsbooleanOptionalfalseWhether to include ad previews in this operation's result or change.
start_datestringOptional·Inclusive start date for the requested period, in the format required by this tool.
end_datestringOptional·Inclusive end date for the requested period, in the format required by this tool.
campaign_idsstringOptional·One or more exact campaign identifiers to target. Use identifiers returned by an Opus Growth list or create operation, not display names.
limitintegerOptional0Maximum number of rows returned in this response. When the result has_more flag is true, continue with next_page_token rather than assuming the list is complete.
page_tokenstringOptional·Continuation token returned as next_page_token by a previous call. Leave empty for the first page; pass it unchanged to retrieve the cached next page.