Goals
Define what success looks like on your site and track conversions and conversion rate for it.
A goal is something you want your visitors to do — sign up, buy something, read an article to the end, click a button. Trace records pageviews for every visitor automatically, but it doesn't know what "success" looks like for your site until you tell it. A goal is how you tell it.
Once a goal is set up, Trace shows:
- How many visitors completed it (conversions)
- What share of your visitors completed it (conversion rate)
- Which pages, channels, countries and so on converted best, using the same filters as the rest of the dashboard
The three kinds of goals
When you create a goal you choose its Goal trigger.
Pageview
Counts a visitor as converted when they view a specific page.
- Example:
/thank-youcounts anyone who lands on your order-confirmation page — a simple, reliable proxy for "completed checkout". - Wildcards: use
*to match any run of characters./blog/*matches/blog/my-postand/blog/2026/my-post(but not/blogitself), and/*/pricingmatches/en/pricing. Without a*, the path has to match exactly. - No code required — it works from the pageviews Trace already collects.
Custom event
Counts a visitor as converted when they trigger a specific named event — for actions that don't have their own page, like a "Sign up" button that opens a modal, or a form submitted without a page reload.
- Example: add
window.datafast("signup")to your sign-up button's click handler (see Custom events), then create a Custom event goal with the event namesignup. - Built-in events work too:
external_link(outbound link clicks),file_download,form_submissionandpaymentare sent automatically. Use any of them as the event name — no extra code needed.
Scroll depth
Counts a visitor as converted when they scroll far enough down a given page — useful for judging whether long content is actually being read.
- Example: a Scroll depth goal on
/pricingset to 75% only counts visitors who scrolled three quarters of the way down that page. - Scroll depth goals match the page path exactly.
- No code required — the tracking script measures scroll depth on every page automatically.
Create a goal
- Open Settings → Goals, or click Set up goals / Manage goals in the dashboard's Goals tab.
- Fill in the form:
- Goal trigger — Pageview, Custom event or Scroll depth.
- Page path or Event name — a path like
/thank-youor/blog/*(a missing leading/is added for you), or the exact event name your code sends. The field suggests pages and event names your site has actually received, so you don't set up a goal against a typo. - Scrolled at least — Scroll depth only, 1–100% (default 75%).
- Display name — optional, up to 120 characters. Left empty, the goal is named after what it matches (
Visit /thank-you,signup,Scroll 75% on /pricing).
- Click Add goal. If something's wrong — a duplicate name, a goal that already tracks exactly the same thing, or a name Trace records automatically such as
pageview— the form tells you.
Below the list, Trace shows custom events your site has sent in the last 6 months that aren't goals yet. Click one to turn it into a goal, or Add all.
A site can have up to 1,000 goals, so it's fine to create one for every meaningful action.
Matching is case-sensitive
Page paths and event names must match exactly, including case: /Pricing and /pricing are different pages, and Signup and signup are different events.
Narrowing a goal with properties
Sometimes "signup" isn't specific enough — you want pro plan sign-ups only. Click + Add a custom property condition in the goal form to add up to 3 conditions like plan is pro. The goal then only counts a conversion when the event carries those exact property values — for example, a Custom event goal on signup with the condition plan is pro only counts calls like window.datafast("signup", { plan: "pro" }).
Every condition is required (AND, not OR). Property names are matched in lower case; values are case-sensitive. Conditions work on all three goal types — for a pageview goal, they match properties set with props.
Edit a goal
Click Edit next to a goal to change its name, path or event name, scroll threshold or property conditions. The trigger type can't be changed — delete the goal and create a new one instead. Renaming is safe: dashboard filters and funnels keep pointing at the same goal.
The #1 KPI
One goal can be marked #1 KPI — your headline goal. The first goal you create becomes the #1 KPI automatically; after that, promote any other goal with Set as #1 KPI in Settings → Goals. Only one goal holds the badge at a time, and it's marked in the Goals report.
The Goals report
The Goals tab on the main dashboard lists every goal, most conversions first:
| Column | Meaning |
|---|---|
| Uniques | Unique visitors who completed the goal. |
| Total | How many times it was completed. Shown as "—" for Scroll depth goals, since one visitor scrolling one page sends many scroll updates. |
| CR | Conversion rate (see below). |
The report respects every dashboard filter — filter by country, source or page and the numbers are for that slice.
Click a goal to filter the whole dashboard to visitors who completed it (click it again to clear). While filtered:
- The stats row switches to Unique conversions, Total conversions and Conversion rate, with period-over-period changes when comparison is on.
- Every other report (sources, pages, countries…) shows only converting visitors — so you can see which channels and pages drive conversions.
- For goals on built-in events, the Goals tab adds a breakdown: which URLs outbound link clicks and file downloads went to, or which pages forms were submitted from.
How conversion rate is calculated
For a given date range and set of filters:
conversion rate = unique visitors who completed the goal
÷ unique visitors (same filters, without any goal filter)Both sides count each visitor once, no matter how many times they triggered the goal. The denominator ignores goal filters on purpose: filtered by a goal, every remaining visitor has converted, and dividing converters by converters would always show 100%.
Delete a goal
Click Delete next to a goal in Settings → Goals and confirm. Its conversions stop showing on the dashboard. If the goal you delete was your #1 KPI, the badge is cleared until you set a new one.
If the goal is a step in a funnel, you're warned first: a two-step funnel using it is deleted, and a longer funnel just loses that step.
FAQ
A goal isn't counting any conversions — what's wrong?
Check the path or event name is typed exactly as it appears on your site (it's case-sensitive). For Custom event goals, confirm the window.datafast(...) call is actually firing — check your browser's network tab for a request when you trigger the action, or watch the event log in Realtime.
Do I need to change my site's code for Pageview or Scroll depth goals?
No — both work off tracking Trace already does automatically. Only Custom event goals need a window.datafast(...) call (unless you use one of the built-in events).
Can one goal match more than one page?
Yes, with a wildcard on a Pageview goal: /docs/* matches every page under /docs/.
Who can create goals?
Anyone with the Member role or above. Viewers can see goals but not change them. See Team & roles.