Skip to main content
Solved

Moving a profile in and out and back into a flow


Forum|alt.badge.img
  • Contributor I
  • 2 replies

Hi,

I’m designing a welcome flow and want a profile to temporarily exit the flow when they make a purchase, go to a short post purchase flow, and then go back into the welcome flow to pick up where they left off.  I’ve reviewed the documentation on this and it’s just not clear to me how I would do it.

Thanks,

Joel.

Best answer by zacfromson

Hi Joel! Thanks for your question to the community. Since Klaviyo doesn’t allow users to re-enter the same flow at the same step, we need a workaround using conditional splits and profile properties. Here is how you can successfully do this.

Step 1: Track Users in the Welcome Flow

Before users exit the Welcome Flow (when they make a purchase), you need to store their progress.

  • Before Each Email in the Welcome Flow
    • Add an “Update Profile Property” action before every major step:
    • "was_in_welcome" = "true"
    • "welcome_step" = [current step number]
    • Example:
      • Before Email 1: "welcome_step" = 1
      • Before Email 2: "welcome_step" = 2
      • Before Email 3: "welcome_step" = 3
  • Exit Users Who Make a Purchase
    • Add a Flow Filter: "Placed Order > Zero Times Since Starting This Flow"
    • This ensures that once they place an order, they exit the Welcome Flow.

Step 2: Move Users to a Post-Purchase Flow

After they exit the Welcome Flow, we send them to a Post-Purchase Flow.

  • Create the Post-Purchase Flow
    • Trigger: Placed Order
    • Flow Filter: "Properties about someone > was_in_welcome = true"
    • (Ensures only those who were in the Welcome Flow enter, preventing all buyers from joining.)
  • Actions in the Post-Purchase Flow
    1. Send Post-Purchase Emails
    2. At the End of the Flow (Before Exiting)
    • Add an “Update Profile Property” action:
    • "return_to_welcome" = "true"
    • This marks users as ready to return to the Welcome Flow.

Step 3: Add Users Back into the Welcome Flow

Now, we need a way to reintroduce users into the Welcome Flow at the correct step.

  • Create a New Segment
    • Segment Name: "Returning to Welcome Flow"
    • Conditions:
      • "Properties about someone > return_to_welcome = true"

      • "Properties about someone > was_in_welcome = true"

      • Add an exclusion condition so users who already completed the Welcome Flow do not re-enter.

  • Create a Separate “Welcome Flow – Returning Users” Flow
    • Trigger: "Added to Segment" → Select “Returning to Welcome Flow”`
    • Flow Actions:
      • Conditional Split (Check welcome_step Property):
        • If "welcome_step" = 1 → Send them the first Welcome email.
        •  If "welcome_step" = 2 → Send them the second Welcome email.
        • If "welcome_step" = 3 → Send them the third Welcome email.
        • Etc.
    • ​After the last email in this flow, add an “Update Profile Property”:
      • "return_to_welcome" = "false" (Prevents them from looping back again.)

 Why This Works

  • Prevents all purchasers from re-entering Welcome Flow.
  • Only those who were originally in Welcome Flow return.
  • Users continue from the correct step, rather than restarting.
  • No duplicate entries or infinite loops.

I hope this helps solve your issue! If you need additional help implementing this please let me know. 

View original
Did this topic or the replies in the thread help you find an answer to your question?

5 replies

zacfromson
Problem Solver III
Forum|alt.badge.img+1
  • 2025 Champion
  • 14 replies
  • Answer
  • February 8, 2025

Hi Joel! Thanks for your question to the community. Since Klaviyo doesn’t allow users to re-enter the same flow at the same step, we need a workaround using conditional splits and profile properties. Here is how you can successfully do this.

Step 1: Track Users in the Welcome Flow

Before users exit the Welcome Flow (when they make a purchase), you need to store their progress.

  • Before Each Email in the Welcome Flow
    • Add an “Update Profile Property” action before every major step:
    • "was_in_welcome" = "true"
    • "welcome_step" = [current step number]
    • Example:
      • Before Email 1: "welcome_step" = 1
      • Before Email 2: "welcome_step" = 2
      • Before Email 3: "welcome_step" = 3
  • Exit Users Who Make a Purchase
    • Add a Flow Filter: "Placed Order > Zero Times Since Starting This Flow"
    • This ensures that once they place an order, they exit the Welcome Flow.

Step 2: Move Users to a Post-Purchase Flow

After they exit the Welcome Flow, we send them to a Post-Purchase Flow.

  • Create the Post-Purchase Flow
    • Trigger: Placed Order
    • Flow Filter: "Properties about someone > was_in_welcome = true"
    • (Ensures only those who were in the Welcome Flow enter, preventing all buyers from joining.)
  • Actions in the Post-Purchase Flow
    1. Send Post-Purchase Emails
    2. At the End of the Flow (Before Exiting)
    • Add an “Update Profile Property” action:
    • "return_to_welcome" = "true"
    • This marks users as ready to return to the Welcome Flow.

Step 3: Add Users Back into the Welcome Flow

Now, we need a way to reintroduce users into the Welcome Flow at the correct step.

  • Create a New Segment
    • Segment Name: "Returning to Welcome Flow"
    • Conditions:
      • "Properties about someone > return_to_welcome = true"

      • "Properties about someone > was_in_welcome = true"

      • Add an exclusion condition so users who already completed the Welcome Flow do not re-enter.

  • Create a Separate “Welcome Flow – Returning Users” Flow
    • Trigger: "Added to Segment" → Select “Returning to Welcome Flow”`
    • Flow Actions:
      • Conditional Split (Check welcome_step Property):
        • If "welcome_step" = 1 → Send them the first Welcome email.
        •  If "welcome_step" = 2 → Send them the second Welcome email.
        • If "welcome_step" = 3 → Send them the third Welcome email.
        • Etc.
    • ​After the last email in this flow, add an “Update Profile Property”:
      • "return_to_welcome" = "false" (Prevents them from looping back again.)

 Why This Works

  • Prevents all purchasers from re-entering Welcome Flow.
  • Only those who were originally in Welcome Flow return.
  • Users continue from the correct step, rather than restarting.
  • No duplicate entries or infinite loops.

