This lesson walks you through one of Jesse's favorite Bento patterns, and once you see it in action, you'll understand why he uses it so much.
We're going to build a single flow that manages two sequences interacting with each other, a classic free-to-paid upgrade automation.
Here's the idea:
- Someone signs up for a free plan → they enter an upsell sequence (dripping them emails about why they should upgrade)
- They upgrade to paid → the flow pulls them out of the upsell sequence and drops them into a paid welcome series instead
Two event triggers, two sequence actions, one flow.
This is the "flows orchestrate, sequences deliver" pattern from the Events & Flows Overview lesson, in its simplest form.
1 - Prep your free plan upgrade sequence
Before we build anything new, let's make sure the sequence you created in the Creating Your First Emails lesson is ready to actually send.
Go to Sequences and open your "Bento Training - Example SaaS Free Plan Upgrade Sequence."
3 things to check:
1 - Make sure the first email has real content. It doesn't need to be polished - even a subject line like "Welcome to the free plan!" and a body of "This is a test email from the upsell sequence" is fine. We just need something recognizable so you can confirm it arrives in your inbox later.
2 - Set the first email's delay to Day 0 (immediately upon entry). We want this email to fire right away when someone gets added to the sequence, so you can verify the whole chain works without waiting.
(If you set your sequence up with MCP, most likely yours defaulted to a 7-day delay like mine did!)

3 - Make sure all the emails are published. By default they were likely all created as drafts.

2 - Create the paid plan welcome sequence
Now create a second sequence: "Bento Training - Example SaaS Paid Plan Welcome Sequence"
Go to Sequences, create it, and add one basic email with just one line that says "thanks for upgrading!" Shoji is fine.
This is the sequence people enter when they upgrade.
Set the delay to 0, and publish the email in the sequence.
The paid sequence can stay as an mostly-empty shell for now - we're just wiring it up so we can confirm the flow moves people into it.
3 - Build the flow
Go to Flows and create a new one.
Call it something like "Bento Training - Free to Paid Upgrade Flow."
This is the basic shape:

