Hello, I have different guides that clients can download, and each guide has its own flow. How can I configure the flows so that clients receive the guides they download but that the flows do not start at the same time? If someone signs up for two lists, they can complete one flow first, and the next one starts when the current one is finished.
A great question and a head scratcher as Klaviyo doesnโt natively support chaining flows!
I think Iโve come up with a solution to your use-case but please review my logic. Itโs a lengthy description and looks complicated, so please bear with me.
If others on here have a simplified approach, Iโd love to hear it!
Approach
Tag profiles using a custom property called guides_downloaded which is a list data-type so it can hold many values (for each guide).
On a guideA form submission, set guide_downloaded to the value guideA_start. On a guideBย form submission, set guide_downloaded to the value guideB_start
Create two segments - one for guideAย and one forย guideB - based on the custom properties. Letโs call these guideA_in_flow and guideB_in_flow. Example guideA_in_flow segment below for a guideA form submission. Swap Aโs to โBโs for the guideB segment
Create two flows triggered by new members to these segments: guideA_flow and guideB_flow. The last step in each flow will update theย guides_downloaded custom property.For the guideA flow remove the value guideA_start and add the valueย guideA_end. For the guideBย flow remove the value guideB_start and add the valueย guideB_end. This tags their profile as having completed the respective flowsย
Letโs see how this would work with the possible scenarios:
Contact downloads only guideA
form submission setsย guide_downloaded to [โguideA_startโ]. Brackets and quotes are how a list is stored in Klaviyo
Contact is added to the guideA_in_flow segment becauseย guide_downloaded containsย guideA_start (true) AND (does not containย guideB_startย (true) ORย contains guideB_endย (false) ย
Contact moves through the flow and at the last step - anย update custom property - the value of theย guides_downloaded removes [โguideA_startโ] and adds [โguideA_endโ]ย . The update means they are removed from theย guideA_in_flow segment.
All the above is similar for a contact who only downloads guideBย
Contact downloads guideA, completes the flow and thenย downloads guideB
Form submission adds guideB_start to guide_downloaded so it becomesย [โguideA_endโ,โguideB_startโ].ย
Contact is added to guideB_in_flow segment because guides_downloaded containsย guideB_start (true) AND (guides_downloadedย doesnโt containย guideA_start (true as it was updated to guideA_end when they exited the A flow) ORย guides_downloaded containsย guideB_end (false))
Contact moves through the flow and at the last step - anย update custom property - the value of theย guides_downloaded removes [โguideB_startโ] and adds [โguideB_endโ]ย . The update means they are removed from theย guideB_in_flow segment.
All the above is similar for a contact who completes the guideB flow first then starts the guideAย flow
Contact downloads guideA and thenย downloads guideB while still in the A flow
Form submission adds guideB_start to guide_downloaded so it becomesย [โguideA_startโ,โguideB_startโ].ย
Contact does NOT enterย guideB_in_flow segment (and therefore not the guideB flow) because guides_downloaded containsย guideB_start (true) AND (guides_downloadedย doesnโt containย guideA_start (false) ORย guides_downloaded containsย guideA_end (false))
The contact will only enter the guideB flow when they are added to the guideB_in_flow segment. That will occur when theyโve completed the GuideA flow i.eย guides_downloaded containsย guideB_start (true) AND (guides_downloadedย doesnโt containย guideA_start (true as it was updated to guideA_end when they exited the A flow)ย ORย guides_downloaded containsย guideA_end (true))
Phew! I think I will work, but please check my thinking and test!
A great question and a head scratcher as Klaviyo doesnโt natively support chaining flows!
I think Iโve come up with a solution to your use-case but please review my logic. Itโs a lengthy description and looks complicated, so please bear with me.
If others on here have a simplified approach, Iโd love to hear it!
Approach
Tag profiles using a custom property called guides_downloaded which is a list data-type so it can hold many values (for each guide).
On a guideA form submission, set guide_downloaded to the value guideA_start. On a guideBย form submission, set guide_downloaded to the value guideB_start
Create two segments - one for guideAย and one forย guideB - based on the custom properties. Letโs call these guideA_in_flow and guideB_in_flow. Example guideA_in_flow segment below for a guideA form submission. Swap Aโs to โBโs for the guideB segment
Create two flows triggered by new members to these segments: guideA_flow and guideB_flow. The last step in each flow will update theย guides_downloaded custom property.For the guideA flow remove the value guideA_start and add the valueย guideA_end. For the guideBย flow remove the value guideB_start and add the valueย guideB_end. This tags their profile as having completed the respective flowsย
Letโs see how this would work with the possible scenarios:
Contact downloads only guideA
form submission setsย guide_downloaded to [โguideA_startโ]. Brackets and quotes are how a list is stored in Klaviyo
Contact is added to the guideA_in_flow segment becauseย guide_downloaded containsย guideA_start (true) AND (does not containย guideB_startย (true) ORย contains guideB_endย (false) ย
Contact moves through the flow and at the last step - anย update custom property - the value of theย guides_downloaded removes [โguideA_startโ] and adds [โguideA_endโ]ย . The update means they are removed from theย guideA_in_flow segment.
All the above is similar for a contact who only downloads guideBย
Contact downloads guideA, completes the flow and thenย downloads guideB
Form submission adds guideB_start to guide_downloaded so it becomesย [โguideA_endโ,โguideB_startโ].ย
Contact is added to guideB_in_flow segment because guides_downloaded containsย guideB_start (true) AND (guides_downloadedย doesnโt containย guideA_start (true as it was updated to guideA_end when they exited the A flow) ORย guides_downloaded containsย guideB_end (false))
Contact moves through the flow and at the last step - anย update custom property - the value of theย guides_downloaded removes [โguideB_startโ] and adds [โguideB_endโ]ย . The update means they are removed from theย guideB_in_flow segment.
All the above is similar for a contact who completes the guideB flow first then starts the guideAย flow
Contact downloads guideA and thenย downloads guideB while still in the A flow
Form submission adds guideB_start to guide_downloaded so it becomesย [โguideA_startโ,โguideB_startโ].ย
Contact does NOT enterย guideB_in_flow segment (and therefore not the guideB flow) because guides_downloaded containsย guideB_start (true) AND (guides_downloadedย doesnโt containย guideA_start (false) ORย guides_downloaded containsย guideA_end (false))
The contact will only enter the guideB flow when they are added to the guideB_in_flow segment. That will occur when theyโve completed the GuideA flow i.eย guides_downloaded containsย guideB_start (true) AND (guides_downloadedย doesnโt containย guideA_start (true as it was updated to guideA_end when they exited the A flow)ย ORย guides_downloaded containsย guideA_end (true))
Phew! I think I will work, but please check my thinking and test!
Hello @bluesnapperย I can't read the whole solution. ๐ Maybe you can send it again or it should appear after moderation? Thank you so much for your help!