Help · Audience

Building a segment

The builder writes rules as sentences. Every condition starts "Anyone who…" and finishes with words you would say out loud: anyone who placed an order at least 2 times in the last 90 days.

Give the segment a name, add labels if you want them — type a word and press Enter; labels are how you group your segments — and then build the rule.

You can also start by describing the segment in your own words: when the rule is still empty, type what you want into Describe your segment and press Draft it, and the conditions are drafted for you — editable, counted, and never saved until you save them. The Describe your segment page covers it.

The rule is made of groups of conditions, plus an optional exclusion block.

Use Add condition inside a group, Add another group to require something else as well, and Add exclusion to carve people out. The exclusion block is a block of its own, not a setting hidden inside each condition.

The trash at the end of a condition takes it out. It is the same mark everywhere in the app that means "take this row out" — the same one on a form's rules and in a form's list of blocks — so it means the same thing in all three places. An × only ever means "close this".

A rule with no conditions at all matches everyone — the builder says so — but it cannot be saved. Add at least one condition first.

Add condition opens a short menu: What should this condition ask? Each entry there is one of the answers below, and several of them open onto more than one sentence.

The events your store has recorded — an order, a checkout, a product view. You pick the event, how many times (at least, exactly, at most), and when: ever, in the last N days, or since a date.

Anyone who did Placed Order at least 1 time in the last 90 days.

Every event counts, wherever it came from. Orders and customer changes Shopify records for you, what people do on your storefront, and anything you push in yourself through the events API — a loyalty program, a reviews app, a subscription tool — all sit in the same menu and all count in the same rule. There is nothing to switch on. The one exception is a metric you have removed yourself: it stops being offered here and stops counting everywhere, which the Metrics page explains in full.

Under the sentence sits Narrow by property, which asks which one — which product, which page, or whatever else the event carried. Anyone who Ordered Product at least 1 time where the product is “Brightening Concealer”. The Narrowing by property page covers it, including the wording difference between "never bought it" and "bought something else".

The same shape, about money rather than counts: more than or less than an amount, on an event, within a window. It takes the same Narrow by property lines, so spent more than $200 on this one product is a rule you can write.

Anyone who spent more than $500 on Placed Order in the last 180 days.

Your own Shopify customer tags, as they arrive from Shopify. Is tagged or is not tagged, naming one tag — or has any Shopify tag and has no Shopify tags, which ask whether Shopify has written any word on somebody at all and take no tag name.

Anyone who has no Shopify tags.

That last one is worth knowing about. A person who shops with you picks up tags along the way, so a record no tag has ever reached us for is often not a person at all. Has no Shopify tags matches an empty tag list and a record carrying no tag field at all, so nobody falls between the two halves of the rule. What it cannot tell you is which of the two you are looking at: a customer we have never synced tags for reads exactly like one Shopify says has none. The built-in Suspected bots segment is built on this condition, and the Segments page explains the rest of that rule.

Matching folds case: VIP is the same as vip. What Shopify sent is stored exactly as it sent it; the comparison simply does not care about capitals, so a rule cannot quietly miss half the people it means.

Whether somebody is on one of your lists: is on the list or is not on the list, and which one.

This is how a list becomes a campaign's audience. Campaigns are sent to segments, so a rule that says anyone who is on the list Newsletter is what turns a list you built by hand into a group you can mail.

Being on a list does not mean somebody may be emailed, and this condition does not change that. A list organizes; consent decides what may be sent, and every send checks it again for every person. If you want the people on a list who have also agreed to marketing email, say both: anyone who is on the list Newsletter, whose email consent is subscribed.

Removing somebody from a list takes them out of the rule from that moment, because the rule reads who is on the list now — not who ever was.

If you delete a list, every rule that names it stops matching anybody, and the reverse rule starts matching everybody. So a rule saying is not on the list Wholesale stops excluding your wholesale customers the moment that list is gone. Because of that, a list cannot be deleted while a campaign that is armed and waiting to send has an audience that names it — you will be told which campaigns, and you can cancel or unschedule them first.

What people did with the email you sent: opened an email, clicked a link in an email, or was mailed and didn't open or click any email, within a window.

Read that third one carefully, because it is narrower than it sounds. It looks at your email and only at your email. Someone who visited your store yesterday, viewed six products and placed an order still matches it if they never opened a message — the condition never looks at any of that.

That is not a flaw in the condition; it is what the condition is for. But it means a rule built on it is a rule about your deliverability, not about whether a customer is still a customer. If you want the second thing, add an order condition beside it — placed an order at least 1 time in the last 365 days — and exclude those people, which is exactly what the built-in Lapsed 365d segment does.

