Audience filtering

Decide exactly who sees a form — pages, devices, location, visitor history, and Klaviyo or Shopify segments — with testable AND/OR rules.

Audience filtering controls who sees a form. Before a form renders on your storefront, Formtoro checks whether the current visitor matches the form's audience. If they match, the form appears; if not, it stays hidden — the visitor never knows it exists.

New forms start with the Any visitor (not subscribed) audience: everyone who hasn't already signed up through one of your forms is eligible, and existing subscribers are left alone.

Where to edit the audience

Open Settings in the builder's title bar and switch to the Audience tab, then click Edit rules. The Audience Rules sheet slides in with everything on one screen: quick presets, your saved audiences, the rule editor, a plain-English Targeting summary, and the tester. Changes apply to your draft only when you click Apply — Cancel discards them.

Quick presets

One click applies a common pattern, which you can then customize:

PresetWho it targets
All visitorsEveryone — removes all rules
Any visitor (not subscribed)Anyone who hasn't subscribed yet (the default)
New visitorsFirst-time visitors
Returning visitorsVisitors you've seen before
Mobile only / Desktop onlyOne device class
Product pagesPages whose URL contains /products/
UTM campaign trafficVisitors arriving with any utm_campaign

What you can target

Each rule picks one condition from a grouped dropdown. The groups and their exact options:

GroupOptions
URL & UTMFull URL, UTM source, UTM medium, UTM campaign
Device & GeoDevice type (Mobile or Desktop), Country, Continent, Located in the EU, Located outside the EU
Visitor lifecycleFirst-time visitor, Returning visitor, Subscribed visitor (signed up via a form), Any unsubscribed visitor
This formHas not completed this form — hide a form from people who already finished it
IntegrationsKlaviyo segment, Shopify segment — see segment targeting
StorageCookie, Local storage, Session storage — you provide the key (the cookie or storage entry name) to read

Lifecycle options like First-time visitor or Located in the EU are complete conditions on their own — pick one and you're done. The rest take an operator and a value.

To target specific pages, use Full URL with contains — for example Full URL contains /products/ matches every product page, whatever the domain, language prefix, or query string. Older audiences built with the retired Page path condition keep working and still show it, but new rules use Full URL.

Full URL checks the whole address, including the query string, so a contains rule also matches text that only appears in a link parameter (for example ?return_to=/products/x). Pick a value specific enough to avoid that.

Switching a rule's condition keeps what you already entered wherever it still makes sense — a contains value you typed for Full URL carries over to a UTM or cookie rule — and clears values that wouldn't mean the same thing on the new condition, like an exact equals match or a URL typed into Country.

Operators

Depending on the condition, you can use:

  • equals / does not equal
  • contains / does not contain — substring match, great for URLs
  • is one of / is not one of — match against a list (devices, countries, continents, segments)
  • is set / is not set — the value exists at all (UTM parameters, cookies, storage entries)

A few examples:

  • Show a welcome offer only on collection pages: First-time visitor and Full URL contains /collections/.
  • Show a campaign form only when UTM campaign contains spring-sale.
  • Hide a form from VIPs who carry a vip cookie: Cookie with key vip and is not set — only visitors without the cookie match.

Combining rules

Each group opens with a sentence — Show to visitors who match all of these rules — and the all / any chip in it decides how the rules below combine: all (AND) means a visitor must match every rule, any (OR) means one is enough. The choice applies to the whole group; the and / or between rows just reads it back.

To mix the two, use a group. Add “any of” group (or “all of”) nests a sub-group with the opposite setting, so you can express things like:

Unsubscribed visitor AND Full URL does not contain /checkout AND (Country is Australia OR Country is New Zealand)

Groups can nest up to three levels deep.

To keep visitors out — hide the form on checkout or cart pages — use does not contain rules in an all group. In an any group a visitor only has to pass one rule, so two “does not contain” rules let almost everyone through; the editor flags this and offers Match all rules instead. It likewise flags an all group that asks for two values of the same thing at once (Country is Australia AND Country is New Zealand), which no visitor can match.

