Get funnel analytics
GET https://datafa.st/api/v1/analytics/funnels/{funnelId}Return step-by-step conversion analytics for one active funnel — visitors per step, drop-off, revenue, and overall conversion rate. Create funnels with Create funnel, then query results here.
Omit
startAt and endAt for all-time funnel data. Inactive (soft-deleted) funnels return 404.Related: Conversion funnels · Funnel analytics
Request
Path parameters
funnelIdstring
Funnel ObjectId from List funnels. Must be active. Create via Create funnel.
Query parameters
websiteIdstring
Required with a
dft_ account token on Website API routes. Omit with a df_ website key. Example: ?websiteId=665f0b3c4d2e1a0012345678.startAtstring
Start of the reporting window. Use
YYYY-MM-DD for calendar days or an ISO timestamp. Must be provided together with endAt. Example: startAt=2026-05-01.endAtstring
End of the reporting window. Must be provided together with
startAt. Example: endAt=2026-05-21.timezonestring
Timezone used to interpret dates and group analytics buckets. Defaults to the website timezone. IANA timezone for dashboard periods and API date grouping. Examples:
"America/New_York", "Europe/Paris", "UTC". Defaults to the website timezone when omitted.filter_countrystring
Limit results to one or more countries. Prefix with an operator:
is, is_not. Accepts country names or codes. Example: filter_country=US,Canada or filter_country=is_not:France.filter_regionstring
Limit results by region or state. Example:
filter_region=California.filter_citystring
Limit results by city. Example:
filter_city=San Francisco.filter_devicestring
Limit results by device type:
desktop, mobile, or tablet. Example: filter_device=mobile.filter_browserstring
Limit results by browser. Filtering
Safari also includes Mobile Safari. Example: filter_browser=Chrome,Safari.filter_osstring
Limit results by operating system. Example:
filter_os=iOS,Android.filter_referrerstring
Limit results by referrer domain or normalized source such as
Google or Direct/None. Example: filter_referrer=Google.filter_pagestring
Limit results to visitors who viewed a page. Operators:
is, is_not, contains, does_not_contain. Example: filter_page=contains:/docs.filter_entry_pagestring
Limit results by first page in the session. Same operators as
filter_page. Example: filter_entry_page=/pricing.filter_hostnamestring
Limit results by tracked hostname. Example:
filter_hostname=app.example.com.filter_goalstring
Limit results to visitors who completed a goal. Example:
filter_goal=signup.filter_visit_countnumber
Limit results by the all-time visitor session count tracked by the browser cookie. Operators:
is, is_not, gte, lte. Example: filter_visit_count=gte:2 for returning visitors.filter_utm_sourcestring
Limit results by UTM source. Example:
filter_utm_source=google.filter_utm_mediumstring
Limit results by UTM medium. Example:
filter_utm_medium=cpc.filter_utm_campaignstring
Limit results by UTM campaign. Example:
filter_utm_campaign=launch.filter_utm_termstring
Limit results by UTM term. Example:
filter_utm_term=brand-keyword.filter_utm_contentstring
Limit results by UTM content. Example:
filter_utm_content=hero-cta.filter_refstring
Limit results by the
ref URL parameter. Example: filter_ref=twitter.filter_sourcestring
Limit results by the
source URL parameter. Example: filter_source=newsletter.filter_viastring
Limit results by the
via URL parameter. Example: filter_via=partner.Example request
GET /api/v1/analytics/funnels/665f0b3c4d2e1a0012345678?startAt=2026-05-01&endAt=2026-05-21
Response
Returns a JSON object with
status: "success" and endpoint-specific fields in data (and pagination when the endpoint is paginated).Response fields
data[].funnel.idstring
Funnel ObjectId.
data[].funnel.namestring
Human-readable name for the resource or event. The exact meaning depends on the endpoint.
data[].funnel.slugstring
Funnel slug.
data[].funnel.stepsobject[]
Configured funnel steps used for matching.
data[].data[].idstring
Step ID.
data[].data[].labelstring
Step label shown in reports.
data[].data[].valuenumber
Visitors who reached this step.
data[].data[].stepIndexnumber
Zero-based index of the configured funnel step.
data[].data[].stepTypestring
pageview or goal.data[].data[].revenuenumber
Revenue attributed to this row or time bucket, in the website currency. Use it to see which time periods or dimensions influenced paid conversions. Revenue attributed to visitors who reached this step.
data[].data[].conversionRatenumber
Percent of first-step visitors who reached this step.
data[].data[].dropoffFromPreviousnumber
Percentage drop-off from the previous step, from 0 to 100.
data[].metrics.totalVisitorsnumber
Visitors who reached the first funnel step.
data[].metrics.completionsnumber
Number of times this goal was completed. This counts events, so one visitor can contribute more than one completion.
data[].metrics.overallConversionRatenumber
Percent of first-step visitors who completed the funnel.
data[].metrics.overallRevenuePerVisitornumber
Revenue divided by first-step visitors.
data[].metrics.timezonestring
Timezone used to interpret dates and group analytics buckets. Defaults to the website timezone.
data[].metrics.startAtstring|null
Start of the reporting window. Use it with
endAt to query a specific date range instead of the endpoint default.data[].metrics.endAtstring|null
End of the reporting window. Must be paired with
startAt so DataFast can build the date range.data[].metrics.lastUpdatedstring
Response generation timestamp.
Authentication
df_website API key: The website is inferred from the key. You do not need awebsiteIdquery parameter.dft_account token: Requiresanalytics:readpermission and?websiteId=on every request. The token must be allowed to access that website.
Read authentication and scopes for token creation, permission lists, and scoped tokens.
Errors
400 — Invalid
funnelId or partial date range.404 — Website or funnel not found (inactive funnels are excluded).
See API errors for the standard error envelope, auth failures, validation errors, permission errors, and rate limits.