# Set up Proof Match rules

Show different testimonials by page, campaign or referring site with Proof Match rules, test them in the simulator and fix a rule that never matches.

Proof Match shows each visitor the testimonials that fit where they are: the page they're on, the campaign that brought them or the site they came from. You write a context rule for each case, and a visitor who matches none of them sees the widget's base pool. Proof Match is on Premium and Business.

1. **Turn on Proof Match**

   In the widget builder, open the **Content** tab and click **Proof Match** under **Selection Mode**. If the widget had hand-picked testimonials, click **Use Proof Match** to confirm. They stay saved for when you switch back to **Curate**.

2. **Set the base pool**

   The recipe card and the three stages, **The pool**, **Quality bar** and **Order & mix**, work as they do in Auto-sync; see [Fill a widget automatically with auto-sync](/help/display/fill-a-widget-with-auto-sync). Here they set the base pool: what a visitor sees when no rule matches, and what every rule starts from.

3. **Add a rule**

   Under **Context rules**, click **Add the first rule**. The **Rule studio** opens over the preview with a rule named **Rule 1**; type over the name to change it.

   For more rules, click **Add** above the list of rules and choose **Blank rule** or a template: **Pricing page**, **Homepage hero**, **G2 campaign**, **Comparison page** or **Enterprise campaign**. A template arrives with a condition and a few overrides filled in, so check its **Context** and **Proof** tabs. Where it picks themes, they're your most common ones in Proof Intelligence. With nothing analyzed yet, they're samples that none of your testimonials have, so replace them.

   To come back later, click **Open rule studio**.

