A free Patreon follower upgrades to paid on a Tuesday afternoon. By 3:01 PM their first thank-you email is on its way. Three days later, the second. Then a fourth, a seventh, a twelfth, a seventeenth. You wrote the emails once, in your own voice, and from that moment forward they fire on their own — every new upgrader, every time.
That is the free_to_paid sequence (Free → Paid), wired end to end. This
post walks the exact Shopify Flow that makes it work — one trigger, four
checkpoints, five sends, 17 days. Copy the chart, paste the values, ship the
sequence.
Before you start
You need three things, and only three:
- A Shopify store with the free Shopify Flow app installed (Settings → Apps → search "Shopify Flow").
- Shopify Email (or any marketing tool that exposes a "marketing
activity" Shopify Flow can call). Five activities — one per email — saved
as drafts before you start. Name them clearly:
Free → Paid · 01,… · 02, …… · 05. - FanConvert connected to your Patreon and your Shopify store. That is
the small piece of software that listens to every Patreon membership
moment and marks the matching Shopify customer with the sequence label
fanconvert:free_to_paidthe second the upgrade happens.
If you have all three, this is a 20-minute job — five for the trigger, fifteen for the four follow-up checkpoints.
The chart, in one picture
Here is the Shopify Flow you are about to build. One trigger up top, the sequence-label check repeated at every stage so a patron who downgrades or churns mid-sequence falls out cleanly, and five sends spaced over 17 days.
Here is the cadence as a table, since most of the actual setup work is pasting these values into the Shopify Flow UI:
| Stage | Action | Wait before this stage | Day in sequence |
|---|---|---|---|
| 1 | Send Free → Paid · 01 | — | Day 0 |
| 2 | Send Free → Paid · 02 | 3 days | Day 3 |
| 3 | Send Free → Paid · 03 | 4 days | Day 7 |
| 4 | Send Free → Paid · 04 | 5 days | Day 12 |
| 5 | Send Free → Paid · 05 | 5 days | Day 17 |
Build it in seven steps
1. Create the workflow
Shopify admin → Apps → Flow → Create workflow. Name it
Free → Paid · Patreon so a future-you, scrolling a list of 12 workflows,
knows what it does without opening it.
2. Pick the trigger
Click Select a trigger and pick Customer tags added (under the
Shopify Admin category). This is the trigger Shopify fires the second
FanConvert marks a customer with the fanconvert:free_to_paid label.
There is nothing to configure on the trigger itself.
3. Add the first condition
Click + → Condition. In the condition builder:
- Field:
customer.tags - Operator: any item
- Inner field:
tags_item - Inner operator:
is equal to - Inner value:
fanconvert:free_to_paid
In plain English: "fire the next step only if the customer has the
fanconvert:free_to_paid label on them right now." This is the
gate. Every checkpoint in this workflow uses the same condition — that is
why a patron who downgrades or churns silently drops out of the sequence the
moment FanConvert lifts the label.
4. Add the first send
On the condition's true branch, click + → Action → Send marketing
activity. Pick Free → Paid · 01 from the dropdown of saved activities.
Leave customer_id at its default (customer.id). That is the first
email.
5. Add the first wait
Click + → Wait under the action you just added. Set duration to
3 days. This is the only place in the workflow where you change the
number — the other three waits will be 4, 5, and 5 days.
6. Repeat the condition / send / wait three more times
This is the pattern, four times in a row, with one tweak per cycle:
Condition → Action (Send Free → Paid · N) → Wait
| Cycle | Send | Wait after |
|---|---|---|
| 1 | Free → Paid · 02 | 4 days |
| 2 | Free → Paid · 03 | 5 days |
| 3 | Free → Paid · 04 | 5 days |
The condition itself never changes. It is always the same tags_item == "fanconvert:free_to_paid" check. The point of repeating it is
correctness, not variety — every checkpoint asks "is this patron still a
paid upgrader from a free follow?" and if the answer ever flips to no, the
sequence stops cleanly with no leftover sends.
7. Add the final condition and the last send
After the last Wait 5 days, add one more condition (same
tags_item == "fanconvert:free_to_paid" check) and on its true
branch, add the final Send marketing activity with Free → Paid · 05.
There is no wait after the last send — the sequence ends there.
Save the workflow. Toggle Active at the top.
You are done.
What "done" looks like
Open your Shopify customers list, pick a test customer (yourself, on a
second email account), and apply the label fanconvert:free_to_paid
manually — just type it into their tags field and save.
Within ~30 seconds the first email should land in your inbox. In the Shopify Flow run log (Apps → Flow → your workflow → Runs) you should see the trigger fire, the first condition return true, and the first send queue up.
Now remove the label from that test customer. Wait a few minutes, then check the run log again: the next stage's condition should return false and the run should end. That is the safety check working — a patron who falls out of the upgrader cohort gets no further emails.
Three things that bite people
The label is case-sensitive and exact. Shopify Flow's is equal to
does a strict string match. fanconvert:Free_To_Paid,
fanconvert: free_to_paid (notice the space), and
fanconvert:free-to-paid (notice the hyphen) all silently fail.
FanConvert always writes the exact form fanconvert:free_to_paid —
all lowercase, underscores, no spaces. Match that in your condition or
nothing fires.
Re-check the label at every stage, not just the first one. A common shortcut is to put a single condition at the top of the workflow and then chain five sends and four waits below it. That looks tidy on the canvas and is wrong. A patron who upgrades on Tuesday and cancels on Friday will otherwise receive Emails 2 through 5 over the following two weeks — three goodbye-quality sends to a customer who has already left. The four mid-sequence condition checks are not redundant; they are the difference between a kind sequence and an awkward one.
Wait durations are in calendar days, not business days. A 3 days
wait set on a Friday afternoon means Email 2 goes out on Monday afternoon,
not Wednesday. If you want a five-business-day cadence, use 7 days. Most
Patreon-to-paid sequences read better on calendar days — patrons don't
think in business days, they think in moments — but it is worth picking
once on purpose.
What about the other three sequences
The shape is identical. Build three more workflows, one per sequence, each watching for its own label:
| Sequence | Label to watch for | Typical cadence |
|---|---|---|
free_to_paid | fanconvert:free_to_paid | 5 emails, 17 days |
onboarding | fanconvert:onboarding | 3 emails, 10 days |
winback_cancel | fanconvert:winback_cancel | 2 emails, 14 days |
winback_denied | fanconvert:winback_denied | 3 emails, 12 days |
Same trigger, same condition shape, same one-tweak-per-cycle build. Once you have the first one in muscle memory, the other three take about ten minutes each.
