Conversion Goals
Define what counts as a "conversion" for your experiment. How built-in goals work on Shopify, how to wire up custom goals on HTML, and how to pick the right primary metric for your test.
A conversion goal defines what counts as a “win” for your experiment. The primary metric you select drives every probability calculation and the “Declare Winner” CTA. This guide covers what’s available out of the box and how to add your own.
Goals on Shopify (Built-In)
Shopify workspaces get five conversion goals pre-wired. Nothing to configure — they start collecting data the moment the Web Pixel is installed.
| Goal key | Display name | Type |
|---|---|---|
add_to_cart | Add to Cart | Binary (count) |
checkout_started | Checkout Started | Binary (count) |
checkout_completed | Purchases | Binary (count) |
revenue_per_session | Revenue per Session | Continuous |
average_order_value | Average Order Value | Continuous |
Default primary metric: revenue_per_session.
These map directly to the Shopify Web Pixel’s funnel events (see Shopify Funnel Tracking). All five are available as primary metrics without any setup.
Goals on HTML (Custom)
HTML workspaces don’t get pre-wired goals — you define what counts as a conversion based on your site’s events. Each goal has two parts:
- Event key — a short, lowercase, alphanumeric identifier (e.g.,
signup,add_to_cart,lead_form_submit). Must be unique per workspace. - Display name — the human-friendly label shown in the Results dashboard.
Defining a goal
- Open Settings → Conversion goals.
- Click Add goal.
- Enter the display name and event key. The key is auto-normalized to snake_case as you type.
- Save.
The goal is now selectable as a primary metric on any experiment.
Firing a goal from your site
Fire the conversion event from JavaScript on the page where the conversion happens (typically a thank-you page, post-signup confirmation, or success state):
window.SplitTestPro.trackConversion("signup");
You can also pass a numeric value — useful for revenue or any other quantitative goal — to enable continuous-metric reporting:
window.SplitTestPro.trackConversion("purchase", {
value: 49.0,
currency: "USD",
});
See Custom Events for the full API including the hasSubscription flag and the value/amount aliases.
Picking a Primary Metric
The primary metric is what the Results dashboard judges the experiment on — it drives the “probability to be best,” the credible interval, and the eligibility of the “Declare Winner” CTA. Pick deliberately.
Pick a metric tied to actual business outcomes
Optimizing for add_to_cart rather than purchase is a common mistake — a variant might lift add-to-cart but tank purchases (a too-aggressive CTA that gets clicks from people who immediately bounce at checkout). Default to the bottom of the funnel.
Pick a metric with enough volume to reach significance
If you’re running on a low-traffic page and your primary metric is a rare event (e.g., one purchase per 500 sessions), expect long runtimes. For early-stage tests, an upper-funnel metric that fires more often (add_to_cart) gets you a directional signal faster — just don’t mistake it for the final answer.
Pick a metric that the variant can plausibly affect
Testing a button color and choosing “Newsletter Signups” as the primary metric makes no sense — the variant doesn’t touch the newsletter form. The hypothesis and the metric must be in the same causal chain.
Multiple Goals on One Experiment
You can track multiple goals on a single experiment. The primary metric drives the “winner” decision, but the Results dashboard shows all tracked goals with their per-variant breakdowns. This is useful for spotting unintended downstream effects:
- Primary:
purchase - Secondary tracked:
add_to_cart,checkout_started
If purchase is up but add_to_cart is down, something funky is happening — probably worth investigating before declaring a winner.
A Note on Shopify-Specific Goals
The Shopify Settings UI includes a section that hints at custom-goal definitions beyond the five built-ins. This isn’t currently wired through end-to-end — for Shopify, stick to the five built-ins. If you need a custom Shopify goal (e.g., an event from a third-party app), the practical workaround today is to fire it via the Web Pixel using JavaScript and treat it as a custom event.
Common Mistakes
- Picking a primary metric you can’t influence. Hypothesis and metric must be linked. A button-color test should pick a click-adjacent metric, not a downstream one disconnected from the change.
- Defining a goal but never firing it from your site (HTML). The goal definition is just a label; without a
trackConversioncall from your code, no data is recorded. - Using vague event keys like
event_1,goal_a. Future-you will not remember what they meant. Use descriptive keys likepaid_signuporenterprise_inquiry. - Switching the primary metric mid-experiment. This contaminates your data — you’ve now optimized for two different things sequentially. If you realize the metric was wrong, complete the experiment and start a new one.
Next Steps
- Wire up your first custom event: Custom Events.
- Track revenue or other numeric values: Continuous Metrics.
- See what the dashboard shows for each goal: Results Dashboard.
Ready to start testing?
Install Split Test Pro and run your first experiment today.