We need two paths in this flow:
Path 1 - Free signup triggers the upsell sequence:
Add an event trigger for $signed_up.free.
Connect it to an "Add to Sequence" action pointing to your "Bento Training - Example SaaS Free Plan Upgrade Sequence."
That's it for path 1. When someone fires the $signed_up.free event, they start receiving the upsell emails.
Path 2 - Paid upgrade pulls them out and starts the welcome series:
Add a second event trigger for $upgrade.paid.
Connect it to a "Remove from Sequence" action pointing to the free plan upgrade sequence (this stops the upsell emails).
Then connect that to an "Add to Sequence" action pointing to your "Bento Training - Example SaaS Paid Plan Welcome Sequence."
When $upgrade.paid fires, the subscriber gets pulled out of the upsell drip and immediately starts the paid welcome series.
Both paths live in the same flow.
This keeps the logic in one place and makes it easy to see how the two sequences interact.
Once everything is wired up, set the flow to Active.
4 - Test the full cycle
Now let's make sure everything actually works. We'll fire test events manually from a subscriber's profile and verify each step.
Test the free signup path:
- Go to one of your test subscriber's profiles in Bento
- Manually fire the
$signed_up.freeevent from their profile - Wait a moment, then refresh the profile. Check that the subscriber now shows as being in the free plan upgrade sequence. (In the subscriber's sequences pane)
- Also check that they're active/completed in this flow.
- Go check the inbox for that test email address. The first email from the sequence should have arrived (since you set it to Day 0). Confirm it's there.
Test the paid upgrade path:
- Go back to the same subscriber's profile
- Manually fire the
$upgrade.paidevent - Wait a moment, then refresh the profile. Check two things:
- The subscriber is no longer in the free plan upgrade sequence
- The subscriber is now in the paid plan welcome sequence
- The subscriber is once again active/complete in the Flow for a second time
If all of that checks out, your flow is wired correctly and both paths are working.
One thing worth knowing from the Bento sequence docs: people can only enter a sequence once.
If someone re-enters after leaving, they pick up where they left off rather than restarting from the beginning.
(Which means if they've finished all emails, they'll enter and exit immediately without receiving anything.)
We'll dig deeper into flow testing techniques in the next lesson.
What You Just Built
This two-path pattern is the foundation of most real Bento automations.
Sequences handle the email delivery (sending messages in order, with delays).
Flows handle everything else: listening for events, deciding which sequence someone belongs in, and moving them around when their status changes.
Once your flow is active and your sequences have real emails in them, this automation runs itself.
Someone signs up, gets the upsell drip, upgrades, and seamlessly transitions to the welcome series - no manual intervention.
Populating your sequences with AI: The paid sequence is still an empty shell, and the free sequence just has one test email.
When you're ready to fill them with real content, use the approach from the Build A Sequence With Claude lesson - have your AI agent draft however-many emails and upload them all at once, then you review, adjust timings, and publish.
Scaffolding with Tanuki: You could also have Tanuki build this entire flow for you (we covered Tanuki in the Events & Flows Overview lesson) if you wanted to. (But IMO it's good to do it yourself to build your comfort.)
When to move on
- You have two sequences: the free plan upgrade sequence (prepped with a Day 0 email) and the paid plan welcome sequence (new)
- You have an active flow with two event-triggered paths managing those sequences
- You've verified the free signup path: subscriber shows in the sequence AND the email arrived in your test inbox
- You've verified the upgrade path: subscriber was removed from the free sequence and added to the paid sequence
- You understand the "flows orchestrate, sequences deliver" pattern
Video transcript
In this lesson, we are going to build our first flow. But don't be scared, we'll keep it simple. So the pattern we're going to follow today is one of the most common patterns that Jesse uses, where we're essentially going to use a flow to put somebody into a sequence and perhaps remove them from a sequence. We're going to do it with a common one SaaS companies would use, which is the free to paid upgrade sequence.
But then if somebody does upgrade to paid, we need to remove them from that sequence. So that's what we'll be doing today. And the general shape, I think I have a screenshot here. Yeah.
This is the shape of what we'll be playing with. Essentially, you add them to it, but then if the purchase event happens, you remove them, and then you add them to the thank you flow for paid. But it'll all be clear because we'll build it together. So let's make sure we have everything prepped before we start on the flow.
What we'll do first is go into the sequence we made earlier. So back on our Bento homepage, we go emails and then sequences. We'll pull up that free plan upgrade sequence that we were creating with the MCP. If you don't have that yet, you can find the earlier lesson where we built it, but you can also just make some sequence with placeholder.
It doesn't really matter. We just need a context where there's a delay. So you could just have one instant email and then a second email with a few day delay, or just your first email has a delay. It doesn't really matter.
All I need in order for you to learn this is that somebody can go into this sequence and sit there waiting for something to happen. So you need to have at least one delayed email that they're waiting for, because if there are no emails or there's just one and it sends instantly, they will join and leave without us getting to experience the cancellation of this sequence when they purchase. So that's the main thing we need. If you do have the sequence already made, which I do here, the main thing we have to do is publish and then check delays.
So I have three things down for us to do. First step, make sure the first email has real content. So let's just click into the editor for it. Boom, it does.
It doesn't have to be content that we're happy to send to real users. It just has to have content so we can receive it and know that we received it. So that one's set. Make sure the first email's delay is zero.
So for this, you can click this little drop down here, and you see mine's already set to instantly. But if it was something like this, it would've said three hours by default. And I would click that, and then I would click send instantly, and now it's set. So that's that.
And then we have to publish it. So just click this little publish link, and then that one's published. So notice now how this one's green and these two are yellow. That means we still have to publish these.
The delay for these doesn't really matter as long as there is one. So it looks like when I had AI create these, it did three-day delay and four-day delay. That's fine for me. It would only be a problem if they were all instant.
So that looks good. Publish this one. We confirmed it has real content. This has real content.
Publish. Done. And now we can create the welcome sequence for the paid plan. So I'm going to copy this label here, go back to the sequences page.
Let me refresh. Interesting, this still shows as draft. I might have to publish the whole sequence. Let's see.
I'm guessing it's just a delay from some caching. I've asked Jesse in Discord, and I can update this if I told you something wrong. But my guess is that once the emails are all published, that's the thing that makes a sequence published or not, other than the freeze functionality, which I'm not using and we don't need to use here. So I'm just going to assume all is well, and we'll know for sure when we try to test it, because if my test user doesn't get the email, then we know that indeed it's not actually published.
So back to what we were doing. We're going to create this new sequence. So sequences page, new sequence, paste from the page you're on now. Bento Training example SaaS paid plan welcome sequence.
And we can keep all of the settings at default, I believe. Yes. So create that. And we are going to just create one welcome email that just says, "Thanks for upgrading with Shoji." So add your first email.
And I think we can have-- Yeah, you can do generate with AI. Thank them for buying a paid plan. Can't be placeholder. So if you do this, you can actually have Tanuki just make you a little email.
But you also don't even have to do that. You could have literally just copy and pasted, "Thanks for upgrading" as a subject line in the body. But how nice that we have that all made for us and used AI credits on that. Sorry, Jesse's AI bill.
Email subject. I'll just copy and paste this for a moment. And now we can save and exit. Finally, we need to set the delay to instant and publish it.
And I think that's everything I said. Delay zero, publish Shoji. Simple. Yeah.
Great. So with this one done, we can finally do the flow. So what we'll do now is go to the Flows tab, and we can call a new one something like this, Bento Training free to paid upgrade flow. So click New Flow.
And then up here at the top left is where you paste that. Done. And now we can start building out this shape that I mentioned. So technically, you'll probably have Tanuki do this for you because it's a pretty simple one.
But I want us to get in the habit of doing these things manually, because that's how you build your comfort with it. So first thing we need is the ... left-hand side, adding them to that sequence when they purchase, and then we need the right-hand side to remove them. Or, sorry, left-hand side, adding them when they sign up for free, and then the right-hand side, removing them when they purchase. It'll be more clear once we just set it up.
So let's grab the first trigger right here, signed up.free. So by default, there will be this new event. Sometimes there's a little Tanuki node. You can delete all this stuff.
I'll even delete the new event just so that we're doing it totally from scratch. So totally blank canvas here, delete whatever's there. And then right-click, and we're going to go Triggers, New Event. Double-click it or single-click it to edit it, and we're going to just paste that $signed_up.free.
And you can just click Add it as custom option, click Save. So this is our trigger. And then we want an Add to sequence action, adding them to the free plan upgrade sequence. So right-click, Actions, Add to sequence.
And then we will connect them and click it, and from the dropdown, we'll do Free Plan Upgrade, and it gives us a little preview. Cool. So Save changes. And that's our whole left-hand side.
If you want, I like to leave little annotations for myself explaining what things do. I usually use blue for informational labels. So I might do something like this and say, "When someone signs up for free, add them to the free to paid..." Oh, don't need the transcript on that. "... paid sequence." And now this little card just lives here to remind future us what the heck we were doing with this.
I'll save my progress so far. And now we can do the right-hand side. So in this case, upgrade.paid. This can be whatever you want.
So in this, in real life, it might be purchase.free, purchase.paid, purchase.premium, purchase. whatever. But for today's tests, these are just arbitrary names that we'll be manually firing, so it really doesn't matter. So let's copy it. So right-click, New Trigger, New Event, paste it, same deal as last time.
Save changes. And then if I wanted to, I could right-click this previous note and say, "When someone signs up for paid, thank them and remove them from the free upgrade sequence." Often when I do these kinds of comments, I'll do them on a per-node basis. So this is almost an overview of the whole flow versus a comment on one specific node. For something as simple as this, it doesn't matter because it's barely any nodes.
But for really long chains where I have 30 or 40 things, it can be really useful to have node-by-node comments reminding future Zach what the heck I was doing. So first thing we need to do. So this event gets fired when somebody upgraded. They paid us money, so we no longer need to nag them about upgrading.
So right-click, go to Actions, and go Remove sequence. And now we will remove them from the upgrade sequence. So Example SaaS Free Plan Upgrade Sequence. Save.
And this is where a per-node comment makes more sense. In this case, again, a Zach preference is that I'll usually do purple for flow-wide overview kinds of things, like the label for a whole chain, and then blue for node specific. So a better example of what these would look like would be, "They purchased a paid plan," because that's an annotation of the event. And then I would say, "Remove them from the upgrade sequence since they paid." And then we could do it another time and say, "Thank them for upgrading." And then we will add [clears throat] an Add to sequence node.
And now we will add them to the paid plan welcome sequence and connect it and save it. I think that's all the stuff I wanted you to build. Yeah. So basically what we've done at this moment is when someone sets up a free account, they will receive the upgrade sequence.
So the first email would say, like, "Hey, thanks for signing up for free. Here's a cool feature. 24-hour coupon to upgrade." Whatever you want to say. And whether they upgrade today or tomorrow or a week from now, whenever they do upgrade, it's going to remove them from those reminders and deals and whatnot, because they don't need them because they already paid us money.
And then it's going to add them to this new one where we say, "Thanks for upgrading. Here's how to get the most out of your product that you just bought." Or whatever. And that's all here. It's all wired up.
So now we just need to test it. First thing, in order to test it, is we need to set it to live mode. So I'll do that, and I'll save it. So from this moment on, we can put real subscribers through it.
And there are different ways we can test it. One of them that's simple is the Run tab here. You can manually add a user. But I want you to get comfortable firing events from a user's page, so we're not going to do this quite yet.
We'll do this in a future video. For now, I want to do it manually. So if we right-click, we can't quite select it here. It'll deselect it there, but we can grab it from the page.
If we copy out the free sign-up one, we can do that manually. So in the same tab or a new tab, we can go to one of our test users. So if I go People, I can go to my Zach one. I don't think he's done it.
Yeah, I don't think he's done this one yet So I've got my Zach user pulled up. We can go to Create Event. Actually, sorry. Let me do it to my testing email account, because I don't think I have that one in here yet.
Yeah, here we go. This will be a good one [clears throat] because then I can show you the email coming through. So if we go into a test user who we can receive emails for, we can go in here, click Create Event, and paste in the $signedup.free, and click Create. And what this does is it literally creates that event for them.
So we just manually fired this, which is a simulation of what would happen if they purchased. And you actually saw that little Bento Tanuki head ghost thingy pop up there, and there you see it in the feed hitting these things. And if we were to refresh this user's page and go to the Flows tab, you would actually see them in this flow completing these steps and pending. If we refresh, it'll probably show as done.
Basically, there's a slight delay [clears throat] because of the queue processing it, but probably if I go check my email, I've already got one. Yeah, you can see we've already got this one in here. And in my case, you can actually see this is a good learning moment, even if it was unintentional. I had this other flow that I made just practicing for these videos, where there's this new event containing signed up.
So as a reminder, we just did signedup.free, which contains signed up. So this user actually got this email triggered immediately. Welcome to event.details.planname. And so if we're here in their little emails log, we can see that the Welcome to Product!
Here's what to explore first. Pretty sure that's going to correspond to the sequence. So we can go to Free Plan Upgrade Sequence. Yeah.
Welcome to Product! Here's what to explore first. So this email that they got corresponds to our sequence, and then this was my accidental flow-based email. And we can kind of trace that because we see they are in all of these different flows.
Well, not this one, this is seven days ago. But these two happened at the same time, two minutes ago. So Bento Training Signup Data Flow, Bento Training Free to Paid Upgrade Flow. And this signup data flow is the one that I had made before, whereas free to paid is what we made just now.
And then if I go pull up my inbox, we see these in here. Both of them landed in spam because I didn't actually set up my DNS stuff in Bento. So this is a good reminder. If you haven't done it yet, you must do it, otherwise you won't get any of your emails. [chuckles] But nonetheless, they did come through.
I'm surprised they didn't bounce because I thought Gmail was actually outright rejecting these things. But in any case, if we go back to this user's profile and click to their Sequences tab, we see that they're sitting here in the Free Plan Upgrade sequence and that they've had one out of three sent. And I'm not sure if we can see when they'll get their next one, but it would be implicit. So the next thing we want to do is have them essentially upgrade to paid.
So they received that welcome email. They're like, "Oh, my God. Paid is so good. I should buy it right the heck now." And so they do, and that's what we're going to simulate.
And what we expect to happen is that it will cancel them from the upgrade sequence, and it will immediately send that welcome sequence. So let's go back to their profile, and hopefully, you remember which one you were testing it on because you want to do it on the exact same one. If you forgot which one you were testing it on, [clears throat] you can find out if you're on the right one because they should have this signedup.free event having happened very recently. So on their profile, again, create event.
This time we'll do $upgrade.paid, which corresponds to this exact same name from our second pathway here. Click Create, and then in a moment, it will show here. I think always you have to refresh. Sometimes you don't, I'm not really sure.
But once you refresh and you see it here, it means it was fired. And at this point, it'll be triggering this right side of the sequence. So first thing it'll do is take them out of the other sequence, and then the second thing it'll do is add them to the welcome sequence for paid. I don't know if it will have processed already.
Let's see. So it completed the previous run, which is cool, and now it's doing the in progress run. I notice that usually the progress reports on the Flows page are a little bit delayed, but behind reality. So even though this says it's still in progress, I bet it's done.
And if we look at their Sequences tab, that will help us understand. So indeed, it is done. We see them as canceled from the Free Plan Upgrade sequence, which is exactly what we want. And we see them in the Paid Plan Welcome sequence.
We see them as active, and we see that they got one out of one email sent. So if we go back into our Gmail, we should see another one, in my case, in spam. And indeed, we have it. "Thanks for upgrading!" And as a reminder, this one corresponds to Sequences, Paid Plan Welcome sequence, and then that first email here.
"Thanks for upgrading to a paid plan. Glad to have you with us!" So we did it. You did it. Amazing.
And you want to basically make sure to know that you did everything right. You want to make sure that they have been canceled from the Free Plan Upgrade sequence. That's important thing one. They did receive the free plan upgrade sequence email in the first place, and now they've received the paid plan welcome sequence thank you email.
If you received those things and saw those things, then you're in great shape. And so one important thing I wanted to call out from the Bento sequence docs is that if somebody re-enters a sequence that they've been in before, they'll pick up where they left off, which means in the case of this thanks for upgrading sequence one, if there's only one email in it, they would have nothing happen. They just enter and exit immediately. Or if somebody somehow was re-added to the free plan upgrade sequence, so let's think of what that would be to have that happen.
I guess if they canceled their paid membership, I don't know how in real life they would ever get this re-triggered, but just pretend that they did somehow. If they did, they would skip email one because they've already received it, and they would start from email two. So that's just a little note about how sequences work in here. We'll do some more flow testing stuff coming up, but you've already done the fundamentals, and that's very impressive.
Go you. Basically, what you just did is, as I said, a pattern that Jess uses all the time, and it's probably the foundation for the 80/20 of email automation to get the most value from follow-ups without a lot of technical faff. And it was very simple. Not too hard.
So go you. This is awesome. And from here, you could totally ship what you just learned as your whole email strategy if you wanted to. You could use these concepts to build a multi seven or eight figure, depending on your audience size, email automation setup.
But we'll go a little bit deeper and talk more about flows, behavior-based segmentation, et cetera, in the coming lessons so that you can get more depth of power. But if you don't want that, you could totally run with what you already have and be more proficient than probably a lot of Bento users. So I'll see you in the next lesson, hopefully, and hopefully this was clear and fluid.