Before you run a report
You need:- The HireOtto LinkedIn Ads server connected to your AI client.
- A linked LinkedIn identity with access to the intended ad account.
- The exact LinkedIn ad-account ID.
- A reporting start date in
YYYY-MM-DDformat. - A clear question, reporting level, and primary outcome metric.
List the LinkedIn ad accounts available through my default profile. Show each account ID, name, currency, my role, and whether I can write to the account. Refresh the account list before returning the result. Do not change anything.
Choose the reporting level
HireOtto uses a marketer-friendly hierarchy:Account → campaign group → ad set → creative
The level parameter accepts the following values:
campaign in the HireOtto reporting parameter means campaign group. ad_set maps to the LinkedIn object called a campaign in the API. Keep this distinction in mind when copying IDs from Campaign Manager or another export.
If ids is omitted, HireOtto reports across the full ad account. If you provide ids, each ID must belong to the selected level.
Run a useful performance report
A strong first report uses a complete period and raw metrics that match the business question. For a website-conversion campaign, that commonly means:impressionsclickslandingPageClickscostInLocalCurrencyexternalWebsiteConversions
For LinkedIn ad account 123456, report campaign-group performance for the previous 30 complete days, ending yesterday. Include impressions, clicks, landing-page clicks, spend in the account currency, website conversions, and the raw values used to calculate CTR, cost per landing-page click, conversion rate, and CPA. Show the 50 most material rows inline, create a CSV for the complete result, identify the campaign groups driving the change, and separate observations from recommendations. Do not change anything.
Compare complete periods
Run the same fields at the same level for both periods. Keep launches, promotions, pauses, attribution lag, and major budget changes visible so a structural change does not masquerade as an optimization insight.For LinkedIn ad account 123456, compare the last completed Monday-to-Sunday week with the previous completed Monday-to-Sunday week at campaign-group level. Use the same raw metrics and entity scope for both periods. Show spend, impressions, landing-page clicks, website conversions, CTR, cost per landing-page click, conversion rate, and CPA. Identify material movers, call out low-volume rows, and finish with Do now, Investigate, and Monitor queues. Do not change anything.
Drill down without changing the question
When a campaign group moves materially, keep the date range and metrics fixed while changing the reporting level. This isolates whether the movement came from one ad set, broad delivery, or the creative mix.For LinkedIn ad account 123456 and campaign group 987654, break down performance by ad set for 2026-08-01 through 2026-08-31. Include impressions, clicks, landing-page clicks, spend in the account currency, and website conversions. Preserve the campaign-group context, calculate derived rates from the raw values, flag insufficient data, and explain which ad sets account for the campaign-group result. Do not change anything.
For LinkedIn ad account 123456 and ad set 456789, compare creative performance for 2026-08-01 through 2026-08-31. Include impressions, clicks, landing-page clicks, spend in the account currency, and website conversions. Keep sample size beside every rate, note uneven delivery or different start dates, and classify each creative as Scale carefully, Investigate, Test next, or Insufficient data. Do not change anything.
Add a professional-demographic breakdown
Professional-demographic reporting helps answer whether the campaign reached and engaged the intended market. It is aggregated, approximate reporting—not a list of individual members or leads. HireOtto supports these professional-demographic pivots:For LinkedIn ad account 123456 and campaign group 987654, break down eligible performance by member seniority for the previous 30 complete days, ending yesterday. Include impressions, clicks, and spend in the account currency. Use a full-period view, show the raw values, explain privacy suppression and reporting delay, and identify only patterns supported by enough data. Do not infer individual identities and do not change anything.
For LinkedIn ad account 123456 and campaign group 987654, report member-company performance for the previous 90 complete days, ending yesterday. Include impressions, clicks, and spend in the account currency. Keep every returned organization URN visible, resolve names only when they can be verified, explain why companies outside the targeting list may appear, and do not recommend exclusions from a company name alone. Do not change anything.
Interpret demographic data carefully
LinkedIn applies privacy and completeness rules to professional-demographic reports:- Demographic data can arrive later than ordinary performance data. The LinkedIn Ads API documents a typical 12–24 hour delay, while Campaign Manager guidance says the data can take up to 48 hours to appear. Allow 48 hours before treating a missing recent segment as a tracking or targeting problem.
- Values with fewer than three events are removed from API results.
- Only the top 100 professional-demographic values are returned for each creative for each day.
- Professional-demographic metrics are approximate and may not sum exactly across days, levels, or similar date ranges.
- Professional-demographic data is retained for two years; ordinary performance data has a longer retention period.
- A company in the report is evidence that eligible delivery or engagement was associated with that company. It is not proof that the company was explicitly targeted or that its traffic was wasteful.
Parameters and defaults
The reporting tool isget_linkedin_ads_report.
metrics is omitted, HireOtto requests:
dateRange and pivotValues when they are missing from a custom metric list. They count toward LinkedIn’s 20-field limit.
Output modes
summaryreturns inline rows only.summary_and_csvreturns inline rows and creates a temporary CSV when the report has data.csv_onlyreturns report metadata and the temporary CSV without placing the rows in chat.
export_limit cannot retrieve rows that LinkedIn did not return. The CSV link expires after export_ttl_minutes; download it before it expires or rerun the report.
For LinkedIn ad account 123456, return ad-set performance for 2026-07-01 through 2026-08-31 as CSV only. Include impressions, clicks, landing-page clicks, spend in the account currency, website conversions, and pivot values. Export every row LinkedIn returns, state the total and exported row counts, and warn me when the upstream response limit may make the result incomplete. Do not change anything.
Metric and pivot compatibility
Some metrics are available only for particular objectives, ad formats, or pivots. HireOtto rejects unlisted metrics and blocks known-incompatible professional-demographic combinations before sending the report. Do not use these fields withMEMBER_* pivots:
conversionValueInLocalCurrencycardImpressionscardClicksviralCardImpressionsviralCardClicksapproximateMemberReach
Common failure cases
The report is empty
An empty report is a valid result. It can mean:- No activity matched the account, IDs, pivots, and date range.
- The connected LinkedIn identity lacks read access to the requested data.
- Recent demographic data has not arrived yet.
- Privacy thresholds removed all eligible demographic values.
Diagnose this empty LinkedIn Ads report without changing anything. First verify access to ad account 123456, then confirm the requested entity IDs belong to the selected level. Run a broad account-level performance report for the same dates, check whether the date range contains delivery, identify any incompatible metrics or pivots, and explain whether no activity, permissions, reporting delay, or privacy suppression is the most likely cause. Keep confirmed facts separate from possibilities.
The IDs do not match the level
A campaign-group ID used withlevel=ad_set, or an ad-set ID used with level=creative, can return an error or no matching rows. Read the hierarchy first and preserve the account, parent, and child IDs in the report request.
The metric is unsupported
Use exact LinkedIn field names. Derived measures such as CTR, CPC, CPM, conversion rate, and CPA should be calculated from raw metrics after retrieval.The report is too granular
Two or three pivots use LinkedIn’s statistics reporting mode. More dimensions increase sparsity, and more than three pivots are rejected. Start with one pivot and add another only when it answers a specific follow-up question.Old daily dates shift to month boundaries
LinkedIn can round oldertimeGranularity=ALL ranges to month boundaries when the requested start or end falls outside its daily-granularity retention window. Read the returned dateRange instead of assuming it matches the request exactly.
The CSV link expired
Rerun the same read-only report. Extendingexport_ttl_minutes changes only the temporary link lifetime, not LinkedIn’s reporting retention or row cap.
Turn the report into decisions
Use a consistent review sequence:- Confirm account, currency, date range, and primary outcome.
- Read the account or campaign-group pulse.
- Isolate material movers at ad-set level.
- Review creative performance with delivery volume beside each rate.
- Add one professional-demographic view to test an audience hypothesis.
- Label findings as Act, Investigate, Monitor, or Insufficient data.
- Keep any proposed change separate from this read-only reporting workflow and require explicit review.
For the previous 30 complete days ending yesterday, compare LinkedIn Ads landing-page clicks and website conversions for ad account 123456 with GA4 sessions, engaged sessions, and key events for traffic tagged as LinkedIn paid. State each system's date range and definitions, preserve both sets of raw values, identify material discrepancies, and propose verification steps. Do not merge unlike metrics and do not change either platform.
Access, plans, and credits
LinkedIn Ads reporting is available on Free, Starter, Pro, and Agency. A report call uses 5 credits on credit-based plans; Agency includes unlimited credits.profile_id is optional for the default connection, while multiple named LinkedIn profiles require Agency.
The LinkedIn identity still needs access to the ad account. Viewer access is sufficient for reporting. Write permissions are not required because this workflow does not change LinkedIn Ads.
See HireOtto pricing for current plan allowances and LinkedIn’s reporting documentation for upstream retention, privacy, delay, and response restrictions.