Quickstart
From nothing to a live, flicker-free experiment: run the dashboard, put the edge in front of your site, mirror your conversions, watch the winner.
1 · Create an experiment
Sign in to the dashboard and open New experiment. The wizard steps through Basics → Variants → Targeting → Metrics → Review. On the Variants step, a variant is a list of changes — use Pick an element to point-and-click on your live page, or add CSS / JavaScript / HTML-insert / page-data changes from the typed menu. Metrics are just the event names your site already fires (submit_click, purchase…). Create an API key from the Setup page — it’s shown once.
2 · Put the edge in front of your site
The edge is a reverse proxy — your application code never changes. Pick a path:
- One command (Cloudflare):
npx shiftzero deployscaffolds the worker, sets your API key as a secret, and deploys. - Manual worker: see Cloudflare Worker install.
- Zero infrastructure: the managed proxy — set your domain + origin in the dashboard and point a CNAME.
The worker pulls running experiments, audiences and the holdout from the dashboard on a 30s TTL (serving stale on any control-plane blip) and handles assignment, the transform, exposure beacons, identity, and consent.
3 · Mirror your conversions
One tag on any stack — it rides the events you already push to the dataLayer:
<script async src="https://YOUR-DASHBOARD/sz.js"
data-endpoint="https://YOUR-COLLECTOR/events?wk=YOUR_WRITE_KEY"
data-consent-cookie="cookie_consent"></script>The bridge mirrors GA4/GTM-style events (your analytics are untouched), stamps each conversion with the visitor’s edge assignments, and reads the identity the edge set — so a purchase is credited only to experiments the user is actually in.
4 · Start it and watch
Press ▶ Start. QA the variant safely with the Preview as… links (they force a variant without polluting results). The experiment page shows the live scoreboard — peek-safe by construction, with SRM guardrails and a patch-health panel that flags selectors that stop matching. When a winner is called, 🏆 Ship winner serves it at 100% from the edge while you hardcode the change.