ga4_run_report

Run GA4 Report

Ga4

Description

Run a GA4 report (Data API runReport): arbitrary dimensions × metrics over one or more date ranges, with an optional simple dimension filter and ordering. Use ga4_get_metadata first to look up valid dimension/metric API names. Args: property_id (string, required): GA4 property ID (numeric) or full resource name. dimensions (string[], optional): Up to 9 dimension API names (e.g. sessionDefaultChannelGroup, date). metrics (string[], required): 1-10 metric API names (e.g. sessions, totalUsers, keyEvents, purchaseRevenue). date_ranges (array, required): 1-4 ranges of { start_date, end_date, name? }. Dates are YYYY-MM-DD or relative (30daysAgo, yesterday, today). dimension_filter (object, optional): Single-field filter { field, values[], match_type?, case_sensitive?, negate? }. order_by (object, optional): { type: 'metric'|'dimension', name, desc? }. limit (number, optional): Max rows, default 100, max 10000. offset (number, optional): Row offset for pagination. Returns: row_count (total rows before pagination), returned_rows, and rows flattened as { dimension: value, metric: value } objects. For a single date range: metric_totals ({ metric: total }). For multiple date ranges: metric_totals_by_range ({ "date_range_0": { metric: total }, ... }) keyed by the dateRange dimension value (or the range's name).

Read-onlyOpen-world

Usage

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ga4_run_report",
    "arguments": {
      "property_id": "123456789",
      "dimensions": [
        "sessionDefaultChannelGroup"
      ],
      "metrics": [
        "sessions",
        "totalUsers",
        "keyEvents"
      ],
      "date_ranges": [
        {
          "start_date": "30daysAgo",
          "end_date": "yesterday"
        }
      ],
      "reason": "Channel mix overview for the last 30 days"
    }
  }
}

Parameters

NameTypeRequiredDescription
property_id string Required GA4 property ID (numeric) or full resource name.minLength: 1
metrics array Required GA4 metric API names, e.g. sessions, totalUsers, keyEvents, purchaseRevenue.
date_ranges array Required One to 4 date ranges.
reason string Required Why this tool call is neededminLength: 1, maxLength: 500
Optional parameters (5)
NameTypeRequiredDescription
dimensions array Optional GA4 dimension API names, e.g. sessionDefaultChannelGroup, landingPagePlusQueryString, date. Use ga4_get_metadata for valid names.
dimension_filter object Optional Simple single-field dimension filter.
order_by object Optional
limit integer Optional Max rows (default 100). Range: 1-10000.min: 1, max: 10000
offset integer Optional Row offset for pagination.min: 0

Examples

Sessions by channel (30 days)

{
  "property_id": "123456789",
  "dimensions": [
    "sessionDefaultChannelGroup"
  ],
  "metrics": [
    "sessions",
    "totalUsers",
    "keyEvents"
  ],
  "date_ranges": [
    {
      "start_date": "30daysAgo",
      "end_date": "yesterday"
    }
  ],
  "reason": "Channel mix overview for the last 30 days"
}

hopkin ga4 report --property-id 123456789 --dimensions sessionDefaultChannelGroup --metrics sessions,totalUsers,keyEvents --date-ranges [object Object]

Landing page revenue, filtered

{
  "property_id": "123456789",
  "dimensions": [
    "landingPagePlusQueryString"
  ],
  "metrics": [
    "sessions",
    "purchaseRevenue"
  ],
  "date_ranges": [
    {
      "start_date": "2024-01-01",
      "end_date": "2024-01-31"
    }
  ],
  "dimension_filter": {
    "field": "sessionDefaultChannelGroup",
    "values": [
      "Paid Search"
    ]
  },
  "order_by": {
    "type": "metric",
    "name": "purchaseRevenue"
  },
  "limit": 25,
  "reason": "Top paid-search landing pages by revenue"
}

hopkin ga4 report --property-id 123456789 --dimensions landingPagePlusQueryString --metrics sessions,purchaseRevenue --date-ranges [object Object] --dimension-filter [object Object] --order-by [object Object] --limit 25