Skip to main content

Create a quiz results email flow in Klaviyo

Send customers their quiz results, recommended products, and a link back to their personalized results page.

Written by Ivana

A quiz results flow lets you send a personalized email every time a customer completes your quiz. Using the quiz completed event, you can dynamically add their recommended products and results page URL to the email.


Create a quiz results flow

Before you start, make sure:

  • Your quiz has been completed at least once so its data is available in Klaviyo.

  • You're using a metric-triggered flow.

  • The trigger is the quiz completed event for the specific quiz.

Important: Product recommendation data is only available through the quiz completed event. List and segment triggered flows can't access the recommended products from a specific quiz completion.

  1. In Klaviyo, go to Flows → Create flow → Create from scratch.

  2. Name your flow and click Create flow.

  3. Under Select a trigger, choose Metric.

  4. Select the completed event for your quiz, for example Octane: quiz completed: First Quiz.

  5. Save the trigger.

Customers will enter this flow each time the quiz completed event is added to their profile.

Preview your quiz data

Before building your email, you can preview the data Octane AI sends to Klaviyo.

  1. Add an email to your flow and open it in the editor.

  2. Click Preview & test.

  3. Open Preview Event Info to see data from a real quiz completion.

  4. Click any value to copy its variable.

You can use these variables to add recommended products, quiz results, and other quiz data to your email.

Add recommended products

There are two ways to display recommended products in your quiz results email.

Option 1: Use a dynamic table

A dynamic table is the best option when the number of recommended products can vary between quiz results.

  1. Add a Table block to your email.

  2. In Table settings, set the table type to Dynamic.

  3. In Row collection, enter: event.products_all

  4. In Row alias, enter a name such as: quiz

  5. In the text column, use: {{ quiz.title }}

  6. In the image column, use quiz.image as the dynamic image variable.

  7. Add any other product information you want to display, such as: {{ quiz.price_formatted }} or {{ quiz.description }}

  8. Save and preview your email.

To limit the number of products displayed, add a slice filter to the Row collection.

For example: event.products_all|slice:'3' - this displays up to three recommended products.

Note: Dynamic tables support text and image blocks, so your styling options are more limited than with regular Klaviyo content blocks.

Option 2: Use fixed product slots

Use fixed product slots when every quiz result displays the same number of products, and you want more control over the email design.

  1. Add a Section to your email and create one column for each recommended product.

  2. Add an Image, Text, and Button block to each column.

  3. For the first product image, use: {{ event.products_all.0.image|default:'' }}

  4. For the first product title, use: {{ event.products_all.0.title|default:'' }}

  5. For the first product button URL, use: {{ event.products_all.0.link|default:'' }}

  6. Repeat for each product, changing the product number:

  • 0 = first product

  • 1 = second product

  • 2 = third product

For example:

{{ event.products_all.1.title|default:'' }} will display the second recommended product's title.

Note: Product buttons link to the product page. Adding products directly to the cart from the email isn't supported.

Add a results page button

You can also add a button that takes each customer back to their personalized quiz results page.

Add a Button block and use this as the button URL: {{ event|lookup:'quiz results URL'|default:'' }}

The link will automatically point to the results page associated with the quiz completion that triggered the flow.

Add a button inside a dynamic table

Dynamic tables don't support regular Button blocks. If you need a button inside a dynamic table, add it using HTML in a text block.

Open the text block's Source code (</>) editor and add your button HTML, using:

{{ event|lookup:'quiz results URL'|default:'' }} as the destination URL.
​

[Add a custom HTML button]

If you're using a dynamic table, you can add a button using HTML inside a text block.

Open the text block, click the Source code (</>) icon, and paste:

<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<table cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 2px;" bgcolor="#262941">
<a
href="{{ event|lookup:'quiz results URL'|default:'' }}"
target="_blank"
style="padding: 8px 12px; border: 1px solid #262941; border-radius: 2px; font-family: Helvetica, Arial, sans-serif; font-size: 14px; color: #ffffff; text-decoration: none; font-weight: bold; display: inline-block;"
>
See my results
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>

You can customize:

  • Button color: Change bgcolor="#262941"

  • Border color: Change border: 1px solid #262941

  • Text color: Change color: #ffffff

  • Font: Change the value after font-family:

  • Button text: Replace See my results

  • Link: Replace the value inside href="..." if you want the button to link somewhere else

The default link uses the customer's quiz results URL, so each customer is taken back to their personalized results page.

Tip: Make larger changes to the code only if you're comfortable working with email HTML.

Preview and test your email

Before setting your flow live:

  1. Click Preview & test and make sure the recommended products and results page link display correctly.

  2. Send a test email to yourself, or complete the live quiz using a new email address.

  3. Check your product images, titles, links, and results page button.

  4. Finish styling your email and set the flow live.

Did this answer your question?