Split URL Experiments
Split URL experiments are the other half of CRO testing. Instead of changing one page in place, you build a different page at a different URL and split incoming traffic between the two. A vs B picks who sees which page, redirects accordingly, and measures the same metrics it does for any other experiment.
When to use Split URL
Reach for Split URL when the change you want to test is too large to sit inside the visual editor or a custom-code variation. Common scenarios:
- Testing a brand-new landing page against the live one.
- Comparing a redesigned pricing page against the current page.
- Validating a new checkout flow against the existing one.
- Trying long-form against short-form copy as separate pages.
- Migrating from a legacy template to a new template gradually.
For smaller in-place changes (copy, styling, swapping a hero image, toggling a button), use a Visual / Code experiment instead — there is no need to maintain two pages.
Setting up a Split URL experiment
Pick the experiment type
Configure the control URL
Add your variations
Set traffic weights
Launch
Control URL match modes
Five match modes are available — pick whichever is the simplest fit for the page you are testing on:
- Exact — the full URL must match character-for-character. Example:
https://example.com/pricingmatches only that exact URL. - Path — the pathname must match exactly; host, query string, and hash are ignored. Example:
/pricingmatches any host with that path. - Substring — the full URL must contain the given string. Example:
/pricingmatches/pricing,/pricing/teams,/old-pricing, etc. - Pattern — a glob-style wildcard pattern. Use
*for any sequence and?for any single character. Example:https://example.com/landing-*matches every landing-page variant. - Regex — a full regular expression for cases that patterns cannot express (character classes, alternation, anchors). Example:
^https://example\.com/pricing/(monthly|annual)/?$.
Per-variation options
Each variation has three optional fields beyond name and destination URL:
- Preserve query parameters — when enabled, query parameters on the visitor’s original URL (for example UTM tags) are appended to the destination URL on redirect. Destination URL params win on conflict. Defaults to on.
- Display name in reports — a human-readable label shown in the results table instead of the raw destination URL. Hover to see the raw URL when needed. Useful for long URLs with tracking parameters.
Tracking and attribution
For results to capture conversions, the variation URL must have the A vs B snippet installed too. The snippet on the variation page reads the sticky bucket cookie set on the control page and continues to attribute conversions to the same experiment. If a variation is on a different domain than the control, install the snippet on both.
Preview & QA
Preview links work for Split URL experiments. Generate a link for a chosen variation from the results page or builder review step; the link opens the destination URL directly with a preview token attached, and the snippet recognises the token and skips its redirect logic so the reviewer can inspect the variation in place. Each preview link is unique to a variation; share separate links per variation if you have more than one to review.
The browser extension supports Split URL experiments too — when dev mode is enabled the popup shows each variation’s destination URL with an Open variation URL button next to it for one-click navigation.
How the snippet runs the redirect
When the snippet loads on a page that matches the control URL of a running Split URL experiment, it:
- Hides the page with the anti-flicker mechanism.
- Evaluates audience, exclusion-group, and traffic-allocation rules.
- Buckets the visitor deterministically — the same visitor always lands on the same variation across sessions, identical to in-place experiments.
- Fires the
exposureevent and flushes the request immediately vianavigator.sendBeaconso it survives the navigation. - If the visitor is in the control variation, removes the anti-flicker and renders the page normally. If they are in a variant variation, calls
window.location.replace(destinationUrl)— using.replacerather than.hrefmeans the browser back button takes the visitor to where they came from, not back to the control URL where they would be redirected again.
Common pitfalls
- Redirect loops — A vs B blocks any variation destination URL that would match the control URL under the chosen match mode. You will see the validation error inline before the experiment can be saved.
- Anti-flicker on slow connections — the redirect path runs before any visible paint, but on very slow connections a flash of the control page can still occur. Keep the snippet hosted close to your visitors (the CDN we ship with is global) and minimise render-blocking scripts above the snippet tag.
- Cross-domain variations — Split URL works across domains as long as the snippet is installed on every destination domain. Without the snippet, conversions on the variation domain are not attributed back to the experiment.
Reference — datafile shape
Split URL experiments add three fields to the published datafile so the snippet can evaluate them client-side:
1{2 "id": "exp_…",3 "experimentType": "SPLIT_URL",4 "splitUrl": {5 "controlUrl": "https://example.com/pricing",6 "matchMode": "EXACT"7 },8 "variations": [9 {10 "id": "var_control",11 "type": "control",12 "destinationUrl": null13 },14 {15 "id": "var_b",16 "type": "variant",17 "destinationUrl": "https://example.com/pricing-v2",18 "preserveQueryParams": true,19 "displayName": "Long-form Pricing"20 }21 ]22}