To reorder rules, drag a rule by its leading icon (or a nested group by the grip in its header) — rules move within their own group, so dragging never changes the AND/OR logic. To reuse a rule, click the Duplicate rule icon next to its remove button: the copy lands right below it, ready to tweak.

As you edit, the dashed Targeting box below the rules restates the whole audience in plain English — read it back to confirm the logic says what you mean. Clear all removes every rule, which means show to all visitors.

Target Klaviyo and Shopify segments

You can gate a form on membership in a Klaviyo segment or a Shopify customer segment — show a VIP-only offer, or hide a winback form from your engaged segment.

  • Pick segments by name: the value field is a searchable multiselect that lists your segments; selected ones appear as removable chips. If the list can't load, you can still type a segment ID and press Enter to add it.
  • Klaviyo segment only appears in the dropdown once Klaviyo is connected. Membership is resolved for visitors Klaviyo already recognizes on your site (their Klaviyo cookie).
  • Shopify segment membership is only evaluated for logged-in customers. A guest browsing your store can't be matched to a Shopify segment.

When membership can't be checked — the visitor isn't recognized by Klaviyo, isn't logged in to Shopify, or the lookup fails — an is one of rule treats the visitor as not matching, so a members-only form stays hidden rather than leaking to everyone. An is not one of rule does the opposite and keeps showing the form, so an exclusion never accidentally suppresses your whole audience.

Saved audiences

Build a rule set once and reuse it across forms:

  • Save as audience stores the current rules under a name.
  • The Saved audience dropdown loads any saved audience into the editor. Once selected, you can rename it, delete it, or Detach to keep the rules on this form only, no longer linked to the library entry.
  • An audience that's linked to a form can't be deleted — detach it first.

How it runs

When a shopper loads a page, the storefront widget asks Formtoro whether the form is eligible. Formtoro evaluates the audience server-side using the visitor's context — page, device, location, visit and subscription history, segment membership. Cookie, Local storage, and Session storage rules are the exception: those values only exist in the shopper's browser, so they're checked there.

Test your audience

Click Test audience at the bottom of the sheet to open the Test visitor panel. It shows input fields only for the conditions your rules actually use — a URL, a device, a country, segment IDs — you fill in the values a real visitor would have. There are no preset visitor profiles; you always describe the test visitor yourself.

The result updates live: a Visitor matches / Visitor does not match banner plus a per-rule breakdown showing exactly which conditions passed and failed, with the value each one saw. For segment rules, enter segment IDs comma-separated — or leave the field empty to simulate a visitor whose membership couldn't be checked.

Test mode

Test mode lets you try a form on your live store without shoppers seeing it. While it's on, the form only shows on pages whose URL contains #ft-test, such as https://your-store.com/#ft-test.

  1. Turn on Test mode in the Audience section of the right panel.
  2. Click Save version. If the form is off, click Turn on too. The switch only changes your draft. Your store keeps showing the previous version until you save.
  3. When the panel shows Testing on your store, use Copy test link or Open to try the form.

Until you save, the panel shows Not testing yet and tells you the step that's missing. The test link appears only after that.

While testing, your audience rules are paused, so anyone with the test link sees the form, even if they're on the wrong device or have already signed up. Test mode doesn't change or remove your rules. To go live, turn the switch off and click Save version. Your rules then apply again, exactly as before. Until you save, the panel shows Your store is still in test mode.

How often it shows still applies while testing. If the form stops showing after you close or submit it, open the test link in a private window.

The #ft-test part of the link doesn't carry over when you click to another page. To test the form somewhere else, add #ft-test to the end of that page's URL and reload.

You can't change test mode while the form's experiment is running or paused, so every arm is always shown to the same shoppers. You also can't start an experiment while any of its forms is in test mode.

Audiences and experiments

In an A/B experiment, every arm must target the same audience — otherwise you'd be comparing different visitors, not different forms. Edit the audience on the control form and it mirrors to every variant automatically; the variants' audiences are locked while the experiment is set up.

Next steps