google_ads_get_performance_report

Get Google Ads Performance Report

Google

Description

Segmented and multi-level performance reporting. FIRST, CHECK THE REQUEST: for a plain account-level overview with no segments and no level breakdown — a quick performance summary, "how is this account doing", or account totals over a date range — use google_ads_get_account_summary instead; it returns those totals pre-aggregated in a single call. Use this tool when a level (CAMPAIGN, AD_GROUP) or a segment (device, date, network type) is actually needed. Comprehensive funnel metrics with per-conversion-action breakdowns. Supports segments for device breakdown (DESKTOP, MOBILE, TABLET), daily trends, and network type analysis. Preferred over google_ads_get_insights for standard analysis. Runs parallel queries for top-level funnel and conversion action breakdown. Supported levels automatically include the Demand Gen Platform Comparable conversion family (platform_comparable_conversions, cost/value/rate variants); row-level reports return null for non-Demand Gen rows. Search impression share is included at CAMPAIGN and AD_GROUP levels (budget-lost variants campaign-level only). Set include_new_vs_returning to add a conversions breakdown by new vs returning customer (segments.new_versus_returning_customers; new customers = NEW + NEW_AND_HIGH_LTV buckets summed) for cost-per-new-customer reporting on customer-acquisition-goal campaigns. Use google_ads_get_insights for custom metric selection. For geographic data, use google_ads_get_geo_performance instead. Paginated: data holds up to limit rows (default 15, or 10 with include_all_conversions or include_new_vs_returning; max 1000) in a stable order (entity ids, then segment values), count is the total across all pages, and the conversion breakdowns cover only the rows on the current page; a breakdown key shared by rows on several pages (at AD level, an ad running in two ad groups) is listed once, on the first page that holds it. When nextCursor is present, call again with the same parameters and cursor set to nextCursor until it is absent. To get every row, follow the cursor rather than raising limit: a larger page can exceed MCP client response limits.

Read-onlyIdempotentOpen-world

Usage

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "google_ads_get_performance_report",
    "arguments": {
      "customer_id": "1234567890",
      "date_preset": "LAST_30_DAYS",
      "reason": "Monthly performance review"
    }
  }
}

Parameters

NameTypeRequiredDescription
customer_id string Required The Google Ads Customer ID (10 digits, with or without dashes)maxLength: 20, pattern: ^[\d-]+$
reason string Required Why this tool call is neededminLength: 1, maxLength: 500
Optional parameters (12)
NameTypeRequiredDescription
login_customer_id string Optional MCC (Manager) Customer ID; required for managed accountsmaxLength: 20, pattern: ^[\d-]+$
date_preset string Optional Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH. LAST_7_DAYS / LAST_30_DAYS are the 7 / 30 complete days ending yesterday (account time zone), as in Google Ads; THIS_MONTH runs through today.
TODAY YESTERDAY LAST_7_DAYS LAST_30_DAYS THIS_MONTH LAST_MONTH
date_range object Optional Custom date range {start_date, end_date} in YYYY-MM-DD
level string Optional Report level (default: CAMPAIGN): ACCOUNT, CAMPAIGN, AD_GROUP, AD. CAMPAIGN, AD_GROUP, and AD reports automatically include platform_comparable_conversions for Demand Gen rows (null for non-Demand Gen).
ACCOUNT CAMPAIGN AD_GROUP AD
segments array Optional Additional segments for the main metrics: date, device, ad_network_type. Conversion action breakdowns are always included automatically via a separate query.
campaign_id string Optional Filter to a specific campaign IDmaxLength: 20, pattern: ^\d+$
ad_group_id string Optional Filter to a specific ad group IDmaxLength: 20, pattern: ^\d+$
include_all_conversions boolean Optional When true, includes an additional all-conversions breakdown (metrics.all_conversions, all_conversions_value, value_per_all_conversions) segmented by conversion_action_name. This captures ALL conversion actions including those not marked "Include in Conversions" (e.g., view-through, cross-device, store visits). If the breakdown query fails, the breakdown is empty and a warnings entry explains why.
include_new_vs_returning boolean Optional When true, includes an additional breakdown of conversions by segments.new_versus_returning_customers (NEW, RETURNING, NEW_AND_HIGH_LTV, UNKNOWN) via a separate query, aggregated over the date range. New customers are split across the NEW and NEW_AND_HIGH_LTV buckets — sum both, then combine with the main query cost to compute cost-per-new-customer. Only populated for campaigns using a customer acquisition goal; if the breakdown query fails, the breakdown is empty and a warnings entry explains why.
limit integer Optional Maximum data rows per page (1-1000, default 15, or 10 when include_all_conversions or include_new_vs_returning is set). count is the total across all pages, and the breakdowns cover only the rows on the page (a key shared across pages is listed once, on the first page that holds it). When nextCursor is present, call again with cursor set to it. The default keeps a page within MCP client response limits: to get every row, follow nextCursor rather than raising limit.min: 1, max: 1000
cursor string Optional Opaque cursor from a previous response's nextCursor. Pass it with the same other parameters to fetch the next page; do not construct it.minLength: 1, maxLength: 4096
connection_id string Optional Optional ID of a specific connection to use for this call. Omit to use the actor's default connection for this network. Call <platform>_list_connections to discover available connection IDs.

Examples

Campaign overview

{
  "customer_id": "1234567890",
  "date_preset": "LAST_30_DAYS",
  "reason": "Monthly performance review"
}

hopkin google performance-report get --customer-id 1234567890 --date-preset LAST_30_DAYS

Daily trend

{
  "customer_id": "1234567890",
  "date_preset": "LAST_7_DAYS",
  "segments": [
    "date"
  ],
  "reason": "Daily performance trend"
}

hopkin google performance-report get --customer-id 1234567890 --date-preset LAST_7_DAYS --segments date

Account summary

{
  "customer_id": "1234567890",
  "date_preset": "LAST_30_DAYS",
  "level": "ACCOUNT",
  "reason": "Account-level overview"
}

hopkin google performance-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --level ACCOUNT

Device breakdown

{
  "customer_id": "1234567890",
  "date_preset": "LAST_30_DAYS",
  "segments": [
    "device"
  ],
  "reason": "Device analysis"
}

hopkin google performance-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --segments device

Cost per new customer

{
  "customer_id": "1234567890",
  "date_preset": "LAST_30_DAYS",
  "include_new_vs_returning": true,
  "reason": "New vs returning customer acquisition analysis"
}

hopkin google performance-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --include-new-vs-returning true