---
title: "Campaign Visibility Controls"
description: "Control where and how your campaigns appear using campaign-level and component-level visibility settings"
---

Quikly offers visibility controls at two levels: **campaign-level** controls that affect the entire campaign, and **component-level** controls that let you customize individual placements.

## Campaign-Level Controls

These controls affect the entire campaign — all placements, all components.

| Control | Persistence | Use Case |
|---------|-------------|----------|
| **URL Rules (Visitor Session)** | Cookie-based (session) | Qualify visitors based on entry page (e.g., "only show to visitors who landed on /promo") |
| **Page URL Rules** | Per page view | Control which pages the campaign appears on site-wide |
| **Visibility Percentage** | Cookie-based (session) | A/B testing — show campaign to X% of visitors |
| **Visitor Limit** | Server-side | Cap total participants |

### Accessing Campaign-Level Settings

1. Open your campaign in the Quikly dashboard.
2. Navigate to the **Editor > Launch** page.
3. Look for the **Visibility** section.

### URL Rules (Visitor Session)

Use this to qualify visitors based on how they arrived at your site. Once a visitor qualifies, they'll see the campaign on every page during their session.

**Example:** You're running a sitewide promotion but only want visitors who entered through a specific landing page to see it. Set a visitor session rule for `/promo` — once qualified, they'll see the campaign everywhere.

### Page URL Rules

Use this to control which pages display the campaign. Unlike visitor session rules, these are evaluated on every page view.

- **Show only on pages matching** — Campaign only appears on matching pages
- **Hide on pages matching** — Campaign is hidden on matching pages

## Component-Level Controls

These controls affect individual placements — you can show different placements on different pages within the same campaign.

| Control | Use Case |
|---------|----------|
| **Show only on Specific URLs** | Show this placement only on matching pages |
| **Hide on Specific URLs** | Hide this placement on matching pages |
| **Template Filtering** | Show/hide on Shopify template types (cart, product, etc.) |
| **Product Handle Filtering** | Show/hide on specific product pages |

### Accessing Component-Level Settings

1. Navigate to **Build > Placements** in your campaign.
2. Click the **pencil icon** on the placement you want to configure.
3. Look for the filtering fields in the settings panel.

### URL Filtering

Control where a specific placement appears based on URL patterns:

- **Show only on Specific URLs** — Only display this placement on pages where the URL contains the specified patterns
- **Hide on Specific URLs** — Hide this placement on pages where the URL contains the specified patterns

**Example:** You have a campaign with a banner and a popup. You want the banner on all pages, but the popup only on product pages. Use URL filtering on the popup to show only on `/products/`.

### Template Filtering

Filter by Shopify template type instead of URL pattern. Useful for targeting:
- Product pages
- Collection pages
- Cart page
- Blog posts

### Product Handle Filtering

Show or hide placements on specific product pages by handle. See [Show or Hide Components on Specific Products](/shopify/tutorials/product-page-targeting) for details.

## When to Use Which

| Scenario | Recommended Control |
|----------|---------------------|
| "Only show campaign to visitors from email links" | Campaign: Visitor Session URL Rules |
| "Show campaign on product pages only" | Campaign: Page URL Rules |
| "Show banner everywhere, popup only on /collections/*" | Component: URL Filtering on popup |
| "A/B test: show to 50% of visitors" | Campaign: Visibility Percentage |
| "Hide campaign on cart/checkout" | Campaign: Page URL Rules OR Component: Template Filtering |
| "Different offers on different product categories" | Multiple campaigns, or Component: Product Handle Filtering |

## Key Differences

| Aspect | Campaign-Level | Component-Level |
|--------|----------------|-----------------|
| Affects | All placements | Single placement |
| Visitor Session rules | Remembered via cookie | N/A |
| Flexibility | All-or-nothing | Fine-grained per placement |
| Setup complexity | Simpler for sitewide rules | More flexible for mixed layouts |

## URL Pattern Matching

Both campaign and component URL filters use the same pattern matching:

### Substring Matching

Patterns match if they appear anywhere in the URL.

| Pattern | Matches | Doesn't Match |
|---------|---------|---------------|
| `snowboard` | `/products/snowboard-bundle`, `/snowboard-pro` | `/products/skateboard` |
| `/products/` | `/products/anything`, `/products/bundle-123` | `/collections/winter` |
| `/collections/winter` | `/collections/winter`, `/collections/winter-sale` | `/collections/summer` |

### Wildcards

Use `*` as a wildcard to match any characters:

| Pattern | Matches |
|---------|---------|
| `/products/*-bundle` | `/products/snowboard-bundle`, `/products/ski-bundle` |
| `/collections/*/sale` | `/collections/winter/sale`, `/collections/summer/sale` |
| `*.myshopify.com` | `store.myshopify.com`, `test.myshopify.com` |

### Multiple Patterns

Separate multiple patterns with commas:

```
/products/*, /collections/winter, snowboard
```

This matches any URL containing `/products/`, `/collections/winter`, OR `snowboard`.

### Pattern Notes

- Patterns are **case-insensitive**
- Patterns match against the **full URL** including protocol and domain
- In the **campaign editor/preview**, URL filtering is bypassed so you can always see your placements

## Evaluation Order

A placement only appears if it passes all three levels:

1. **Campaign-level visitor session rules** — Is this visitor qualified? (cookie persisted)
2. **Campaign-level page rules** — Should the campaign show on this page?
3. **Component-level filters** — Should this specific placement show on this page?

At each level, exclude rules are checked first. If any exclude pattern matches, the placement is hidden. Then include rules are checked — if specified, at least one must match.

## Related Tutorials

- [Show or Hide Components on Specific Products](/shopify/tutorials/product-page-targeting) - Filter by product handle
- [Position and Layer the Teaser and Popup](/shopify/tutorials/positioning-teaser-and-popup) - Adjust vertical offset and Z-Index to position components and layer them behind theme UI
- [How to Position the Banner Component](/shopify/tutorials/position-banner)