> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Funnel Report

> Google Analytics 4 funnel report: users who completed ordered steps (event A, then event B), with completion and abandonment rates per step, optionally split by a breakdown dimension, segments or t...

Google Analytics 4 funnel report: users who completed ordered steps (event A, then event B), with completion and abandonment rates per step, optionally split by a breakdown dimension, segments or the next action. One property per run. Runs on Google's v1alpha Data API.

| | |
| - | - |
| **App** | GA4 |
| **Operation ID** | `ga4_get_funnel_report` |
| **Type** | Action |
| **Connection** | `ga4` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | array (also accepts a comma-separated string) | No | - | The GA4 property to read. Only one property at a time. |
| `date_range` | FunnelDateRange | Yes | - | Date range of the events the funnel is built from. |
| `steps` | array of object or string | Yes | - | Ordered funnel steps as Google Data API FunnelStep objects (list or JSON string): name, filterExpression (funnelEventFilter, funnelFieldFilter, andGroup, orGroup, notExpression), optional isDirectlyFollowedBy and withinDurationFromPriorStep (e.g. '1800s'). Google validates the nested filters. Example: \[\{"name":"Date selected","filterExpression":\{"funnelEventFilter":\{"eventName":"date\_selected"}}},\{"name":"Purchase","filterExpression":\{"andGroup":\{"expressions":\[\{"funnelEventFilter":\{"eventName":"purchase"}},\{"funnelFieldFilter":\{"fieldName":"hostName","stringFilter":\{"matchType":"EXACT","value":"[www.example.com](http://www.example.com)"}}}]}}}] |
| `is_open_funnel` | boolean | No | - | Open funnel: users can enter at any step. Default false (closed): users must complete the first step to count. |
| `breakdown_dimension` | string | No | - | GA4 dimension that splits each step in the funnel table, e.g. deviceCategory, landingPage, country. One per report. |
| `breakdown_limit` | integer | No | - | Maximum breakdown values per step (Google default 5). |
| `next_action_dimension` | string or SelectableOption | No | - | Adds what users did after each step to the funnel visualization: eventName, pagePath, pageTitle, unifiedScreenName or unifiedScreenClass (ignored by TRENDED\_FUNNEL). |
| `next_action_limit` | integer | No | - | Maximum next action values per step (Google default 5). |
| `segments` | array of object or string | No | - | Google Data API Segment objects (userSegment, sessionSegment or eventSegment); the funnel is evaluated in each segment and rows carry a segment column. Example: \[\{"name":"US users","userSegment":\{"userInclusionCriteria":\{"andConditionGroups":\[\{"conditionScoping":"USER\_CRITERIA\_ACROSS\_ALL\_SESSIONS","segmentFilterExpression":\{"segmentFilter":\{"fieldName":"country","stringFilter":\{"matchType":"EXACT","value":"United States"}}}}]}}}] |
| `dimension_filter` | object or string | No | - | Google Data API FilterExpression applied to the whole report, e.g. \{"filter":\{"fieldName":"deviceCategory","stringFilter":\{"value":"mobile"}}}. |
| `visualization_type` | string or SelectableOption | No | - | STANDARD\_FUNNEL (default): users per step. TRENDED\_FUNNEL: the visualization adds a date column (users per step per day). |
| `limit` | integer | No | - | Maximum funnel table rows (Google default 10,000). |

### FunnelDateRange

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `start` | string | No | - | The start date of the date range to query, format: YYYY-MM-DD or dynamic node reference like \{\{nodeId\_\_data.start\_date}}. Required when preset is 'FIXED' or 'CUSTOM'. |
| `end` | string | No | - | The end date of the date range to query, format: YYYY-MM-DD or dynamic node reference like \{\{nodeId\_\_data.end\_date}}. Required when preset is 'FIXED' or 'CUSTOM'. |
| `preset` | string | No | - | Predefined date ranges or input modes: - Use 'FIXED' or leave empty when you want to specify exact dates (YYYY-MM-DD format) in start/end fields - Use 'CUSTOM' when you want to use dynamic values from other nodes (\{\{nodeId\_\_data.start\_date}} format) in start/end fields - Use other presets (TODAY, YESTERDAY, LAST\_7\_DAYS, etc.) for predefined date ranges (start/end will be ignored) LAST\_N\_MONTHS and LAST\_N\_WEEKS are complete calendar periods ending with last month or last week, so they exclude the current month or week; for a rolling window up to yesterday use LAST\_N\_DAYS (for example LAST\_90\_DAYS) or a FIXED range. When using 'FIXED' or 'CUSTOM', both start and end fields are required. |
| `compare` | CompareOptions | No | - | Optional comparison period, run in the same request. Rows then carry a dateRange column, 'current' or 'comparison'; no delta rows are added. |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

### CompareOptions

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `start` | string | No | - | The start date of the comparison range, format: YYYY-MM-DD. Optional if preset is provided. |
| `end` | string | No | - | The end date of the comparison range, format: YYYY-MM-DD. Optional if preset is provided. |
| `preset` | string | No | - | Predefined comparison ranges. When provided, start and end will be ignored. |
| `comparison_format` | string | No | `rows` | Comparison output layout: 'rows' returns separate rows for current, comparison, and delta along with date ranges; 'columns' returns a single row with delta values only as additional \*\_pct or \*\_change columns depending on comparison\_value\_type. |
| `comparison_value_type` | string | No | `percentage` | Value type: 'percentage' or 'absolute' |

## Output

**Type**: `Dict`

Returns funnel\_table (one row per step, and per breakdown value, segment or date range when requested: activeUsers, funnelStepCompletionRate, funnelStepAbandonments, funnelStepAbandonmentRate) and funnel\_visualization (users per step, plus the date for TRENDED\_FUNNEL or the next action). Rates are fractions (0.25 = 25%); a RESERVED\_TOTAL value marks Google's total row for that step. sampling is empty unless Google sampled the funnel (then one entry per date range with the events read and the total).

**Fields**: `funnel_table`, `funnel_visualization`, `sampling`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.