---
title: Campaign groups (mutually exclusive tests)
slug: campaign-groups
description: How campaign groups work in Personizely: run mutually exclusive A/B tests, set traffic weights per campaign, and choose what happens when a grouped test ends.
docTags: 
createdAt: 2026-10-16T19:37:52.271Z
---

A campaign group makes campaigns mutually exclusive: each visitor is given only one campaign from the group, so tests that run on the same pages or the same audience don't interfere with each other's results. You set a weight for each campaign to control how traffic is divided between them.

**Available on:** all platforms, for every campaign type.

## How it works

1. **A visitor arrives on your site.** Personizely picks one campaign from the group for them, at random, according to the campaigns' weights.
2. **Only that campaign can run for the visitor.** It then assigns the visitor to control or a variation as usual, following its own pages, target and traffic allocation. See [How visitors are assigned to variations](docId\:sAtUYHXtt2H5eBGuGVFDv).
3. **Other campaigns in the group don't run for that visitor**, even on pages where they would apply.
4. **The visitor stays with their campaign.** Once the visitor has entered their campaign (it applied on a page they viewed), they keep getting it on later visits. If they haven't reached a page where it applies yet, the pick may be made again in a later session.
5. **When their campaign ends**, the **Ended test behavior** setting decides whether the visitor gets another campaign from the group or none.

Without a group, each campaign assigns visitors independently, so one visitor can be in several tests at once.

## Set up a group

1. Open a campaign and click **Group** at the top of the campaign editor.
2. Choose **Create new group**, or **Add to group** to join an existing one.
3. Name the group, add campaigns with **Add campaign to group**, and set each campaign's weight.
4. Choose the **Ended test behavior**, then **Save**.

From a grouped campaign, the same menu offers **Edit group**, **Change group** and **Remove from group**.

| Option                  | What it does                                                                                                                                                                                                                                         | Values / default                                                  |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| Name                    | Identifies the group in the campaign editor                                                                                                                                                                                                          | Required                                                          |
| Campaigns               | The campaigns that exclude each other                                                                                                                                                                                                                | At least 2. A campaign can be in one group at a time              |
| Weight (per campaign)   | Share of the group's visitors picked for that campaign                                                                                                                                                                                               | 0–100%, totaling 100%. Changing one adjusts the others            |
| **Ended test behavior** | **Exclude ended campaigns**: if a visitor's campaign is ended or paused, they don't get any campaign from the group again. **Include replacement campaign**: if a visitor's campaign has ended, they're given another active campaign from the group | Exclude ended campaigns when you create the group from a campaign |

## Behavior details and limitations

- **Weights are redistributed when campaigns stop.** If some campaigns in the group aren't active, their weights are redistributed proportionally among the active ones, so the total stays 100%. For example, with weights 50/30/20 and the 20% campaign paused, the others get 62.5% and 37.5%.
- **Scheduled campaigns wait their turn.** A campaign that's scheduled but hasn't started yet is treated as inactive: it takes no share of the group's traffic until it starts.
- **Picked visitors see nothing from the group on other pages.** A visitor picked for campaign A doesn't see campaign B, even on pages where A doesn't apply. That's the point of a group, but it means grouping campaigns that target different pages lowers each campaign's traffic. The app warns you when grouped campaigns target different pages.
- **Keep traffic allocation at 100% for grouped campaigns.** A visitor picked for a campaign whose traffic allocation leaves them out still belongs to that campaign and sees nothing from the group. Use group weights, not allocation, to control traffic.
- **A single active campaign gets all traffic.** If only one campaign in the group is active, every visitor gets it. The app warns you so you can add more.
- **Exclude vs include.** **Exclude ended campaigns** keeps a visitor's history clean: once they've been in a test, they never see a different test from the same group. **Include replacement campaign** gets more traffic into later tests but exposes those visitors to two tests in sequence.
- **Pausing in an Exclude group.** While a campaign is paused, its visitors see nothing from the group. When it's resumed, they get it again.
- **Deploying removes the campaign from the group.** When you [Scheduling, stopping and deploying winners](docId:_Lhq3atO5XiqkgwNPL25b) a grouped campaign, it leaves the group and is deployed on its own. If that would leave only one campaign, the group is deleted.
- **Cloning doesn't copy the group.** A cloned campaign starts outside any group.

## Examples

- **Two product page tests at once:** a test of the image gallery and a test of the add-to-cart area, both on the product page. Grouped 50/50, so each visitor sees only one and the results don't mix.
- **Homepage sequence:** two homepage tests in one group with **Include replacement campaign**. When the first test ends, its visitors are given the second one, which then receives all of the group's traffic.
- **Price test isolation:** a price test and a free-shipping-threshold test grouped together, so no shopper sees both a new price and a new shipping offer.

## Troubleshooting

- **A grouped campaign gets far fewer views than its weight suggests** → the campaigns target different pages, or the campaign's traffic allocation is below 100%. Visitors picked for it only count when they reach its pages and enter its allocation.
- **A newly added campaign fills slowly** → visitors who already entered another campaign in the group stay with it. The new campaign gets its share of visitors who haven't been placed yet, mostly new visitors.
- **Visitors see nothing from the group after a campaign ended** → **Exclude ended campaigns** is selected. Switch to **Include replacement campaign** if they should get another test.

## Related

- [A/B tests (experiments)](docId\:xwgt5LvcikawVgdtMS6h-)
- [How visitors are assigned to variations](docId\:sAtUYHXtt2H5eBGuGVFDv)
- [Campaigns](docId\:hAZBczeudrJR-hCayEnOs)
- [Scheduling, stopping and deploying winners](docId:_Lhq3atO5XiqkgwNPL25b)
- [Reading campaign reports](docId\:Xb9pSvXG7zF45wIEXc7Sp)
