Audience
Segments
A segment is a targeted group of contacts. Instead of blasting everyone, you send to the people who matter: recent buyers, lapsed customers, a city, or a group you built in Shopify. Segments are available as the audience for any campaign.
On this page25 sections
- Types of segment
- When the members are calculated
- Build a segment with AI
- The Add filter menu
- Filter by signup form, and keep only the first N
- Filter by subscription date
- Date added and unsubscription date
- Filter by birthday or anniversary
- Filter by address: city, postcode, country
- Filter by what they did with your emails
- Filter by email deliverability
- Filter by any property, and by tag
- Filter by email address, name and phone number
- Filter by source: Shopify, Sendcore or both
- Filter by what they did in the store: views, carts, order stages
- Filter by total spent and average order value
- Filter by discount code
- Lifecycle stage
- Act on the contacts in a segment
- Rename a segment or change its rules
- Using a segment
Types of segment#
Filter segment (dynamic)#
Built from rules: purchase history, subscription status, tags, location, behaviour, dates, spend. Membership recalculates automatically, so “bought in the last 30 days” always reflects today.
- Go to Segments → Create segment. Describe the audience in the Generate a custom segment with AI box, pick one of the ready-made templates under Choose a pre-built segment, or click Create from scratch.
- Add one or more rules with Add filter (combine them with and / or to narrow or widen the audience). The menu is grouped and searchable: see The Add filter menu.
- Name it and save: Sendcore calculates its members in the background, usually within seconds (see When the members are calculated).
Shopify segment (linked)#
Already built segments in Shopify (Customers → Segments)? Import them. Sendcore mirrors the Shopify segment and keeps members in sync, so you can email a Shopify-defined audience without rebuilding rules.
- On the Segments page choose New segment → From Shopify.
- Pick any segment defined in your Shopify admin and import it.
Manual segment (static)#
A fixed list of contacts you choose: handy for one-off sends or an imported list that shouldn't change.
When the members are calculated#
A filter or Shopify segment holds the contacts its rules select, and Sendcore calculates them in the background: right after you save the segment or change its rules, then again on its own, about every 15 minutes for a filter segment and about every 6 hours for a Shopify segment, which reads its members from your Shopify store. A manual segment has nothing to calculate: its members are the addresses in it.
While the members are being calculated, Audience → Segments shows Calculating… in the Emails column, and the segment's page says whether the calculation is queued or running, and for how long. It usually takes a few seconds, a few minutes for segments with many contacts. Both pages update on their own when it's done: there's no need to reload them, and you can close them, the calculation carries on.
- Sending in the meantime: a filter segment can go in a campaign straight away, because when the campaign sends, Sendcore applies the rules to your contacts as they are then. A Shopify segment has no members until its first calculation is done: wait for it before you send to it.
- Changing the rules: as soon as you save, the members of the old rules are set aside and the segment shows Calculating… again until the new ones are ready. Renaming a segment changes nothing.
- A segment that already has members keeps showing them while they are recalculated: its page says Recalculating… next to the time of the last calculation.
If the calculation fails#
When a calculation fails, the list shows Calculation failed and the segment's page says when Sendcore tries again on its own: a minute later, then after 2, 4, 8 minutes and so on, at most an hour apart. Click Try again now to retry straight away (Owner, Admin, Manager and Partner roles), and open Technical details for the error, to pass on to support if it keeps happening. A segment that already had members keeps showing them, with a note that they are from the previous calculation.
Shopify segments
Build a segment with AI#
At the top of Create segment the Generate a custom segment with AI box takes a sentence and turns it into filter rules: “contacts who've been subscribed for over 6 months but haven't purchased anything in the last 3 months” becomes a subscription-date rule and a “have not placed an order” rule, named and ready to review. Sendcore AI only proposes: the rules open in the same editor every segment is built with, and nothing exists until you save.
- Go to Audience → Segments → Create segment.
- In Generate a custom segment with AI describe the audience in your own words, in Italian or English, or click one of the example chips. Press Enter or click Generate segment.
- The rules appear below with a suggested name and a one-line note on how the request was read. Adjust anything, add or remove rules, rename.
- Click Save & show contacts. Membership is computed like for any filter segment.
- It works with what your account actually holds: your tags, your custom properties, the campaigns you sent. A tag you never used, or a store event on an account with no store connected, is not invented; the note says what could not be expressed.
- It adds Subscription status is Subscribed as the first rule when the audience is meant to be emailed, and leaves it out when you describe unsubscribed or bounced contacts.
- Nothing is saved by the AI. Click Discard to drop a draft you do not want.
- The same capability is available to the AI assistant in the chat bubble and to external agents over MCP (create_filter_segment), which can also preview how many contacts a rule set matches before creating it. An existing filter segment is updated in place with update_filter_segment, so campaigns that already target it keep the same id. rename_segment changes only the name. delete_segment removes the segment and asks you first; the contacts stay.
Plans
The Add filter menu#
Every rule of a filter segment is added from Add filter. The menu opens with a search box: type a word (“city”, “order”, “birthday”) to find the filter, or browse the groups:
- Recommended: Subscription status, Tag, Signup form and Keep only the first N.
- Dates & anniversaries: Birthday / anniversary, Date added, Subscription date, Unsubscription date.
- Contact properties: Email address, First name, Last name, Phone number, Gender, Custom property, Source, Customer lifecycle stage, Email deliverability.
- Computed traits: Total spent, Average order value and Loyalty points.
- Location: Address, City, State, Postal/Zip code, Country.
- Engagement: Opened email, Clicked email, Visited store, Viewed page.
- Orders: Placed order, Paid for order, Order fulfilled, Order cancelled, Refunded order, Started checkout, Used discount code.
- Products: Added product to cart, Ordered product, Viewed product.
Each entry opens a rule already set up for the common case (“at least 1 time in the last 30 days”, “birthday in the next 7 days”), which you then adjust. Rules are read from top to bottom: each row narrows (and) or widens (or) what the rows above it selected, without precedence. A have not rule can only narrow, so it always reads and.
Filter by signup form, and keep only the first N#
The Signup form filter picks the contacts who submitted the form you choose (or any form), at any time or in a period… with the usual date operators. It reads every submission your forms recorded, from the day forms shipped, so it also covers people who signed up before the rule existed. have not turns it around: everyone who never came through that form.
- Go to Audience → Segments → Create segment and click Create from scratch.
- Click Add filter and, under Recommended, choose Subscription status (it stays Subscribed).
- Click Add filter again and choose Signup form; pick the form in the list.
- To reward only the earliest subscribers, click Add filter once more and choose Keep only the first N: the row reads then keep only the first 100 by form submission date. Type your number, 150 say.
- Click Save & show contacts.
- Keep only the first N always sits last: it orders what the rows above it selected by each contact's earliest submission of the segment's form (any form when the segment names none) and keeps the first N, or the last N with last. A contact who never submitted a form has no place in that order and is left out.
- Ordered by the earliest date, a “first 150” segment does not change when the 151st person signs up: the first 150 stay the first 150. It does change if one of them unsubscribes and the rules above exclude them; the 151st then moves in.
- A submission is not a subscription. On a double opt-in form the entry is recorded when the person submits, before they confirm: that is why the recipe keeps Subscription status is Subscribed above the form rule, so the segment holds the first 150 who confirmed and can be emailed.
- Someone who fills in the same form twice counts once, from their first submission.
Before this filter existed
Filter by subscription date#
The Subscription date filter picks contacts by the day their current marketing subscription began: everyone who subscribed today, since the start of a promotion, before a given date, or between two dates. It reads the same date the contact's page shows, whether the contact came from a signup form, an import, the contacts API or your store.
- Go to Audience → Segments → Create segment and click Create from scratch.
- Click Add filter and choose Subscription date.
- Choose how to compare it: on (one whole day), since (from that day on, that day included), before (up to the day before), between (both days included) or in the last N days, weeks or months. Then pick the dates.
- Click Save & show contacts. Membership refreshes automatically, so a segment like “subscribed today” is different every day.
- It only ever matches contacts who are subscribed right now. Someone who subscribed on that day and later unsubscribed is not in it.
- Combine it with other rules using and: for example Subscription status is Subscribed, and Subscription date is on a given day, and Placed order at least once.
- Days run from midnight to midnight in UTC, one or two hours behind Italy: a subscription just after midnight local time counts on the previous day.
- Contacts added before June 2026 that carry no subscription date count from the day they were added to Sendcore.
Shopify stores
Date added and unsubscription date#
Two sister filters read other dates of the contact with the same operators (on, since, before, between, in the last):
- Date added is the day the contact entered Sendcore, whatever their consent: the rows of last week's import, the leads a form collected this month, the contacts the API or the CRM created. Combine it with Tag or Source to find one batch.
- Unsubscription date is the day the current opt-out of a contact who is not subscribed right now was recorded: an unsubscribe link, a bulk unsubscribe, a bounce, or the opt-out Shopify reports for a store customer. “Unsubscribed in the last 30 days” is the list to look at when a campaign went wrong.
Shopify stores
Filter by birthday or anniversary#
The Birthday / anniversary filter reads the contact's Birthday (the same field the birthday automation and the CSV import use) or any custom property that holds a date, such as the one your anniversary automation is set on. Pick the field, then:
- anniversary is in the next N days: the next occurrence of the day and month, any year, falls within the next N days, today included. “Birthday in the next 7 days” is the audience of a weekly birthday campaign; the Celebrating birthday template opens on exactly that.
- is with a date operator compares the date itself: before 1990-01-01 for the over-35s, between two dates for an age band.
- is set / is not set: who gave you the date, and who you could ask for it with a form.
Filter by address: city, postcode, country#
The Location filters pick contacts by one of their address fields: Address, City, State, Postal/Zip code or Country. Each field can be compared to one or more values, or simply tested for presence, so you can write to everyone in a city, to the postcodes a courier serves, or to the people who never gave you their address, to ask for it.
- Go to Audience → Segments → Create segment and click Create from scratch.
- Click Add filter and, under Location, choose the field (you can switch it in the row afterwards).
- Choose how to compare it: is or is not one of the values you type (press Enter or a comma after each; “Torino” and “torino” are the same city), or is set / is not set to ask whether the contact has that field at all.
- Add other rules with and if you need them, then click Save & show contacts.
The fields are the ones shown on each contact's page under Customer details. They are filled by whatever brought the contact in: a signup form that asked for the address, a CSV import with address columns, the contacts API, the Omnisend migrator. One filter covers all of them.
- is not only matches contacts whose value is known and different: someone with no city on file is not “not in Torino”. To reach them, use is not set.
- is not set looks at your own contacts: the people Sendcore holds a record for and has no value for that field.
- Combine with Subscription status is Subscribed to write only to people who can be emailed: a location rule alone describes contacts, not consent.
Filter by what they did with your emails#
Opened email and Clicked email (under Engagement) count the contact's opens or clicks in the window you set, across every message you sent. Next to the action, pick a campaign to count only that one: “clicked the spring sale at least once in the last 30 days” is the segment a follow-up wants, and have not with the same campaign is the one a resend wants. any campaign keeps the old, account-wide reading. Bot activity never counts.
Filter by email deliverability#
The Email deliverability filter reads the suppression list: the addresses Sendcore stopped sending to, and why. Choose is or is not and tick one or more reasons: Delivery failed (a hard bounce or a permanent send failure), Marked as spam (a complaint), Unsubscribed via link, Unsubscribed manually (a bulk unsubscribe from Contacts). “Delivery failed” is the list to review and delete after an import; “Marked as spam” is the one never to write to again.
Filter by any property, and by tag#
Custom property does for every custom property what the location filters do for the address: pick a property your contacts carry (a form's size question, an imported column, what an integration or the Omnisend migration wrote), then is, is not or contains one or more values, or is set / is not set. Values compare trimmed and case-insensitively; contains matches part of a free-text value. The list of properties is the one your audience actually carries; a property whose key has spaces or accents cannot be filtered on. Gender in the menu is the same rule opened on the gender property.
Tag picks contacts that has any of these tags or has none of these tags, whatever the casing of the tag. A workflow's Tag step and the bulk tag action write the same tags, so a segment can follow what your automations mark.
Filter by email address, name and phone number#
Under Contact properties, Email address, First name, Last name and Phone number apply the same verbs to the contact record itself. Email address contains @gmail.com picks one mailbox provider (or is not your own domain excludes staff); Phone number is set is everyone you could reach by SMS once that channel is on; First name is not set is who to greet without a name, or to ask for one with a form.
Shopify stores
Filter by source: Shopify, Sendcore or both#
The Source filter is the Source column of the Contacts list as a rule, with the same three words: Shopify for a customer of the connected store that Sendcore holds no record of its own for, Sendcore for a contact Sendcore holds (a signup form, an import, the contacts API, the CRM, a WooCommerce sync) who is not a store customer, Both for a store customer Sendcore also holds a record for. Choose is or is not and tick one or more.
- Source is Sendcore, and Tag has the import's tag, is that import and nothing else.
- Source is Shopify, and Subscription status is Subscribed, is the store's subscribers who never came through a form or an import.
- Without a Shopify store every contact is a Sendcore contact: WooCommerce customers are synced into Sendcore, so they count as Sendcore.
Your own contacts only
Shopify stores
Filter by what they did in the store: views, carts, order stages#
The Engagement, Orders and Products groups read the events your store sends Sendcore. Every rule counts events (at least / exactly N times) in a timeframe, and have not turns it around.
- Viewed product and Added product to cart can be narrowed to one product: type part of its name next to whose name contains (the picker suggests your catalogue). “Viewed the red jacket at least twice in the last 7 days, have not placed an order” is a product-abandonment audience you can email by hand.
- Viewed page can be narrowed to a path next to whose URL contains, for example
/collections/sale. - Visited store counts visits of recognised visitors; Started checkout reads the store's checkout events.
- Placed order is joined by the stages the store reports afterwards: Paid for order, Order fulfilled, Order cancelled, Refunded order. “Refunded order at least once in the last 90 days” is the audience to hold back from a hard sell; “Order fulfilled in the last 7 days” the one to ask for a review.
- Ordered product counts orders containing a product whose name matches.
What the store must send
Filter by total spent and average order value#
Under Computed traits, Total spent sums the contact's orders in the timeframe and Average order value divides that sum by their number of orders. Compare either with at least, at most or between two amounts, in the store currency. Only buyers with at least one order in the timeframe are considered, so “at most 50” means low-spending customers, not people who never bought.
Loyalty points compares the contact's balance in the loyalty programme with a threshold: at least 500 for the customers close to a reward, at most 99 or between 0 and 49 for those who have barely started. The balance is a state, not an event, so there is no timeframe; a contact who never earned a point has 0 and is matched by a rule that admits 0.
The High-value subscribers, Recent high-value buyers and High-potential buyers templates open on a round amount you adjust to your own price range.
Filter by discount code#
The Used discount code filter picks contacts who placed an order that used a given code (for example WELCOME10). It reads the discount codes on the order events Sendcore received from your store, not the unique codes the email Discount block mints at send time.
- Go to Audience → Segments → Create segment and click Create from scratch.
- Click Add filter and, under Orders, choose Used discount code. The rule reads used the discount code.
- Type the code and, if you want, a timeframe like the other purchase filters (in the last, on, before, since, between).
- Click Save & show contacts.
What it does not match
Lifecycle stage#
The Customer lifecycle stage filter groups your customers by how long ago they last ordered: Recent customer (last order within 30 days), Active customer (30 to 90 days), Lapsing customer (90 to 365 days), Lapsed customer (more than 365 days) and Lead (never purchased). Choose is or is not and tick one or more stages: “is Lapsing or Lapsed” is a win-back audience in one row. They are the same stages Customer breakdown counts and each contact's page shows, computed by the same rule, so the segment holds exactly the people the report counted.
Five ready-made templates, one per stage (Recent customers, Active customers, Lapsing customers, Lapsed customers, Never purchased), open the editor on this filter. Find them under Audience → Segments → Create segment or with Create segment next to a stage on Customer breakdown; adjust if you like, then Save & show contacts. Like every filter segment they refresh on their own. A campaign sent to one still reaches its subscribed members only.
Act on the contacts in a segment#
Open a segment from Audience → Segments and its member list works like the Contacts list: tick the rows you want, or the box in the header to tick every row on screen, then open Actions. When the segment has more members than the page shows, Select all N contacts extends the selection to the whole segment, and the action reaches every member, not only the rows on screen.
- Convert to subscribed: mark the selected non-subscribed contacts as subscribed (you confirm you have permission).
- Add a tag: apply one or more tags to the selection (see Tags), for example to keep track of who was in the segment on a given day.
- Unsubscribe: opt the selected contacts out of your emails.
- Delete contacts: permanently remove the selected contacts from Sendcore (you confirm first).
The contacts change, not the segment
Rename a segment or change its rules#
Open the segment from Audience → Segments. Its name is the title at the top of the page: point at it and click the pencil next to it, type the new name and press Enter (Esc cancels). It works for every kind of segment, filter, Shopify or manual, and changes only the name: members, rules and the campaigns using the segment stay as they are.
The rules of a filter segment are listed under the title. Change them, add or remove rows, then click Save changes: the members are recalculated for the new rules (see When the members are calculated). Saving the rules never changes the name, and renaming never changes the rules.
Using a segment#
When you create a campaign, pick a segment as the recipients. It sends only to the subscribed contacts in that segment. Each segment's size is shown on the Segments list.