---
title: "Tag the BFCM Cohort Before It Arrives: What a Date Filter Cannot Rebuild"
slug: "tag-bfcm-cohort-shopify-flow"
url: "https://joy.so/blog/tag-bfcm-cohort-shopify-flow/"
kind: "post"
author: "Thomas Nguyen"
author_url: "https://joy.so/author/thomas/"
published_at: "2026-11-02T09:00:00.000+00:00"
updated_at: "2026-11-02T09:00:00.000+00:00"
description: "Shopify can rebuild who bought during the sale at any time. It cannot rebuild who was already a member that day. A tag can."
category: "How-to Guide"
tags: ["How-to Guide", "Shopify apps", "BFCM & seasonal", "Customer retention", "Loyalty Program"]
reading_time: 7
feature_image: "https://cdn-web.joy.so/cdn/image/2026/10/row26-tag-cohort-97beba.webp"
---

# Tag the BFCM Cohort Before It Arrives: What a Date Filter Cannot Rebuild

Start with the argument against this page. [Shopify's customer segment filters](https://help.shopify.com/en/manual/customers/customer-segmentation/reference-guide/shopify-segments) can rebuild the list of customers who first bought during your sale whenever you ask. The segment filter is one line, **first_order_date BETWEEN 2026-11-26 AND 2026-11-30**, and it works as well in March as it does the Tuesday after Cyber Monday.

So nobody needs a tag to know who bought. The case for tagging is narrower than it is usually made, and it rests on one property of loyalty data that is easy to miss until January.

**Key Takeaways**

- Shopify can rebuild the list of customers whose first order fell inside the sale at any later date, with one segment filter. No tag is needed for that.
- What a date cannot rebuild is the customer's state on the day: whether she was already a member or joined because of the sale, and whether she spent points.
- Loyalty tags describe the present. Joy's Re-sync recalculates every customer from scratch, so by January a member tag no longer says when she became one.
- Three small Shopify Flow workflows, switched on for the weekend, write that state down as tags. Flow is a free app on Basic, Grow, Advanced and Plus.
- A tag changes nothing a shopper sees, which makes this one of the few changes that is safe to make inside a code freeze.

**Published 2 November 2026.** Platform behaviour was read from Shopify's, Joy's and Smile's own documentation on 13 October 2026 and is linked. The three workflows below are sketches and were not run on a live store for this page; preview them on yours before the weekend.

## What a date filter can rebuild

[Shopify's segment reference guide](https://help.shopify.com/en/manual/customers/customer-segmentation/reference-guide/shopify-segments) lists the filters that answer the obvious questions after the fact. **first_order_date** includes "customers who placed their first order on the date specified", with a between-dates operator. **orders_placed** includes "customers who placed orders or spent a certain amount during a specified date range". A third, products purchased, takes a date and a product tag.

Those cover new buyers during the sale, everyone who bought during the sale, and buyers of a particular doorbuster. One caveat from the same page: "Date values are based on entire days and depend on which time zone your store is in", so a sale that opens at 6pm on Wednesday for VIPs needs Wednesday in the range.

## What it cannot

A date tells you when an order happened. It does not tell you what the customer was when she placed it, and loyalty data is poor at keeping that.

[Joy writes three kinds of customer tag](https://joy.so/updates/auto-tag-engaged-loyalty-members/) on all plans, listed in [its guide to auto-tagging customers](https://help.joy.so/settings/additional-features/auto-tag-engaged-members/): member, active redeemer and engaged member. They are useful and they are current. The page is explicit about the mechanism: "**Re-sync recalculates every customer from scratch — not incremental**". Joy checks each customer's present status and applies the tag that matches it.

Follow one customer through that. She checks out as a guest on Black Friday, joins the program on 9 December after a reminder email, and redeems on 4 January. On 5 January her tags say member and redeemer. Sitting beside her in the same segment is a customer who has been a member for three years and redeemed twice before the sale began. The tags cannot tell them apart, and those two customers are the whole question you will be trying to answer: did the weekend bring in people who then joined, or did it serve the members you already had?

![Timeline of one customer who checks out as a guest on Black Friday, joins in December and redeems in January](https://cdn-web.joy.so/cdn/image/2026/10/fig-row26-customer-bf7aac.webp)

_By January her tags match those of a long-standing member._

![Table of five questions about the BFCM cohort, showing which a date filter can answer later and which need a tag written on the day](https://cdn-web.joy.so/cdn/image/2026/10/fig-row26-rebuild-b8580a.webp)

_What can wait until January, and what cannot._

The order count has the same weakness. "New customer" is true of her on Friday and false from the moment she orders again, so a filter on number of orders gives a different answer every week you run it.

## Three tags worth writing

Each of these is a short Shopify Flow workflow: a trigger, at most one condition, and an action that adds a tag to the customer. Joy exposes the two loyalty triggers to Flow [on its Essential plan and above](https://joy.so/pricing/), as [Joy's Shopify Flow reference page](https://help.joy.so/integrations/integrate-with-shopify-flow/shopify-flow-reference/) confirms.

| Tag | Trigger | Condition | What it preserves |
| --- | --- | --- | --- |
| **bfcm-2026-new** or **bfcm-2026-returning** | Order created (Shopify) | The customer's order count at that moment | Who was new on the day, before a second order changes the count |
| **joined-bfcm-2026** | Customer joined loyalty program (Joy) | None: the workflow is only switched on for the weekend | Who became a member because of the sale |
| **redeemed-bfcm-2026** | Redeem points (Joy) | None | Who spent points during the sale, as distinct from ever |

The second trigger carries a field that makes a dated version possible. [Joy's reference for its Flow triggers and actions](https://help.joy.so/integrations/integrate-with-shopify-flow/shopify-flow-reference/) lists **Joined at** among the data passed by "Customer joined loyalty program", described as the timestamp the customer joined, and names auto-tagging the customer in Shopify as a common use.

For reward use there is also a route that needs no workflow. [Joy's order tag synchronization](https://help.joy.so/settings/order/add-tags-for-orders-and-customers/) labels orders placed with a Joy coupon, and the customers who used one, with a tag that defaults to **Joy-assisted** and is available on all plans. Combined with a date range on the order, that answers the redemption question for orders. The workflow version puts the answer on the customer.

Other loyalty apps connect to Flow differently, so check what yours offers as a trigger. [Smile's guide to Shopify Flow](https://help.smile.io/en/articles/shopify-flow-and-smile) documents two Flow actions, Send Smile activity and Adjust points balance, both of which are about awarding or changing points. An action cannot start a workflow; only a trigger can.

## Why a tag, when a segment exists

A Shopify segment stays in Shopify. A tag goes wherever customer data goes. [Joy's description of its own tags](https://help.joy.so/settings/additional-features/auto-tag-engaged-members/) applies to any tag: they "sync instantly to Klaviyo, Shopify Flow, Shopify Analytics, and any tool connected to your Shopify store". The December email that should go to sale-acquired members only, and the report that [compares their second-order rate with everyone else's](https://joy.so/blog/repeat-customer/), are both built outside the segment editor.

Tags also feed back into segments. [Shopify's own example of the tag filter](https://help.shopify.com/en/manual/customers/customer-segmentation/reference-guide/shopify-segments) is **customer_tags CONTAINS 'GoldStatus'**, so a tag written by Flow in November is a segment in one line in January.

## Why this fits inside a freeze

By the middle of November nobody sensible is changing the theme, the checkout or the discount structure. A workflow that writes a tag touches none of them. It adds a word to a customer record in the admin.

It can also be rehearsed. [Shopify's Winter '26 Edition](https://www.shopify.com/editions/winter2026) added **Preview workflow results in Flow**, described as a way to "Test workflows in the Shopify Flow app before going live and adjust logic without impacting real store data". Use it. A condition that reads the customer at the instant an order is created is exactly the kind that behaves differently from how it reads, and a first order is the case to preview.

What the tag will not do is change who comes back. That is decided by the product, the delivery and what you send in December, and a well-labelled cohort that nobody acts on is only a tidier list.

## When to skip it

If the only question you will ask in January is who bought for the first time during the sale, you need none of this. Build the segment when you want it. The same is true if your program has no members to speak of yet: there is no prior state to preserve.

## Setting it up

- Install Shopify Flow if it is not installed, and switch on the Flow integration in your loyalty app.
- Build the three workflows and leave them off. Name the tags with the year.
- Preview each against a real past order and a real past member.
- Switch them on before the first early-access order.
- Switch the join and redeem workflows off when the sale ends, so the tags keep meaning what they say.

If you have not used Joy's Flow connection before, the background is in [custom loyalty programs with Shopify Flow](https://joy.so/updates/shopify-flow-custom-loyalty-programs/). What to do with the cohort once it is labelled starts with our [three-stage plan for earning back BFCM ad costs](https://joy.so/blog/bfcm-customer-retention-strategy/), and the rest of the pre-weekend sequence is in the [Black Friday checklist](https://joy.so/blog/black-friday-checklist/).

## Two calendar entries

The segment filter at the top of this page will still be there in March. The customer who was a guest on Friday will not be. Put two entries in the calendar now: Wednesday 25 November to switch the workflows on, and Tuesday 1 December to switch two of them off.

## FAQs

### Can I find BFCM customers in Shopify without tagging them?

Yes, if the question is who bought. [A Shopify customer segment can filter on first order date](https://help.shopify.com/en/manual/customers/customer-segmentation/reference-guide/shopify-segments) between two dates, or on orders placed in a date range. The segment can be created long after the sale.

### Then why tag at all?

Because some facts exist only on the day. A tag written when the order is created records what the customer was at that moment. In January the same customer may have reordered, joined the program or redeemed, and the current data no longer separates her from someone who had done those things before the sale.

### Is Shopify Flow available on my plan?

[Shopify's documentation for Flow](https://help.shopify.com/en/manual/shopify-flow) lists it as a free app available on the Basic, Grow, Advanced and Plus plans. [Joy's Flow triggers and actions](https://help.joy.so/integrations/integrate-with-shopify-flow/shopify-flow-reference/) need its Essential plan or above.

### Will customers see the tag?

No. Customer tags live in the Shopify admin. [Joy's page on its own order tags](https://help.joy.so/settings/order/add-tags-for-orders-and-customers/) makes the same point: they "are only visible in your Shopify admin interface and are not displayed to customers".

### Can I add the tags after the weekend?

The first one, yes: build the segment on first order date and tag its customers in bulk. The other two only partly. A join date and a redemption date exist in the loyalty app's records, but turning them into Shopify tags afterwards is an export and an import, where a workflow would have done it as it happened.

### How should the tags be named?

Put the year in the name. A tag called bfcm will be ambiguous by next November. Shopify notes that tags are not case sensitive, so capitals do not distinguish one tag from another.
