This is the complete list of contact filters, grouped by the five categories in the Add filter panel, with the operators each field offers. For how operators and filter groups work, see How filters work in Spoks. For how filters behave inside flows, see Using filters in flows.
What you can filter by
Contact filters are grouped into five categories. In plain terms:
Contact Details — filter by name, email address, phone number, tags, forms a contact has submitted, when they were created or added, last active date, signup source (Direct, List import, Shopify, Webhook), referrer, and lead score.
Location & Address — filter by country, state, province or region, city, postal or ZIP code, and street address. Use Country to target contacts by geography — for example, to build region-specific audiences. Country comes from the customer's address in Shopify, so a contact who hasn't given an address yet has no country. To target shoppers by market or language, filter on Language instead, which Shopify sets for most customers. Contacts created in Spoks or through the API may have neither.
Shopify activity & orders — filter by products purchased, total number of orders, total amount spent, last purchase amount, the dates of first purchase, last purchase, last checkout, and last cart update, and discount or coupon usage. Ordering itself is a behavioral filter: see Placed Order under Engagement & Activity below, which counts orders over a timeframe and can be narrowed by product, collection or order value. Use these for repeat customers, high-value or VIP customers, recent buyers, and product-specific audiences.
Communication consents — filter by email marketing consent and SMS marketing consent (subscribed, not subscribed, or unsubscribed) for each channel.
Engagement & Activity — filter by whether a contact received, opened, or clicked your emails and SMS, whether they viewed products or collections, and whether they placed an order. These are behavioral filters, counted over a timeframe.
The tables below list every field with the operators it offers.
To leave one segment's contacts out, add that segment's own conditions with the opposite operator, for example Tags doesn't contain.
In a flow's contacts filter, date fields such as Created and Last Purchase also offer is after flow started and is before flow started. These compare the date with the moment the contact entered the flow, instead of a fixed date. The Abandoned Checkout template uses Last Purchase is before flow started, so a shopper who completes the purchase stops matching and leaves the flow before the reminder. A contact with no date counts as before any date, so a shopper who has never purchased also matches Last Purchase is before flow started. The two operators are not offered when you filter the Contacts list or build a segment.
Contact Details
Field | Operators |
Name | contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set |
Phone | contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set |
contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set | |
Tags (select from your tags) | contains, doesn't contain, is not set, is set |
Submitted Forms (select from your forms) | contains, doesn't contain, is not set, is set |
Created | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Last active | is after, is before, is between, is between dates, more than, less than, is not set, is set |
System source (Direct, List import, Shopify, Webhook) | contains, doesn't contain, is not set, is set |
Referrer | contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set |
Last conversion | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Last note | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Score | equals, does not equal, is greater than, is less than, is greater than or equal to, is less than or equal to |
Contacts who sign up through a Spoks form have System source Direct, the same as anything else created inside Spoks. System source only shows the broad route a contact came in by, so to find the contacts from a specific form, filter on Submitted Forms instead.
Location & Address
Field | Operators |
Country (select from the list) | equals, does not equal, is not set, is set |
State / Region (select from the list) | equals, does not equal, is not set, is set |
City | contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set |
Postal code | contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set |
Address | contains, doesn't contain, equals, does not equal, starts with, ends with, is not set, is set |
Shopify activity & orders
Field | Operators |
Products purchased (select products; optional "All collections" scope) | contains, doesn't contain, is not set, is set |
Last purchase | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Total orders | equals, does not equal, is greater than, is less than, is greater than or equal to, is less than or equal to |
First purchase | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Last checkout | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Last cart update | is after, is before, is between, is between dates, more than, less than, is not set, is set |
Total spent | equals, does not equal, is greater than, is less than, is greater than or equal to, is less than or equal to |
Last purchase amount | equals, does not equal, is greater than, is less than, is greater than or equal to, is less than or equal to |
Discount used | Behavioral — see Engagement & Activity below for the frequency and timeframe options; Where sub-fields: Discount name, Discount code |
Communication consents
Field | Operators |
Email marketing consent (Subscribed, Not subscribed, Unsubscribed) | equals, does not equal, is not set, is set |
SMS marketing consent (Subscribed, Not subscribed, Unsubscribed) | equals, does not equal, is not set, is set |
Engagement & Activity
Each field here is a behavioral filter, built from three parts: a frequency (at least once, equals, does not equal, is greater than, is less than, is at least, is at most, with a count), a timeframe (after, before, between, between dates, more than, less than, over all time), and optional Where sub-conditions. The Where sub-fields available per event:
Field | Where sub-fields |
Received Email | Email Subject |
Opened email | Email Subject |
Clicked email | Email Subject, Host, URL |
Received SMS | SMS text |
Clicked SMS | SMS text, Host, URL |
Viewed Products | Product, Product Name, Category, Product Price, Product Tags, Collection, Collection Name |
Viewed Collections | Collection, Collection Name |
Placed Order | Product, Product Title, Product Tags, Product Type, Product Vendor, Product Price, Order Value, Collection, Collection Name |
Discount used (in Shopify activity & orders) uses the same frequency and timeframe options, with Where sub-fields Discount name and Discount code.
Resending a campaign to people who didn't open it. Sending the same campaign again to people who ignored it can hurt your domain's reputation: they're the contacts most likely to mark a repeat as spam, and inbox providers notice. That's why Spoks has no one-click resend. If you decide to do it, build a segment that only includes people who engage with your emails:
Received Email · at least once · over all time, Where Email Subject contains your campaign's subject.
Opened Email · equals · 0 · over all time, with the same Where condition.
Opened Email · at least once · less than 90 days ago, so only recently engaged contacts are included. You can use Clicked Email instead for a stricter list.
Give it at least two days after the first send, and use a new subject line.
To get these contacts out of Spoks as a file, see How do I export my contacts?