Custom goal properties
GET https://datafa.st/api/v1/analytics/goals/propertiesAnswer questions such as “Which plan did people choose when signing up?” using the same recorded event properties shown when you expand a goal in the dashboard.
Two steps
- Send
eventName=signupto discover the recorded property names, such asplanorbutton_location. - Add
propertyName=planto get the completion and unique-visitor counts for each value, such asfreeandpro.
Use the exact goal name returned by Analyze goals. The original goals endpoint continues to return totals per goal. This endpoint covers custom goals only, including properties sent with
data-fast-goal-{property}, the JavaScript SDK, or server-side goal metadata. Payment and subscription lifecycle events are excluded.Authentication and access
Use the standard
Authorization: Bearer header:- A website API key (
df_) selects its own website automatically. - An account token (
dft_) requireswebsiteId,analytics:read, and access to that website. The current account and website access checks apply on every request.
This uses the same API access entitlement as other analytics endpoints, with no additional plan upgrade or property-specific quota. The normal API limit is 60 requests per minute per credential. Public dashboard access does not grant API access. Custom properties may contain data you deliberately recorded; only share a credential with an integration that should read that website's analytics. Authentication and scopes.
Query parameters
eventNamerequired
Exact custom goal name, 1–64 lowercase letters, digits, underscores, hyphens, or colons. Example:
signup.propertyNameExact property name. Omit to list available properties; supply it to list values. Case-sensitive, 1–200 characters.
websiteIdWebsite ID. With
df_, omit it or supply that key's website ID.startAt / endAtSupply both or neither. Inclusive ISO timestamps with Z/offset, or YYYY-MM-DD dates. Omit both for all recorded history.
timezoneIANA timezone; defaults to the website timezone. Date-only bounds include the full local day. Explicit timestamp offsets are respected.
limitNumber of rows, 1–1000; default 100.
offsetNumber of rows to skip, 0–4294967295; default 0.
fieldsComma-separated response fields. Property discovery:
property,completions,visitors. Value breakdown: value,completions,visitors. Omit for all three.Unknown or duplicate query parameters are rejected. Reserved event fields
eventName, eventType, and isServer are not custom properties.Filters
Supported event filters are
filter_country, filter_region, filter_city, filter_browser, filter_os, filter_device, filter_referrer, filter_ref, filter_source, filter_via, filter_utm_source, filter_utm_medium, filter_utm_campaign, filter_utm_term, filter_utm_content, and filter_page.Use
is:value or is_not:value; comma-separated values match any value. Page also accepts contains:value and does_not_contain:value. Example: filter_device=is:mobile. Website country exclusions apply. These filters describe the event that recorded the property. Entry-page, hostname, visit-count, channel, and goal filters are not supported here and return 400; eventName selects the goal.Response and counting
propertyis a property name when discovering keys.valueis the recorded value when requesting a specific property; values are returned as strings, including numbers, booleans, and JSON values stored by older integrations.completionscounts goal events containing that property or value. Repeated completions by the same visitor are counted separately.visitorscounts unique visitors within each row. A visitor can occur in multiple rows, so adding visitor counts does not produce a deduplicated goal total.- Missing properties, nulls, and empty strings are excluded; zero and false are retained. A goal's property counts can therefore be lower than its total completions. Listing properties is not a mutually exclusive breakdown: one event can have several properties.
- Rows sort by completions descending, then property name/value ascending.
pagination.totalcounts matching distinct names or values.hasMoreindicates another page. An unknown goal/property or a page beyond the end returns an emptydataarray. Pagination can change as new events arrive; use fixed dates for exports. metareturns the goal, selected property (null for discovery), timezone, and resolved UTC bounds (null for all history). Upstream failures return an error rather than an empty successful result.
MCP
Use
datafast_analytics_goal_properties with eventName, optional propertyName, and the same date, pagination, and field controls. The filters object uses names without the filter_ prefix. Example: {"eventName":"signup","propertyName":"plan","filters":{"device":"is:mobile"}}. Account tokens also require websiteId. Connect your agent.Errors
The standard error envelope is
{"status":"error","error":{"code":400,"message":"..."}}.| Status | Meaning |
|---|---|
| 400 | Missing goal name, invalid dates, fields, filters, or pagination. |
| 401 | Missing or invalid API credential. |
| 403 | Inactive account, missing permission, or website outside credential access. |
| 404 | Website does not exist. |
| 429 | Standard API rate limit reached. |
| 502 | Property data could not be loaded; retry shortly. |