google_ads_get_performance_report
Get Google Ads Performance Report
GoogleDescription
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.
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"
}
}
}
hopkin google performance-report get
| Flag | Type | Required | Description |
|---|---|---|---|
--customer-id | string | Required | The Google Ads Customer ID (10 digits, with or without dashes) |
--login-customer-id | string | Optional | MCC (Manager) Customer ID; required for managed accounts |
--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. |
--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). |
--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 | string | Optional | Filter to a specific campaign ID |
--ad-group-id | string | Optional | Filter to a specific ad group ID |
--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. |
--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. |
--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. |
{
"mcpServers": {
"google-ads": {
"url": "https://google.mcp.hopkin.ai",
"transport": "sse"
}
}
}
- Campaign overview
- Daily trend
- Account summary
- Device breakdown
- Cost per new customer
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
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)
| Name | Type | Required | Description |
|---|---|---|---|
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