From “Registered” to “Replay Watched”: A Webinar Journey for Shopify Apps
A complete end-to-end webinar journey for Shopify apps and e‑commerce SaaS teams, showing how to turn registrations into replay views and paid plans by tagging behavior, branching attendees vs no‑shows, and automating respectful follow‑up in Spreeflo.
Industry
Niche
Pattern
Loading sequence...
Someone clicks “Register” for your webinar, confirms the calendar invite…and then never shows up. Or they attend, love it, and still drift away without ever upgrading.
For a Shopify app or e‑commerce SaaS, that is a painful amount of intent leaking out of your funnel.
The sequence at the top of this page is the whole journey, end to end: from the instant someone registers, through reminders, into the live session, and down two replay paths for attendees and no‑shows.
In this playbook we’ll walk through that journey node by node, using a fictional Shopify app, CartWizard, that runs webinars to convert trial stores and free-plan users into paying subscriptions.
CartWizard’s team is tiny. They can’t hand-hold every registrant. But they can build a journey once and let it reliably turn “webinar interest” into revenue every time they run a session.
The outcome this journey is built to drive
This pattern is tuned around four hard numbers:
Registration rate: how many visitors and users register.
Attendance rate: how many registrants actually show up live.
Replay views: how many people consume the content after the event.
Post-event conversion: how many end up starting a trial, upgrading, or booking a call.
Those metrics are all functions of the same thing: how well you keep each person engaged between “I’m interested” and “I took action.”
This journey does that by:
Capturing detailed webinar behavior (registered, attended, skipped, watched replay, clicked offer) on every contact.
Speaking differently to each group: existing customers vs leads, attendees vs no‑shows, clickers vs non‑clickers.
Nurturing people over several days instead of throwing one replay email into the void.
You build it once in Spreeflo’s campaigns and journeys editor. Then you duplicate it for each new webinar and adjust dates, copy, and tags.
Step 1: Trigger the journey with a clean registration event
At the top of the sequence is a Custom Event trigger listening for something like webinar_register.
For most e‑commerce apps, registration happens on an external platform: Zoom, Demio, Livestorm, etc. You don’t control their form, so you can’t embed a Spreeflo form there. Instead, your backend listens to the webinar platform’s registration webhook and POSTs an event into the Spreeflo API whenever someone registers:
Event name:
webinar_registerProperties: webinar ID or slug, scheduled start time, maybe plan type, etc.
Email: the registrant’s email (used to map to a contact)
That incoming event is what fires the Custom Event trigger.
Configuration for the trigger:
Event name:
webinar_registerProperty conditions: webinar ID equals this specific webinar (so each journey only picks up its own registrants)
Re‑enrollment: on, so someone who registered for a past webinar can still go through this journey for a new one
If you host registration yourself on a landing page you control, the cleaner path is a Spreeflo form embed and a Form Submission trigger instead of a Custom Event. The rest of the journey is identical.
Step 2: Stamp the contact with webinar-specific details
Immediately after the trigger, the sequence applies two small but important actions:
Add Tag
Update Contact Attribute
Tags:
webinar-cartwizard-q3-registeredForce tag trigger: off (this is a new, one‑time tag)
This makes it trivial to pull a list of everyone who registered for this specific session later, and to exclude them from “last chance to register” campaigns.
Attribute: a custom TEXT attribute such as
webinar_cartwizard_q3_statusUpdate type: Update
New value:
registered
Because Update Contact Attribute writes a static value, you keep this journey scoped to a single webinar. When you clone the journey for next month, you just change both the tag and the literal value (for example, webinar_cartwizard_q4_status / registered).
This is where the first brand message comes to life: you’re capturing detail on every customer so you can speak to each one uniquely. From here on out, CartWizard can segment on “registered for Q3 webinar but didn’t attend” or “attended Q2 and Q3 webinars and clicked the offer.”
Step 3: Send the registration confirmation email
Next is a Send Email node: the confirmation.
Configuration:
Send only once: on (you never want a duplicate confirmation)
Template: built in the email builder
From: your main marketing or success address
The confirmation email does four jobs:
Confirms their spot and restates the value in terms of their role (“How to fix cart recovery for 80% of your stores in 30 minutes”).
Sets expectations: date, time, duration, who it’s for.
Gives the join link and an “add to calendar” link.
Mentions that they’ll get a couple of reminders so they don’t miss it.
You can personalize copy for different audiences (trial vs paying vs completely new lead) using dynamic variables and, on Professional, AI‑written variations guided by your own prompts. The AI personalization variables help keep this grounded in the contact’s actual context (store size, plan, region).
At this point, the contact has one tag, one webinar-status attribute, and one email in their history. Now we keep the memory alive until go‑live.
Step 4: Build a respectful multi‑day reminder cadence
The next stretch in the sequence is a simple pattern:
Time Delay
Send Email
Time Delay
Send Email
Time Delay
Send Email
Each Time Delay waits a fixed amount of time before proceeding. Spreeflo supports days or hours (minimum 1 hour), so CartWizard configures something like:
Delay: 2 days → Reminder #1 (“Two days to go”)
Delay: 1 day → Reminder #2 (“Tomorrow at 10am PT”)
Delay: 21 hours → Final reminder (“We’re live in one hour”)
Every reminder email:
Repeats the join link.
Pulls one new benefit or concrete result from the webinar to keep interest high.
Uses a short P.S. tailored to their current relationship: a paying customer sees “Bring your questions about scaling from 50 to 500 orders a day”, a trial user sees “We’ll cover how to get value before your trial ends.”
Importantly, there is always a Time Delay between any two Send Email nodes. That spacing avoids the spammy experience of back‑to‑back sends and follows Spreeflo’s own pacing rules.
Your timing doesn’t have to be mathematically perfect relative to the scheduled start time. What matters is that your typical registrant gets:
A useful confirmation right away.
One or two spaced reminders that don’t overwhelm them.
A clear “starting now” email near go‑time.
Step 5: Wait for attendance, then branch attendees vs no‑shows
After the final live reminder, the sequence needs to figure out who actually turned up.
First, there’s a Time Delay of a few hours to let the webinar finish and for your webinar platform to fire its attendance events into Spreeflo (for example, via a webinar_attended event from your backend to the API).
Then two nodes work together:
Wait Condition
If/Else
Condition: Custom Event
webinar_attendedtriggered at least 1 time in the last 1 day (for this contact, for this webinar ID)Timeout: 1 day
This holds each registrant here until either:
Their
webinar_attendedevent arrives, orA day passes and they still haven’t attended (which effectively marks them as a no‑show)
If: Custom Event
webinar_attendedtriggered at least 1 time in the last 1 day → “Attended” branchElse: “No‑show” branch
This combination gives you precise branching without racing ahead:
Real attendees don’t get a “sorry we missed you” email.
People who never showed still get value and a chance to convert via the replay.
Step 6: Attendee path – replay plus next-step offer
In the “Attended” branch, the sequence does three things:
Update the contact’s profile
Send the attendee replay email
React differently to engaged vs passive attendees
Update Contact Attribute: set
webinar_cartwizard_q3_statustoattended.Add Tag:
webinar-cartwizard-q3-attended.
From now on, CartWizard can build segments like “attended at least 2 webinars in the last 6 months” using Spreeflo’s segment builder.
A Send Email node goes out a few hours after the live session (the Wait Condition and the earlier Time Delay handle the spacing so there’s no back‑to‑back send here).
This email:
Thanks them for showing up.
Links to the full replay.
Surfaces resources mentioned on the call (slides, templates, snippets).
Pitches a clear next step aligned to the webinar’s theme: start a trial on a higher plan, enable a specific feature, book a “done with you” setup call, etc.
After the replay email, the branch inserts:
A Time Delay of 2 days.
A Check Email Activity node pointing at the attendee replay email, with two branches:
clicked: contacts who clicked any link.Else: everyone else.
In the clicked branch:
Add Tag:
webinar-cartwizard-q3-replay-clicked.Optional Webhook (on the Professional plan): POST the contact to a CRM or a Slack webhook so someone on the team can follow up manually with high‑intent stores.
In the else branch:
A final Send Email — a short “Last chance to watch” note that highlights one key clip (for example, “Skip to minute 14 to see the live teardown of a broken cart recovery flow”).
Then the branch ends.
The journey hasn’t just “sent the replay.” It has:
Logged that they attended.
Logged whether they engaged with the follow‑up.
Pushed the hottest slice of that audience into a higher‑touch path.
Step 7: No‑show path – give value, then qualify
The “No‑show” branch mirrors the structure, but with a different tone.
1. Update profile as a no‑show
Update Contact Attribute:
webinar_cartwizard_q3_status=no_show.Add Tag:
webinar-cartwizard-q3-no-show.
2. Send a no‑show replay email
A Send Email node fires with copy along the lines of:
“Sorry we missed you live.”
The same replay link.
A bulleted list of what they’ll get out of watching, emphasizing that it’s fine to jump to specific timestamps.
This is still the primary chance to get them to consume the content, but without shaming them for not showing up.
3. Separate skimmers from cold leads
As in the attendee branch:
A Time Delay of 3 days.
A Check Email Activity node on the no‑show replay email, with:
clickedbranch.Else branch.
In the clicked branch you might:
Add Tag:
webinar-cartwizard-q3-replay-clicked.End the branch, or optionally drop them into a separate nurture journey for “warm webinar leads” via an Add Tag and a downstream Added Tag trigger in another journey.
In the else branch:
One more Send Email that abstracts the core lesson of the webinar into a short case study without requiring them to watch a 45‑minute video.
Then end the branch.
This path turns no‑shows from dead weight into either:
Replay viewers who might still convert, or
Leads who at least got a compact, skimmable story that keeps your app top of mind.
Step 8: Track replay views, not just clicks
Clicks on replay emails are good, but you’ll usually want to know who actually watched.
On the replay page in your app or marketing site, embed the Spreeflo SDK (if it isn’t already there) and either:
Let Spreeflo auto‑track the Page Visited event for that URL and later segment on “Page visited URL contains
/webinar/cartwizard-q3-replayat least 1 time in the last 14 days,” orExplicitly fire a custom event like
webinar_replay_viewedfrom client-side JavaScript when the video starts.
Those events feed into web analytics and segmentation; the web tracking and analytics docs cover setup.
Once that’s wired, you can extend this journey or build a follow‑on one:
Triggered when
webinar_replay_viewedfires.With different messaging for replay viewers who never attended live.
This is where founder‑led teams win on leverage: a few extra minutes of instrumentation gives you a permanent new signal to target.
Step 9: Measuring the webinar funnel inside Spreeflo
With the tags and attributes you set along the way, it’s straightforward to calculate the four core metrics:
Registration rate
Segment: contacts with tagwebinar-cartwizard-q3-registered. Compare count to page visitors or email recipients for your initial invite (from your acquisition source).Attendance rate
Segment:webinar_cartwizard_q3_statusisattended. Divide by registrants.Replay views
Segment: either tagwebinar-cartwizard-q3-replay-clickedor Custom Eventwebinar_replay_viewedtriggered at least 1 time in the last X days.Post-event conversion
Segment: contacts who are now on a paid plan (you can sync this via the API or web tracking) and also:
- Havewebinar_cartwizard_q3_statusin {attended,no_show} and
- Became paid within 14 or 30 days after the event (using Contact Added Date or a customupgraded_atattribute).
You can store those segments and reuse them in later campaigns, exclusion lists, or board‑friendly reporting.
If you’re combining several webinars into a bigger picture view, Spreeflo’s about Spreeflo pricing plans doc is worth a skim so you understand how many of these contacts count as marketing contacts across time.
Why this pattern closes a quiet retention leak
For a Shopify app or e‑commerce SaaS, webinars are usually run as “big moments”: launch a feature, host a panel, run a teardown clinic.
But without a journey like the one in the sequence above, most of the value spills out:
Registrants forget you exist.
Attendees never hear from you in that crucial 48‑hour window when the content is still fresh.
No‑shows get one generic replay email and then vanish back into the App Store noise.
By treating webinar behavior as first‑class customer data — and by giving every segment its own path from registration to replay — you stop leaving that lifetime value on the table.
The heavy lifting happens once, inside a visual flow you can tweak in minutes. Next time CartWizard wants to run a webinar, they clone the journey, change a few literals, and plug in a new registration feed. The system works quietly in the background while the team ships product.
That’s the real upside for small, founder‑led teams: you don’t need a bigger marketing department to run sophisticated webinar funnels. You just need to design a smart journey once and let Spreeflo handle the follow‑through.