Reached from the same menu entry: had a hard bounce, or never had a hard bounce, optionally within a window.

This one answers whether, not how many times, and the app says why underneath: hard-bounce history begins with the email you send through this app, and a window is measured from when the bounce was processed rather than from when the mail server gave up. A "bounced three times" condition would be a number the data cannot support, so it is not offered.

Consent is subscribed, unsubscribed, or never subscribed — for Email or Text messages.

Their own details: First name, Last name, Email, Phone, with is, is not, contains, does not contain, starts with, is set, is not set.

Anyone whose email contains gmail.com.

The same pulldown then lists your own profile properties — the answers your forms and imports collected, spelled the way your data spells them — so anyone whose skin type is sensitive is a rule you write here, with the same comparisons. The Profile properties page covers them, including why is not deliberately catches the people who never answered.

is not and does not contain both catch the people who never answered, for the same reason: anyone whose email does not contain @example.com is true of somebody with no email address at all, and leaving them out would be a rule reading one way and matching another. starts with is the other way round — it asks for something that is there, so a blank answer never matches it.

Where somebody is: is in or is not in a country, and — for the United States, Canada, Australia and the United Kingdom — one or more states or regions inside it. Countries without states in the app offer the country alone.

Anyone who is in New York, United States.

A profile's location comes from two places. Your store's customer records, where you have an address for somebody, and what the app can tell from their visits to your site, where you do not. A customer record always wins, because a visit only ever shows roughly where somebody was at the time.

"Is not in" keeps everyone you have never placed. Most stores have a great many profiles with no location at all — no order carrying an address, no visit while the app was watching — and a rule saying is not in California keeps every one of them. That is almost always what you meant, and the builder says so under the row so it cannot surprise you either way. If you want only people you know the location of, say the country as well.

There is no city rule. A profile shows its city where the store's records carry one, and a rule cannot ask about it: cities are typed a dozen ways, and a rule that quietly missed half of them would be worse than not offering it.

The same menu entry offers First seen: more than or less than N days ago.

It is called "first seen", not "added" or "customer since", and that is a deliberate honesty. It is when this app's record of the person began. After you import a store's people, your longest-standing customers are newly seen here — not newly acquired.

Whether you have vouched for somebody: is marked as a person or is not marked as a person. There is nothing else to fill in.

The mark is yours. Somebody on your team opened a profile, decided there was a real person behind it, and pressed This is a person — the Profiles page covers the button. Nothing arriving from your store sets it, and neither does an import.

The built-in Suspected bots segment uses it to keep the people you have vouched for out of the rule. In a rule of your own it reads either way: leave the marked out, or gather them up.

Beside the rule sits Who this catches — a number that updates as you edit, shown against the size of your store's confirmed base.

That base is your confirmed profiles: the ones with a verified identity. Profiles waiting to be confirmed are never counted and never emailed, which the verified identity page explains.

If a rule is too expensive to count while you type, the count says so and the rule still saves. If the count simply cannot be taken at that moment, it says that instead, and your rule is untouched either way.

Under the rule, What this rule says shows the whole thing back to you as prose. It is the same reading a segment's own page shows, so what you approve here is what you will read there.

Under the number is View these profiles. It opens a panel over the editor showing the people the rule catches as it stands on screen — including edits you have not saved — so the list and the number above it are always answers to the same question.

Each row is a person: their name, their email address, their consent, and when you last heard from them. Names link through to the profile. Anyone whose emails you have paused is shown here too, marked Paused beside their name — a pause is your own hold on sending, not a change to who the rule catches, so the count includes them and so does this list.

The panel shows the first 25 people and says so when there are more. It is a sample you read to check a rule, never the final audience: who receives a campaign is settled when you send it, and consent is checked again for every email you send.

Closing the panel puts you back in the editor with everything exactly as you left it. Nothing is saved, and nothing is lost.

If the rule is half-written — a condition still waiting for a value — the panel says which lines need finishing rather than showing a list it cannot stand behind. If the rule is simply too expensive to preview, it says that, and the rule still saves.

The event names and Shopify tags offered in the menus come from your own store, so a condition can never name something that does not exist there. If they take too long to read, the builder says so and keeps working — every field the menu would have filled in also accepts a typed value.

The page draws no Save button of its own. When you have unsaved changes, a save bar appears — Shopify's own contextual save bar inside the admin, and the app's equivalent when you are working outside it. Save commits; Discard puts the rule back exactly as it was when you opened it.

Editing a segment changes who it catches from that moment on. It does not change anything already sent.