"Best analytics tool I've used in 14 years"

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.

Request

Path parameters

funnelId
string
Funnel ObjectId from List funnels. Must be active. Create via Create funnel.

Query parameters

websiteId
string
Required with a dft_ account token on Website API routes. Omit with a df_ website key. Example: ?websiteId=665f0b3c4d2e1a0012345678.
startAt
string
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.
endAt
string
End of the reporting window. Must be provided together with startAt. Example: endAt=2026-05-21.
timezone
string
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_country
string
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_region
string
Limit results by region or state. Example: filter_region=California.
filter_city
string
Limit results by city. Example: filter_city=San Francisco.
filter_device
string
Limit results by device type: desktop, mobile, or tablet. Example: filter_device=mobile.
filter_browser
string
Limit results by browser. Filtering Safari also includes Mobile Safari. Example: filter_browser=Chrome,Safari.
filter_os
string
Limit results by operating system. Example: filter_os=iOS,Android.
filter_referrer
string
Limit results by referrer domain or normalized source such as Google or Direct/None. Example: filter_referrer=Google.
filter_page
string
Limit results to visitors who viewed a page. Operators: is, is_not, contains, does_not_contain. Example: filter_page=contains:/docs.
filter_entry_page
string
Limit results by first page in the session. Same operators as filter_page. Example: filter_entry_page=/pricing.
filter_hostname
string
Limit results by tracked hostname. Example: filter_hostname=app.example.com.
filter_goal
string
Limit results to visitors who completed a goal. Example: filter_goal=signup.
filter_utm_source
string
Limit results by UTM source. Example: filter_utm_source=google.
filter_utm_medium
string
Limit results by UTM medium. Example: filter_utm_medium=cpc.
filter_utm_campaign
string
Limit results by UTM campaign. Example: filter_utm_campaign=launch.
filter_utm_term
string
Limit results by UTM term. Example: filter_utm_term=brand-keyword.
filter_utm_content
string
Limit results by UTM content. Example: filter_utm_content=hero-cta.
filter_ref
string
Limit results by the ref URL parameter. Example: filter_ref=twitter.
filter_source
string
Limit results by the source URL parameter. Example: filter_source=newsletter.
filter_via
string
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.id
string
Funnel ObjectId.
data[].funnel.name
string
Human-readable name for the resource or event. The exact meaning depends on the endpoint.
data[].funnel.slug
string
Funnel slug.
data[].funnel.steps
object[]
Configured funnel steps used for matching.
data[].data[].id
string
Step ID.
data[].data[].label
string
Step label shown in reports.
data[].data[].value
number
Visitors who reached this step.
data[].data[].revenue
number
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[].conversionRate
number
Percent of first-step visitors who reached this step.
data[].data[].dropoffFromPrevious
number
Visitors lost compared with the previous step.
data[].metrics.totalVisitors
number
Visitors who reached the first funnel step.
data[].metrics.completions
number
Number of times this goal was completed. This counts events, so one visitor can contribute more than one completion.
data[].metrics.overallConversionRate
number
Percent of first-step visitors who completed the funnel.
data[].metrics.overallRevenuePerVisitor
number
Revenue divided by first-step visitors.
data[].metrics.timezone
string
Timezone used to interpret dates and group analytics buckets. Defaults to the website timezone.
data[].metrics.startAt
string|null
Start of the reporting window. Use it with endAt to query a specific date range instead of the endpoint default.
data[].metrics.endAt
string|null
End of the reporting window. Must be paired with startAt so DataFast can build the date range.
data[].metrics.lastUpdated
string
Response generation timestamp.

Authentication

  • df_ website API key: The website is inferred from the key. You do not need a websiteId query parameter.
  • dft_ account token: Requires analytics:read permission 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.

✍️ Something missing? Suggest features.

🤖 AI agent or LLM? Read this page as markdown

Example request
curl -X GET "https://datafa.st/api/v1/analytics/funnels/{funnelId}" \
  -H "Authorization: Bearer df_xxx"
Success response
{
  "status": "success",
  "data": [{
    "funnel": {
      "id": "665f0b3c4d2e1a0012345678",
      "name": "Signup funnel",
      "slug": "signup-funnel",
      "steps": []
    },
    "data": [{
      "id": "landing",
      "label": "Landing",
      "value": 1000,
      "revenue": 2400,
      "stepIndex": 0,
      "stepType": "pageview",
      "conversionRate": 100,
      "dropoffFromPrevious": 0
    }],
    "metrics": {
      "totalVisitors": 1000,
      "completions": 214,
      "overallConversionRate": 21.4,
      "overallRevenuePerVisitor": 2.4,
      "timezone": "UTC",
      "startAt": null,
      "endAt": null,
      "lastUpdated": "2026-05-21T00:00:00.000Z"
    }
  }]
}