li_get_conversion_performance
Fetch conversion performance per event type for LinkedIn campaigns. Compare cost-per-conversion, impressions, clicks, and spend across insight tag events. Scope to specific campaigns or account level.
Instructions
Fetch conversion performance broken down by conversion event (CONVERSION pivot). Returns externalWebsiteConversions, externalWebsitePostClickConversions, externalWebsitePostViewConversions, impressions, clicks, and spend per conversion event. Use to compare cost-per-conversion across event types, diagnose which Insight Tag events are driving value, or build a funnel from impression → click → conversion. Scope to specific campaigns or report at account level.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_ids | No | Campaign numeric IDs or URNs to scope the conversion report. Omit for account-level. | |
| ad_account_id | No | ||
| start_date | No | Start of date range. Accepts YYYY-MM-DD, today, yesterday, or NdaysAgo. Default: 28daysAgo. | 28daysAgo |
| end_date | No | yesterday | |
| fields | No | Comma-separated metrics. Default: externalWebsiteConversions,externalWebsitePostClickConversions,externalWebsitePostViewConversions,impressions,clicks,costInUsd,costInLocalCurrency |
Implementation Reference
- src/index.ts:155-160 (registration)MCP server registration of the li_get_conversion_performance tool. Maps the tool name to the schema and handler function.
server.tool( "li_get_conversion_performance", "Fetch conversion performance broken down by conversion event (CONVERSION pivot). Returns externalWebsiteConversions, externalWebsitePostClickConversions, externalWebsitePostViewConversions, impressions, clicks, and spend per conversion event. Use to compare cost-per-conversion across event types, diagnose which Insight Tag events are driving value, or build a funnel from impression → click → conversion. Scope to specific campaigns or report at account level.", getConversionPerformanceSchema, async (args) => { try { return ok(await getConversionPerformance(args)); } catch (e) { return err(e); } } ); - src/tools/conversions.ts:57-72 (schema)Zod schema defining the input parameters for getConversionPerformance: campaign_ids, ad_account_id, start_date, end_date, fields.
export const getConversionPerformanceSchema = { campaign_ids: z .array(z.string()) .optional() .describe("Campaign numeric IDs or URNs to scope the conversion report. Omit for account-level."), ad_account_id: z.string().optional(), start_date: z .string() .default(DEFAULT_START) .describe("Start of date range. Accepts YYYY-MM-DD, today, yesterday, or NdaysAgo. Default: 28daysAgo."), end_date: z.string().default(DEFAULT_END), fields: z .string() .optional() .describe(`Comma-separated metrics. Default: ${CONVERSION_FIELDS}`), }; - src/tools/conversions.ts:74-106 (handler)Handler function that builds a LinkedIn Ad Analytics API request with CONVERSION pivot, date range, fields, and optional campaign/account scoping, then returns raw API response via liGetRaw.
export async function getConversionPerformance(args: { campaign_ids?: string[]; ad_account_id?: string; start_date?: string; end_date?: string; fields?: string; }) { const start = resolveDate(args.start_date ?? DEFAULT_START); const end = resolveDate(args.end_date ?? DEFAULT_END); const fields = args.fields ?? CONVERSION_FIELDS; const campaignUrns = args.campaign_ids?.map((id) => urn("sponsoredCampaign", id)); const accountUrn = campaignUrns && campaignUrns.length > 0 ? undefined : resolveAdAccount(args.ad_account_id); const qs: string[] = [ "q=statistics", "pivot=CONVERSION", "timeGranularity=ALL", `dateRange=${encodeURIComponent(dateRangeParam(start, end))}`, `fields=${fields}`, ]; if (campaignUrns && campaignUrns.length > 0) { qs.push(`campaigns=${encodeURIComponent(`List(${campaignUrns.join(",")})`)}`); } else if (accountUrn) { qs.push(`accounts=${encodeURIComponent(`List(${accountUrn})`)}`); } const url = `${BASE_URL}/adAnalytics?${qs.join("&")}`; return liGetRaw(url); } - src/tools/conversions.ts:47-55 (helper)Default set of metric fields requested from the LinkedIn Analytics API for conversion performance.
const CONVERSION_FIELDS = [ "externalWebsiteConversions", "externalWebsitePostClickConversions", "externalWebsitePostViewConversions", "impressions", "clicks", "costInUsd", "costInLocalCurrency", ].join(",");