4. **Say when the rule applies**

   On the rule's **Context** tab, fill in at least one field, with commas between values.

   - **Path patterns**: the page's path, which is the part of its address after your domain, such as `/pricing`. A `*` stands for any run of characters: `/pricing*` matches `/pricing`, `/pricing/` and `/pricing/teams`, and `*comparison*` matches any path that contains "comparison". Without a `*`, the pattern must equal the whole path: `/pricing` doesn't match `/pricing/`, and `/` matches only your home page.
   - **Referrer domains**: the domain of the page that sent the visitor, such as `g2.com`, without `https://`. A leading `www.` is ignored, and a subdomain counts as a different domain.
   - **UTM source**, **UTM medium**, **UTM campaign** and **UTM content**: the `utm_source`, `utm_medium`, `utm_campaign` and `utm_content` values in the page's address.
   - **Page tags**: labels you give a page in its embed code. They match only once you [add them to that code](#tag-a-page).

   A visitor must match every field you fill in, and any one value within a field. Capital letters don't matter, and a field holds up to 10 values. A rule with no condition shows **This rule never runs yet.**

5. **Choose what the rule shows**

   On the **Proof** tab, a blank rule is **Linked, no overrides**: it shows exactly the base pool. To show something else, click **Override a stage** and pick one of the base pool's settings, such as **Sources**, **Tags**, **Rating** or **Themes**. Then set its value for this rule.

   The rule follows the base pool for everything else. An override is checked against all your approved testimonials, so it can bring in ones the base pool leaves out: with a base pool of 5★ only, a rule can take 4★ and up. Click the X on an override to follow the base pool again. **Override all 3 stages** pins every setting at its current value, so later changes to the base pool don't move the rule.

   The **This rule** panel counts the testimonials the rule finds.

6. **Decide what happens when the rule finds too little**

   On the **Fallback** tab, under **If this rule finds too little proof**, choose:

   - **Use base pool**, the default: if the rule finds fewer than three testimonials (or fewer than its cap, when the cap is lower), the visitor sees the base pool instead.
   - **Show nothing**: the visitor sees exactly what the rule finds, even one testimonial or none.

7. **Put the rules in order**

   Rules are checked from the top of the list, and the first one that is switched on and matches decides what the visitor sees. Drag a rule by its handle to move it. Put a narrow rule such as `/pricing/enterprise*` above a broad one such as `/pricing*`.

   The switch beside a rule's name turns it off without deleting it; **Remove** deletes it without asking. A widget holds up to 20 rules. Click **Done** to close the studio.

8. **Test it in the simulator**

   On the **Content** tab, click **Context simulator**. Under **Visitor context**, enter a visitor's **Pathname**, **Referrer domain**, UTM values and **Page tags**. You then see the rule that matches, or **No rule matched**; the **Base pool** and **Context pool** counts, the second being what the matching rule found; and the first five testimonials that visitor gets. The builder's preview shows that visitor's widget too.

   > **Warning:** The simulator opens with sample values in most fields, including the page tag `pricing`. Clear the ones a real visitor to your page won't have. Otherwise a rule can match here and never on your site.

## Tag a page

**Page tags** come from the embed code only: a `data-page-tags` attribute on the widget's `<div>`. The code from **Get code** doesn't include it, so add it yourself on each page that needs tags:

```html
<div class="retestimonial-widget" data-widget-key="your-widget-key" data-init="auto" data-page-tags="pricing,enterprise"></div>
```

Leave the rest of the code as you copied it. Separate tags with commas; a page can carry up to 10. Without the attribute, a rule with anything in **Page tags** never matches on your site, even when its other fields fit.

## If a rule doesn't match

Try the visitor in the simulator, then check these:

- **A rule above it matches first,** or the rule is switched off. The list of rules then shows **off** beside it.
- **It found too few testimonials.** The simulator says **No rule matched** with a note that starts "Fallback applied". Loosen the rule's overrides, or choose **Show nothing**.
- **The path pattern is too exact.** End it with `*` to cover a trailing slash and the pages below it.
- **The page's code has no tags.** See [Tag a page](#tag-a-page).
- **The referrer or UTM values are gone.** Both are read from the page the visitor is on. On the next page of your site, the referrer is your own site and the UTM values have left the address, unless your site carries them along.
- **The visitor isn't measured.** A rule then sees only the page's path and tags, so one that needs a referrer or a UTM value doesn't match. By default this covers every browser that sends a Global Privacy Control or Do Not Track signal. See [Privacy](/help/insights/proof-impact#privacy).
- **The widget is in a frame from another site,** as in Wix's Embed HTML element. It can't read your page's address there, so add `data-page-path="/pricing"`, with that page's own path, to the widget's `<div>`. Referrer and UTM values can't be read there at all. See [Embed a widget on Wix](/help/display/embed-on-wix).
- **You pasted the iframe code.** With **Iframe / Embed URL**, rules run only when **Automatic sizing and Proof Impact** is ticked under **Get code**; page tags then go on the `<iframe>` tag. Without that option, every visitor sees the base pool.

## What happens next

The builder saves rules as you make them. On a published widget they're live, and your site picks them up shortly. A new widget still needs [publishing and adding to your site](/help/display/embed-a-widget-on-any-website).

When you later change the base pool, a notice by that setting names the rules that follow it and how many testimonials each one now finds. **Apply to all** keeps the change for them, **Base only** leaves them on the old value as an override, and **Undo** takes the change back.

> **Warning:** Switching the widget to **Curate** or **Auto-sync** deletes its rules, and nothing asks you first. They're still there if you switch back to **Proof Match** before you leave the builder, and gone after that. To pause a rule and keep it, switch the rule off instead.

To find out which rule brings more conversions, see [Auto-Optimize a Proof Match widget](/help/insights/auto-optimize-a-proof-match-widget). While it runs a test, some visitors see another matching rule or the base pool instead of the first match. **Rank by impact**, at the top of the rule studio, needs at least two rules with results in Proof Impact.

If your plan no longer includes Proof Match, the builder hides the rules, and you can't edit them until you upgrade.

- [Choose which testimonials a widget shows](/help/display/choose-which-testimonials-a-widget-shows)
- [Fill a widget automatically with auto-sync](/help/display/fill-a-widget-with-auto-sync)
- [Proof Impact](/help/insights/proof-impact)
