Skip to main content
Solved

Best way to handle event signups (paper list) + flows + double opt-in?

  • April 5, 2026
  • 2 replies
  • 81 views

daddyshomemadesyrups
Contributor II
Forum|alt.badge.img+1

Hi everyone! I’d love some guidance on best practices for managing event signups in Klaviyo.

Here’s my current setup:

  • I have a signup form for a giveaway that uses double opt-in
  • That feeds into an “Event Signups — Confirm Subscription” list
  • I created a flow triggered by “Added to list” for that event list:
    • Email #1 immediately
    • Email #2 after 1 day
    • Then I add them to my main “Newsletter” list
  • My Welcome Series is triggered by being added to the Newsletter list

Where I’m getting stuck is with paper signups from in-person events.

What I’d ideally like:

  • Upload those contacts
  • Have them go through the same Event Signup flow
  • Then flow into my Welcome Series

What I’m seeing:

  • When I import contacts into the Event list, they don’t always trigger the flow automatically
  • I can manually add profiles to the flow, but I’m not sure if that’s best practice

My questions:

  1. What is the best way to handle in-person (paper) signups in Klaviyo? (I’ve tried QR codes and I always have better luck with paper and pen sign ups. People tend to do it while they wait in my lines!
  2. Should I be skipping double opt-in for these contacts, or is there a recommended way to still include it?
  3. Is manually adding profiles to a flow after import normal, or is there a better setup I should be using?
  4. Would it be cleaner to use a separate list or segment for event signups instead?

For context: these are people who explicitly signed up at markets/events to receive emails.

Appreciate any guidance — I want to make sure I’m doing this the right way as I grow 🙏

Best answer by ArpitBanjara

Hey ​@daddyshomemadesyrups 

Good question, and one that comes up a lot for brands that do markets, pop-ups, or any kind of in-person activity.

The short answer on double opt-in: turn it off for the list you're importing these contacts into. List imports do not trigger double opt-in anyway Klaviyo article here, so if your list is set to require it, imported contacts will land in a weird limbo state. Since someone physically handed over their email at your event, that is documented consent. You do not need to re-confirm it digitally. Switch the list to single opt-in before you import, then turn it back on afterward if you want Double opt in for online signups going forward.

On the welcome flow question: importing a CSV to a list will trigger your welcome flow for those contacts, the same as if they had signed up organically online. 

That is usually fine, but if your welcome flow references something like "thanks for signing up on our website," it will read oddly to someone who met you at a market. The cleanest fix is to use a $source conditional split inside your flow. When you upload the CSV, add a column for a custom property like signup_source with a value of event. Then in the flow, split on that property and send a slightly different first email to event signups that acknowledges where they met you.

Using a $source conditional split is a common way to send different welcome flow versions depending on where someone signed up, for example showing a discount version to popup form subscribers while sending a standard welcome to footer signups. The same logic applies here.

If you want to keep it even simpler and skip building a conditional split, just put your welcome flow in draft mode before the import, do the upload, then set it live again. Anyone who came in during that window won't trigger it. You can then send them a one-off campaign instead that's written for an event audience.

One more thing worth noting: if you collect a lot of emails at events regularly, it is worth setting up a separate list just for event signups. That way your reporting stays clean, you can see exactly how that channel performs, and you can send them event-specific content without needing to filter by property every time.

I hope I answered all of your questions, please let me know if I missed any or if you have any follow up questions. 

If you are still stuck, feel free to schedule a call with us here - https://flowium.com/lp/klaviyo-agency/

Cheers.
Arpit

2 replies

ArpitBanjara
Principal User II
Forum|alt.badge.img+37
  • Principal User II
  • Answer
  • April 6, 2026

Hey ​@daddyshomemadesyrups 

Good question, and one that comes up a lot for brands that do markets, pop-ups, or any kind of in-person activity.

The short answer on double opt-in: turn it off for the list you're importing these contacts into. List imports do not trigger double opt-in anyway Klaviyo article here, so if your list is set to require it, imported contacts will land in a weird limbo state. Since someone physically handed over their email at your event, that is documented consent. You do not need to re-confirm it digitally. Switch the list to single opt-in before you import, then turn it back on afterward if you want Double opt in for online signups going forward.

On the welcome flow question: importing a CSV to a list will trigger your welcome flow for those contacts, the same as if they had signed up organically online. 

That is usually fine, but if your welcome flow references something like "thanks for signing up on our website," it will read oddly to someone who met you at a market. The cleanest fix is to use a $source conditional split inside your flow. When you upload the CSV, add a column for a custom property like signup_source with a value of event. Then in the flow, split on that property and send a slightly different first email to event signups that acknowledges where they met you.

Using a $source conditional split is a common way to send different welcome flow versions depending on where someone signed up, for example showing a discount version to popup form subscribers while sending a standard welcome to footer signups. The same logic applies here.

If you want to keep it even simpler and skip building a conditional split, just put your welcome flow in draft mode before the import, do the upload, then set it live again. Anyone who came in during that window won't trigger it. You can then send them a one-off campaign instead that's written for an event audience.

One more thing worth noting: if you collect a lot of emails at events regularly, it is worth setting up a separate list just for event signups. That way your reporting stays clean, you can see exactly how that channel performs, and you can send them event-specific content without needing to filter by property every time.

I hope I answered all of your questions, please let me know if I missed any or if you have any follow up questions. 

If you are still stuck, feel free to schedule a call with us here - https://flowium.com/lp/klaviyo-agency/

Cheers.
Arpit


Forum|alt.badge.img+1
  • Contributor I
  • May 11, 2026

Honestly, paper signups at events still work surprisingly well because there’s already a small trust moment happening face-to-face. The intent is usually much higher than random popup traffic.

What I’d probably do is keep event signups separated initially (even temporarily), then move them into the main Newsletter flow after confirmation or first engagement. That gives you cleaner tracking and makes troubleshooting easier when flows don’t trigger correctly after imports.

For double opt-in, I’d personally still keep some kind of confirmation step if possible — even lightweight — mostly for deliverability and long-term list health. Especially as your list grows, anti-spam signals and engagement quality matter more than people realize.

This is actually very similar to what happens in lead gen for ecommerce and lead gen for marketplaces. The acquisition source changes the behavior of the lead, so treating all signups identically can create weird automation gaps later.

I’ve heard SalesAR talk about this kind of thing too from the outbound side — good systems are less about volume and more about clean routing, segmentation, and maintaining trust signals over time. A smaller engaged list usually outperforms a massive messy one.

And yes, Klaviyo imports not consistently triggering flows is unfortunately something a lot of people run into. Using segments or explicit post-import actions sometimes ends up being more reliable than relying on automatic triggers alone.