How to Personalize Klaviyo with Octane AI Data

#data #integrations #klaviyo #personalization #quiz

Mark Baek avatar
Written by Mark Baek
Updated over a week ago

Octane AI lets you turn customers' quiz sessions into actionable data in Klaviyo, enabling brands to implement powerful, personalized email marketing.

Taking full advantage of Octane AI's Klaviyo integration requires using Klaviyo's system of template tags & variable syntax.

πŸ’‘ What you'll learn

What are dynamic variables?

Variables are bits of code you can insert into email templates that will turn into customer data when an email is sent.

In Klaviyo, variables are typed out inside of curly braces {{ }} which tells Klaviyo that any text inside will be variable code.

Hi {{ first_name }},

Thanks for subscribing!

In this example, {{ first_name }} is a variable that will turn into the first name listed in the subscriber profile that receives the email. If Klaviyo doesn't find a first name, the variable will turn into a blank space.

Hi {{ first_name|default:'there' }},

Thanks for subscribing!

We can make an edit to the variable inside of the {{ }}. By inserting |default:'there', the variable will now know to insert "there" if no first name is found in the receiving profile.

This powerful system can be used with the quiz data Octane AI sends over to replace portions of an email template with product information, quiz answers & more.

If {{ first_name|default:'there' }} is entered into an email, Klaviyo will replace the text {{ first_name|default:'there' }} with the profile's first name.

first_name turns into their first name, while default:'there' lets the email know to insert "there" if no first name data is found.

Leveraging this system of variables unlocks personalization of Klaviyo flows & more.

πŸ’‘ How does this relate to Octane AI?

When your Octane AI account is connected to Klaviyo, everyone who takes a quiz & submits an opt-in will have their quiz data sent to Klaviyo in real time.

Using variables allows you to turn quiz answers, results & products into personalized email content.

You can also use variables to customize:

  • Flow logic & filters

  • Show/hide content blocks

  • Segments

Using email variables is key to maximizing the impact of quizzes on your Klaviyo campaigns.

How Octane AI sends data

Octane AI data is sent to Klaviyo in two forms:

  • Custom properties: these are non-standard profile properties, such as quiz answers.

  • Quiz completed event: this is a timeline event that appears in someone's profile when Klaviyo detects that they took a quiz.

Custom properties are quiz answers & results that can be used to trigger list flows and inside of filters.

The quiz completed event can specifically be used with a metric flow and allows you to trigger an email flow every time someone finishes a quiz.

Custom properties vs. quiz completed event

If Octane AI sends data in multiple formats, how do you know which one is the right one to use?

The quiz completed event (used to trigger metric flows) is best for post-quiz flows, while custom properties are best for Octane base plan users & welcome flows.

Metric flows can be triggered every time a quiz is completed, but list based flows can only be entered once. On the other hand, custom properties can be used to personalize emails anywhere in Klaviyo, so there's an advantage to using both data types.

πŸ”Ž PROS and CONS: Custom properties


  • Can insert or filter data in any email template.

  • Can be used to segment.


  • Must use segments to trigger list flows.

  • List flows can only be entered once.

  • Can't access product data.

Because Klaviyo only allows profiles to enter list flows once, this means custom properties are a great tool for welcome flows and long term campaigns.

Below is an example of a filter that targets anyone with a quiz result custom property, which means they've made it to the end of the quiz at least once.

πŸ”Ž PROS and CONS: Quiz completed event


  • Trigger flows every time on quiz completion.

  • Contains complete quiz data (products, quiz answers & results).


  • Can only be used in metric flows.

Profiles can enter metric flows every time the targeted event is triggered. In this case, this means every time the "quiz completed" event appears on someone's profile timeline in Klaviyo.

This makes them ideal for post-quiz flows such as ones that send discount codes & results through email.

🎬 VIDEO: Using Quiz Data with Integrations

Learn how quiz data is sent to integrations and how you can control this.

πŸ’‘ Why is this important?

While custom property personalization can be used in any flow, data from the quiz completed event can only be used in a certain type of flow (Metric).

The quiz completed event is required to use product recommendations from quizzes in Klaviyo, so knowing what Octane AI data looks like in Klaviyo will make flow-building a smooth process.

The quiz completed event is available on Octane Plus.

Creating dynamic content in Klaviyo

A dynamic table is a table block that is set to Dynamic in the table settings.

Creating a dynamic table lets you set up a single table block that will automatically pull in data from the quiz completed event and fill out to match the number of products that were recommended.

πŸ“• Setting up a dynamic table:

🎬 VIDEO: Creating Dynamic Email Content with Quiz Data

Use this video to learn how to set up a metric flow triggered by quiz completions.

Step 1: Setting up dynamic table settings

Dynamic tables have two important fields you need to fill:

  • Row collection: this is where we tell the table what the collection of data we want to reference is called.

    • In this case, the products from the quiz is the data group we're targeting.

  • Row alias: this is a nickname we give the row collection. This will be used when adding variables in place of typing out the row collection.

Step 2: Trying out variables in a dynamic table

Once you set up your row collection & alias, you can use the following variables to insert quiz data into a dynamic table.

This is done by following this format:

{{ row alias.variable }}

For example, if I enter quiz for my row alias and want to insert a product page link for each product recommended in a quiz, I would add the variable below to a dynamic table:

{{ }}

πŸ—’οΈ Field

✍️ What to enter

Row collection


The variable event.products_all is how product recommendations are labeled in the quiz completed event Octane AI sends over.

Adding this code into the row collection field will tie the dynamic table to quiz product recommendations.

Row alias

A nickname of your choice, such as quiz or octane.

The row alias is a nickname for the row collection.

As an example, to insert a product image you would only have to type in {{ quiz.image }} instead of the full {{ event.products_all.image }} text.

Dynamic variable reference

πŸ—’οΈ What does it turn into?

✍️ Specific variable





Product page URL




Price (formatted in default currency)








To use this table, add the variable listed here after the row alias or row collection.

For example, {{ quiz.price_formatted }} would be used in the block you want to dynamically insert product prices into.

Outside of a dynamic table, {{ event.products_all.0.price_formatted }} is what the variable would look like for the price of the 1st recommended product.

Limiting dynamic table expansion

Dynamic tables will automatically match however many products a customer saw at the end of a quiz.

To limit the table to 3 products, add |slice:'<insert number here>' such as in this example:


Adding |slice:'2' into the row collection field now limits the dynamic table to 2 total tables overall.

To change this, edit the number. event.products_all|slice:'4' would limit the table to 4 products while event.products_all|slice:'2' would limit the table to 2, and so on.

Here's a glossary on all of the variable filters you can use to power up your flows.

Previewing dynamic emails

Previewing dynamic emails must be done inside of the metric flow created for that email.

If you preview a dynamic email template from the templates page or in another flow, the variables won't recognize the data and will either show up as normal text or turn into blank spaces.

πŸ“• How to preview with dynamic variables:

Step 1: Create a metric triggered flow using a quiz completed event.

Use this video to learn how to set one up.

Step 2: Add an email into the flow.

If you worked on your dynamic template outside of this flow, make sure to bring it into the flow by adding a new email to preview with.

Otherwise, skip this step if your flow already has an email to preview with.

Step 3: Open the email in the template editor and press "Preview and test".

In the classic editor, the preview button is on the left.

Step 4: While previewing, click on any piece of data to copy its exact variable code.

Previewing emails is especially useful since you can copy the variable text for any data shown in the events you're testing with.

Use the arrow icons near the "Previewing with recent event" header to test the email with different quiz completions.

Did this answer your question?