Back to blog
tutorialshopifyfree_to_paid

Set up your Free → Paid sequence in Shopify Flow

Five emails, four checkpoints, 17 days. The full wiring for the Free → Paid sequence in Shopify Flow — copy-pasteable, with the chart and every condition value spelled out.

FanConvert team8 min read
Set up your Free → Paid sequence in Shopify Flow

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:

  1. A Shopify store with the free Shopify Flow app installed (Settings → Apps → search "Shopify Flow").
  2. 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.
  3. 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_paid the 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.

Loading diagram…

Here is the cadence as a table, since most of the actual setup work is pasting these values into the Shopify Flow UI:

StageActionWait before this stageDay in sequence
1Send Free → Paid · 01Day 0
2Send Free → Paid · 023 daysDay 3
3Send Free → Paid · 034 daysDay 7
4Send Free → Paid · 045 daysDay 12
5Send Free → Paid · 055 daysDay 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
CycleSendWait after
1Free → Paid · 024 days
2Free → Paid · 035 days
3Free → Paid · 045 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:

SequenceLabel to watch forTypical cadence
free_to_paidfanconvert:free_to_paid5 emails, 17 days
onboardingfanconvert:onboarding3 emails, 10 days
winback_cancelfanconvert:winback_cancel2 emails, 14 days
winback_deniedfanconvert:winback_denied3 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.

Connect Patreon to your sequences in five minutes.

Pick a tier on Patreon and start your Free → Paid sequence