---
title: Split URL testing (redirect tests)
slug: url-split
description: How split URL tests work in Personizely: A/B test or personalize with redirects, RegExp URL rewriting, query options, cross-domain limits and control reloads.
image: https://archbee-image-uploads.s3.amazonaws.com/1y1Fr-DMGy_apx7FwibyA/ORDTWfNKMXiY3ZRv0QSgP_personizely-docs-og.png
docTags: 
createdAt: 2026-10-16T19:39:55.243Z
---

A split URL test sends visitors to a different URL per variation, so you can compare two completely different pages, such as an old and a redesigned landing page, or two product page layouts. Control visitors stay on the original URL; variation visitors are redirected to the variation's URL. You can also run it as a personalization, redirecting a specific audience to its own page.

**Available on:** all platforms. **Plan:** URL split campaigns must be included in your plan.
**Available as:** A/B test · Personalization

:::hint{type="info"}
**Test or personalize.** You can run a split URL campaign as an **A/B test**, where visitors are split at random and you measure which version wins, or as a **personalization**, where each variation is shown to a specific audience, with an optional control group to measure the lift. The setup is the same; [Personalizations](https://docs.personizely.net/personalizations) covers what's different.
:::

## How it works

1. **The visitor opens an original page.** The snippet checks whether the URL matches one of the campaign's [pages](https://docs.personizely.net/campaign-pages), then checks the target and traffic allocation.
2. **The page is hidden while the decision is made.** On matching pages, the page body stays hidden until the visitor is either redirected or shown the original, so variation visitors don't see the original page first.
3. **Variation visitors are redirected.** The redirect replaces the current history entry, so the Back button doesn't return to the original page and bounce back again. Control visitors see the original page.
4. **The view is recorded on the destination.** A variation view is counted only once the destination page has loaded and the Personizely snippet has run there. **The destination must run the same Personizely snippet.**
5. **The visitor stays in their variation.** Returning visitors are redirected to the same variation on every later visit to a matching page. See [How visitors are assigned](https://docs.personizely.net/visitor-assignment).

## Set up a split URL test

1. Go to **Campaigns → New campaign → URL split**, and choose **Experiment** or **Personalization**.
2. Under **Pages**, choose the original page: a **Single page** or **Multiple pages** (rules or RegExp). **All pages** isn't available for split URL tests.
3. For each variation, click **Set URL** and enter the **Redirect URL**: an absolute URL (`https://shop.com/pages/landing-b`) or a path (`/pages/landing-b`).
4. Set the target, goals and traffic split, then start the campaign. Split URL campaigns have no preview: to check a variation, visit its redirect URL directly.

| Option                                | What it does                                                                                                                    | Values / default               |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| Redirect URL                          | Where variation visitors are sent from this page                                                                                | Absolute URL or path; required |
| Transfer query parameters             | Appends the original URL's query parameters to the redirect URL. Parameters already in the redirect URL keep their value.       | On for new variations          |
| Replace URL                           | After the destination loads, rewrites the address bar to the original URL's path, keeping the destination's query               | On for new variations          |
| Reload the page for the control group | Advanced settings, experiments only: control visitors get one page reload too, so both groups load twice before they're counted | Off                            |

Each variation has one redirect URL **per page**. If a campaign has several pages and a variation has no URL for the current page, that variation's visitors stay on the original page and still count as having seen the variation.

### Rewriting URLs with RegExp

When the original page uses **Multiple pages → RegExp**, the redirect URL can reuse capture groups from the pattern. The part of the original path that the pattern matches is replaced with the redirect URL, with `$1`, `$2` and so on filled in.

| Pattern               | Redirect URL              | Original path           | Destination                             |
| --------------------- | ------------------------- | ----------------------- | --------------------------------------- |
| `^/products/(.+)$`    | `/products/$1-v2`         | `/products/linen-shirt` | `/products/linen-shirt-v2`              |
| `^/(.*)$`             | `https://new.shop.com/$1` | `/collections/sale`     | `https://new.shop.com/collections/sale` |
| `^/pages/old-landing` | `/pages/new-landing`      | `/pages/old-landing`    | `/pages/new-landing`                    |

Anchor the pattern with `^` and `$` to replace the whole path. Parts of the path outside the match are kept as they are.

## Reload the page for the control group

A variation is counted only after its redirect lands, so visitors who leave during the redirect are missing from the variation, while control visitors are counted straight away. This makes the variation look slightly better or worse than it is, depending on who drops out.

Turn on **Reload the page for the control group** under **Advanced settings** to remove this bias. Control visitors then get one reload of the same page, so both groups go through the same second page load before they're counted. The trade-off is one extra page load for control visitors. It's available for split URL and [template](https://docs.personizely.net/template-shopify) experiments.

## Behavior details and limitations

- **The destination must run the snippet.** If the destination page doesn't load the same Personizely snippet, the variation's views are never recorded and the report shows no traffic for it.
- **Destinations on other domains.** Redirecting to a subdomain of the same site (`shop.example.com` → `promo.example.com`) works. Redirecting to an unrelated domain (`shop.example.com` → `example-landing.com`) redirects visitors correctly, but **no views are recorded for that variation**, because the visitor's assignment can't be passed between unrelated domains. Keep variations on the same domain or a sibling subdomain.
- **Assignments are per domain.** A visitor's assignment lives in their browser for your domain. If the same visitor later browses the original site on another domain, they're assigned again there.
- **Destinations must not match the original page.** If a redirect URL also matches the campaign's pages, visitors can be redirected again from the destination. With **Multiple pages**, make sure the destinations fall outside the rules or pattern.
- **Replace URL and analytics.** With **Replace URL** on, the address bar shows the original path after landing, but the destination page has already loaded and sent its own page view to your analytics tools.
- **No preview.** A split URL campaign is a redirect, so there's nothing to preview. Check each variation by visiting its redirect URL directly, and use a [QA target](https://docs.personizely.net/preview-qa) to test the redirect and tracking end to end.
- **Redirects and SEO.** The redirect happens in the browser. Bots and crawlers don't run the snippet, so they see the original page.
- **Flicker.** With the snippet loaded asynchronously, the original page can briefly show before the redirect. Synchronous loading avoids this. See [Performance and flicker](https://docs.personizely.net/performance-anti-flicker).
- **Deploying.** When the test ends, you can [deploy](https://docs.personizely.net/deploy-winners) the winning variation: from then on every visitor who matches the target is redirected to it, and no more data is recorded. You can undeploy it later. Personalizations can't be deployed.

## Running it as a personalization

- **One target per variation, first match wins.** Each variation has its own target, and a visitor gets the first variation in the list whose target they match. Put narrow audiences above broad ones. A visitor who matches no variation sees the original page and isn't redirected.
- **Control group.** 25% of matched visitors by default stay on the original URL and are counted as control.
- **No control reload.** **Reload the page for the control group** is available for experiments only, so in a personalization control visitors are counted straight away while variation visitors are counted after the redirect lands.
- **Live or Permanent.** With **Live**, the target is checked again on each matching page, so only visitors who match at that moment are redirected. Use **Permanent** to keep redirecting a visitor to their first variation.
- **No deploy.** Personalizations can't be deployed, so the report has no **Deploy**. A personalization keeps running until you stop it, and you can edit its variations and targets as needed. To stop measuring and show it to every matching visitor, set the control group to 0%.
- **Example audience:** send paid-social traffic (for example `utm_source=facebook`, using the [UTM parameters filter](https://docs.personizely.net/utm-parameters)) to a dedicated landing page.

## Examples

- **Landing page redesign:** original `/pages/spring` (Single page), variation `/pages/spring-v2`, with **Transfer query parameters** on so UTM tags reach the new page.
- **Product page template test across the catalog:** original `^/products/(.+)$` (RegExp), variation `/products/$1?view=alt`. On Shopify, a [template test](https://docs.personizely.net/template-shopify) does this natively.
- **Market-specific landing page:** a personalization that redirects visitors from one country to a localized landing page, with a 25% control group.

## Troubleshooting

- **The variation shows no views** → the destination doesn't run the Personizely snippet, or it's on an unrelated domain.
- **Visitors are redirected again from the destination** → the destination URL matches the campaign's page rules. Narrow the rules or add an Exclude rule for the destination.
- **The split looks uneven** → visitors are leaving during the redirect. Turn on **Reload the page for the control group**.
- **UTM parameters are lost** → turn on **Transfer query parameters**.

## Related

- [Campaign pages and URL matching](https://docs.personizely.net/campaign-pages)
- [Template testing (Shopify)](https://docs.personizely.net/template-shopify)
- [How visitors are assigned](https://docs.personizely.net/visitor-assignment)
- [Performance and flicker](https://docs.personizely.net/performance-anti-flicker)
- [Scheduling, stopping and deploying winners](https://docs.personizely.net/deploy-winners)