I hope this helps solve your issue! If you need additional help implementing this please let me know. 


Forum|alt.badge.img
  • Author
  • Contributor I
  • 2 replies
  • February 9, 2025

Wow! thanks for the detailed answer and explanation. While I see this will work it feels like a huge mess to maintain as I’ll need to have several duplicates of my welcome flow and anytime I want to make an update I’ll need to do it to all duplicated flows.  I may want to take them out and back to the welcome flow several times.

I still can’t believe there isn’t a cleaner way to do this within Klaviyo.  This seems like a common issue when users are making multiple actions, and making small purchases along the way to the main product being sold.

Would there be a way to use a webhook and small external application to manually add them to the top of a flow?  I’m not sure this is supported by the API.

My understanding is that “add past profiles” to the top of a flow manually they will skip over any messages in the flow they already received.  If this is true, it doesn’t make sense why you can’t automatically add someone back to the flow.


 


zacfromson
Problem Solver III
Forum|alt.badge.img+1
  • 2025 Champion
  • 14 replies
  • February 10, 2025

Thanks for the great follow-up question! It would be ideal if Klaviyo could automatically re-enroll users back into a flow after they leave, rather than requiring segmentation workarounds. However, since Klaviyo does not allow re-entry into the same flow at the same step, a workaround is necessary.

 

Automating the Process with an External System

Since you mentioned an external application (e.g., webhook, API, or automation script), here’s how you could automate re-entry into the Welcome Flow without needing a manual segment export/import.

Set Up a Webhook in Klaviyo

  • At the end of the Post-Purchase Flow, instead of just updating profile properties, send a webhook request to a server or an automation tool (Zapier, Make, or a custom script).
  • This webhook should store the user’s progress and trigger re-entry logic.

Use Klaviyo’s API to Automate Re-Entry

Klaviyo’s Profile API allows updating profile properties and adding users to new segments/flows.

  • Example API Call to Re-Add Users to the Welcome Flow

curl --request POST \
  --url 'https://a.klaviyo.com/api/v1/flow-trigger' \
  --header 'Authorization: Klaviyo-API-Key' \
  --header 'Content-Type: application/json' \
  --data '{
    "flow_id": "your_welcome_flow_id",
    "email": "customer@example.com",
    "properties": {
      "resume_welcome_step": 3
    }
  }'

  • This API re-enrolls the user into a new Welcome Flow while preserving their progress (resume_welcome_step).

Automate This with Zapier or a Backend Script

  • If you don’t want to manually trigger this, use Zapier:
  • Trigger: “Profile Updated in Klaviyo” (when return_to_welcome = true)
  • Action: “Trigger Klaviyo Flow via API”
  • If using a backend app, simply set up a cron job or event listener to watch for return_to_welcome = true and trigger the API re-entry.

 

I would also note, that a lot if times after someone purchases it could make sense to move them to a post-purchase flow rather than bringing them back to the welcome series. This is something to also consider here. 

If you have any more questions please let me know!


Forum|alt.badge.img
  • Problem Solver II
  • 13 replies
  • February 10, 2025

Hey ​@Joelh,

Another way to simplify the process is to add a conditional split with a delay between emails. That way, if a contact places an order between email #1 and email #2, then a delay is added (long enough to go through your post-purchase flow) and the email chain is resumed. It would look similar to this:

Just bear in mind that there should be no flow filters regarding purchasing behaviour. Also, the conditional split needs some tweaking after email #2 as the time frame of the purchase needs to be between the previous email and the new one.

This is the most simple approach that is also somewhat scalable.

 

All best,

Andrés @ Melusine Studio // Klaviyo Master Gold

melusine.studio


Forum|alt.badge.img
  • Author
  • Contributor I
  • 2 replies
  • February 10, 2025

Thanks for another detailed explanation!