---
title: Funnel Widget
description: >-
  Track conversion rates and identify bottlenecks in user workflows with funnel
  analysis visualization.
breadcrumbs: Docs > Dashboards > Widgets > Funnel Widget
---

# Funnel Widget

Funnel analysis helps you track conversion rates across key workflows to identify and address any bottlenecks in end-to-end user journeys. The funnel widget visualizes conversion rates across user workflows and end-to-end user journeys.

{% image
   source="https://docs.dd-static.net/images/dashboards/widgets/funnel/funnel.876910a85b10ca3a76bcd05bbd707e84.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/widgets/funnel/funnel.876910a85b10ca3a76bcd05bbd707e84.png?auto=format&fit=max&w=850&dpr=2 2x"
   alt="Funnel widget visualizing drop-off rates of a user on an e-commerce site" /%}

## Setup{% #setup %}

{% image
   source="https://docs.dd-static.net/images/dashboards/widgets/funnel/funnel_setup.fea32b6e2dc0369d71b779a02310e5bb.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/dashboards/widgets/funnel/funnel_setup.fea32b6e2dc0369d71b779a02310e5bb.png?auto=format&fit=max&w=850&dpr=2 2x"
   alt="Funnel widget setup screen" /%}

### Configuration{% #configuration %}

1. Choose the data to graph:
   - RUM: See the [Search RUM Events documentation](https://docs.datadoghq.com/real_user_monitoring/explorer/search.md) to configure a RUM query.
1. Select View or Action and choose a query from the dropdown menu.
1. Click the + button and select another query from the dropdown menu to visualize the funnel. See the [RUM Visualize documentation](https://docs.datadoghq.com/product_analytics/journeys/funnel_analysis.md) for more information on visualizing Funnel analysis.

### Options{% #options %}

#### Global time{% #global-time %}

On screenboards and notebooks, choose whether your widget has a custom timeframe or uses the global timeframe.

## API{% #api %}

This widget can be used with the [Dashboards API](https://docs.datadoghq.com/api/latest/dashboards.md). See the following table for the [widget JSON schema definition](https://docs.datadoghq.com/dashboards/graphing_json/widget_json.md):

{% tab %}
ModelExample
{% tab title="-model" %}
Expand AllFieldTypeDescriptiondescriptionstringThe description of the widget.grouped_displayenumDisplay mode for grouped funnel results. Allowed enum values: `stacked,side_by_side` requests [*required*][object]Request payload used to query items.comparison_segments[string]Comparison segments. comparison_timeobjectComparison time configuration for funnel widgets. custom_timeframeobjectCustom timeframe for funnel comparison.from [*required*]doubleStart of the custom timeframe.to [*required*]doubleEnd of the custom timeframe.type [*required*]enumType of comparison duration. Allowed enum values: `previous_timeframe,custom_timeframe,previous_day,previous_week,previous_month` query [*required*]objectUser journey funnel query definition. computeobjectCompute configuration for user journey funnel.aggregation [*required*]enumAggregation type for user journey funnel compute. Allowed enum values: `cardinality,count`metric [*required*]enumMetric for user journey funnel compute. `__dd.conversion` and `__dd.conversion_rate` accept `count` (unique users/sessions) and `cardinality` (total users/sessions) as aggregations. Allowed enum values: `__dd.conversion,__dd.conversion_rate`data_source [*required*]enumData source for user journey funnel queries. Allowed enum values: `product_analytics_journey` group_by[object]Group by configuration.facet [*required*]stringFacet to group by.limitint64Maximum number of groups.should_exclude_missingbooleanWhether to exclude missing values. sortobjectSort configuration for user journey funnel group by.aggregation [*required*]stringAggregation type.metricstringMetric to sort by.orderenumWidget sorting methods. Allowed enum values: `asc,desc` targetobjectTarget for user journey search.endstringEnd value.startstringStart value.type [*required*]stringTarget type.valuestringTarget value. search [*required*]objectUser journey search configuration.expression [*required*]stringExpression string. filtersobjectFilters for user journey search. audience_filtersobjectProduct Analytics/RUM audience filters. accounts[object]namestringThe name of the account subquery.querystringThe query string for the account subquery.filter_conditionstringAn optional filter condition applied to the audience subquery. segments[object]namestringThe name of the segment subquery.segment_idstringThe unique identifier of the segment. users[object]namestringThe name of the user subquery.querystringThe query string for the user subquery. graph_filters[object]Graph filters.namestringFilter name.operatorstringFilter operator. targetobjectTarget for user journey search.endstringEnd value.startstringStart value.type [*required*]stringTarget type.valuestringTarget value.valueint64Filter value.string_filterstringString filter. join_keysobjectJoin keys for user journey queries.primary [*required*]stringPrimary join key.secondary[string]Secondary join keys. node_objects [*required*]objectNode objects mapping. <any-key>objectBase query for Product Analytics.data_source [*required*]enumData source for Product Analytics event queries. Allowed enum values: `product_analytics` search [*required*]objectSearch configuration for Product Analytics event query.query [*required*]stringRUM event search query used to filter views or actions. step_aliasesobjectStep aliases mapping.<any-key>stringsubquery_idstringSubquery ID.request_type [*required*]enumRequest type for user journey funnel widget. Allowed enum values: `user_journey_funnel` time <oneOf>Time setting for the widget. Option 1objectWrapper for live spanhide_incomplete_cost_databooleanWhether to hide incomplete cost data in the widget.live_spanenumThe available timeframes depend on the widget you are using. Allowed enum values: `1m,5m,10m,15m,30m,1h,4h,1d,2d,1w`Show 7 more`,1mo,3mo,6mo,week_to_date,month_to_date,1y,alert`

 Option 2objectUsed for arbitrary live span times, such as 17 minutes or 6 hours.hide_incomplete_cost_databooleanWhether to hide incomplete cost data in the widget.type [*required*]enumType "live" denotes a live span in the new format. Allowed enum values: `live`unit [*required*]enumUnit of the time span. Allowed enum values: `minute,hour,day,week,month,year`value [*required*]int64Value of the time span. Option 3objectUsed for fixed span times, such as 'March 1 to March 7'.from [*required*]int64Start time in milliseconds since epoch.hide_incomplete_cost_databooleanWhether to hide incomplete cost data in the widget.to [*required*]int64End time in milliseconds since epoch.type [*required*]enumType "fixed" denotes a fixed span. Allowed enum values: `fixed`titlestringThe title of the widget.title_alignenumHow to align the text on the widget. Allowed enum values: `center,left,right`title_sizestringThe size of the title.type [*required*]enumType of funnel widget. Allowed enum values: `funnel`
default: `funnel`
{% /tab %}

{% tab title="example" %}

```json
{
  "description": "string",
  "grouped_display": "stacked",
  "requests": [
    {
      "comparison_segments": [],
      "comparison_time": {
        "custom_timeframe": {
          "from": 0,
          "to": 0
        },
        "type": "previous_timeframe"
      },
      "query": {
        "compute": {
          "aggregation": "count",
          "metric": "__dd.conversion_rate"
        },
        "data_source": "product_analytics_journey",
        "group_by": [
          {
            "facet": "@usr.email",
            "limit": "integer",
            "should_exclude_missing": false,
            "sort": {
              "aggregation": "count",
              "metric": "@session.id",
              "order": "desc"
            },
            "target": {
              "end": "node_1",
              "start": "node_0",
              "type": "step",
              "value": "node_0"
            }
          }
        ],
        "search": {
          "expression": "node_0 -> node_1",
          "filters": {
            "audience_filters": {
              "accounts": [
                {
                  "name": "string",
                  "query": "string"
                }
              ],
              "filter_condition": "string",
              "segments": [
                {
                  "name": "string",
                  "segment_id": "string"
                }
              ],
              "users": [
                {
                  "name": "string",
                  "query": "string"
                }
              ]
            },
            "graph_filters": [
              {
                "name": "count",
                "operator": "gt",
                "target": {
                  "end": "node_1",
                  "start": "node_0",
                  "type": "step",
                  "value": "node_0"
                },
                "value": 1
              }
            ],
            "string_filter": "@session.type:user"
          },
          "join_keys": {
            "primary": "@session.id",
            "secondary": []
          },
          "node_objects": {
            "<any-key>": {
              "data_source": "product_analytics",
              "search": {
                "query": "@type:view @view.name:/home"
              }
            }
          },
          "step_aliases": {
            "<any-key>": "string"
          }
        },
        "subquery_id": "string"
      },
      "request_type": "user_journey_funnel"
    }
  ],
  "time": {
    "hide_incomplete_cost_data": false,
    "live_span": "5m"
  },
  "title": "string",
  "title_align": "string",
  "title_size": "string",
  "type": "funnel"
}
```

{% /tab %}

{% /tab %}

## Further Reading{% #further-reading %}

- [Learn more about Funnel Analysis](https://docs.datadoghq.com/product_analytics/journeys/funnel_analysis.md)
- [Use funnel analysis to understand and optimize key user flows](https://www.datadoghq.com/blog/reduce-customer-friction-funnel-analysis/)
