Generic emails get generic results. When every subscriber receives identical content — the same products, the same messaging, the same offers — your emails feel like they were written for no one in particular. And customers notice.

Dynamic content blocks in Klaviyo let you personalise emails at scale. Instead of creating ten different email templates for ten customer segments, you build one template with dynamic sections that adapt based on each recipient's data, behaviour, and preferences.

The result is emails that feel individually crafted — showing each customer the products they are most likely to buy, the content most relevant to their interests, and the offers most likely to convert. We use dynamic content extensively across every Klaviyo account we manage, and it consistently drives higher click rates, better conversion, and more revenue per email.

This guide covers every type of dynamic content available in Klaviyo and walks through practical implementation step by step.

What is dynamic content?

Dynamic content is email content that changes automatically based on who is receiving the email. Rather than showing static, fixed content to everyone, dynamic blocks adapt to each recipient using their profile data, purchase history, browsing behaviour, and segment membership.

Here is the difference in practice:

Static emailDynamic email
Same products shown to everyoneProducts personalised to each recipient's history
One hero image for allDifferent hero images by gender, location, or segment
Same copy for every subscriberConditional text based on customer tier or behaviour
Fixed discount for everyoneTiered discounts based on customer value

Dynamic content does not require technical skills. Klaviyo's drag-and-drop editor makes it accessible to marketers who have never written a line of code, though some advanced features do use Klaviyo's Django-based template language for more granular control.

Types of dynamic content in Klaviyo

Klaviyo offers several types of dynamic content, each suited to different use cases:

1. Dynamic product blocks

These blocks automatically populate with products from your catalogue based on configurable rules. You can show products based on items the customer recently viewed, items in their abandoned cart, bestsellers from a specific collection, products related to their last purchase, or personalised recommendations based on purchase history.

2. Conditional show/hide blocks

These blocks appear or disappear based on conditions you define. Show a VIP discount only to VIP segment members. Hide a free shipping banner for customers who already qualify. Show different hero images based on gender or location.

3. Template variables (personalisation tags)

Insert dynamic data points into your email copy — first name, last purchased product, order total, custom profile properties, and more. These adapt every piece of copy to the individual recipient.

4. Event-driven content

In flows, dynamic content can pull data from the triggering event. In a cart abandonment flow, the email automatically shows the exact products left in the customer's cart, including images, prices, and links back to the product pages.

Types of dynamic content blocks in Klaviyo
Klaviyo offers product blocks, conditional logic, template variables, and event-driven content for comprehensive personalisation.

Step 1: Set up your product catalogue

Dynamic product blocks require a synced product catalogue. If you are using Shopify, your catalogue syncs automatically through the Klaviyo integration. Verify the sync is working:

  1. Go to Content > Products in Klaviyo
  2. Confirm your products are listed with correct images, titles, prices, and URLs
  3. Check that product categories and collections are properly synced
  4. If products are missing, go to Integrations > Shopify and trigger a manual sync

A complete, accurate product catalogue is essential. If product images are missing or prices are incorrect, your dynamic product blocks will display incomplete or misleading information. For more on ensuring your Shopify integration is properly configured, see our essential Klaviyo flows guide.

Step 2: Add dynamic product blocks

Here is how to add a dynamic product block to a Klaviyo email:

  1. Open the email in Klaviyo's drag-and-drop editor
  2. From the content blocks panel, drag a Product Block into your email layout
  3. Click on the block to configure it
  4. Choose the product feed source

Feed source options

SourceBest forHow it works
Dynamic (event data)FlowsPulls products from the trigger event (e.g., abandoned cart items)
Personalised recommendationsCampaigns and flowsUses Klaviyo's AI to recommend products based on purchase history
BestsellersCampaignsShows your top-selling products from a selected time period
New arrivalsCampaignsShows recently added products from your catalogue
Custom collectionCampaignsShows products from a specific Shopify collection

Configuring the product block

  1. Select the number of products to display (typically 3-6)
  2. Choose the layout — grid, list, or single product
  3. Configure which product attributes to show (image, title, price, description)
  4. Set the CTA button text ("Shop Now", "View Product")
  5. Optionally add a fallback — products to show if the dynamic feed returns no results

Always configure fallback products. Without them, recipients with no browsing history or purchase data will see an empty product block, which looks broken and unprofessional.

Configuring dynamic product blocks in Klaviyo editor
Configure product feed source, layout, and fallback options in the Klaviyo email editor.

Step 3: Use conditional show/hide logic

Conditional logic lets you show or hide entire email sections based on recipient data. This is how you create truly personalised experiences within a single template.

Setting up show/hide conditions

  1. Click on any content block in the email editor
  2. In the block settings, find the Display Conditions or Show/Hide option
  3. Add a condition based on profile properties, segment membership, or event data
  4. Set whether the block should show when the condition is true or false

Practical show/hide examples

Gender-based content: Show women's products when profile property "Gender" equals "Female". Show men's products when "Gender" equals "Male". Show unisex products when "Gender" is not set.

Customer tier content: Show a VIP discount block only when the customer is in the "VIP" segment. Show a standard welcome offer when the customer has placed fewer than 2 orders. Hide new customer messaging when the customer has placed 3 or more orders.

Location-based content: Show free UK shipping banner when country equals "United Kingdom". Show international shipping rates when country does not equal "United Kingdom".

For more on how segmentation powers dynamic content, see our guide to abandoned cart email sequences and our Mailchimp vs Klaviyo comparison.

Step 4: Use template variables and tags

Klaviyo's template language uses Django-style tags to insert dynamic data into your email copy. Here are the most useful ones:

Basic personalisation

Insert the customer's first name with a fallback so that the greeting reads "Hi Sarah" or "Hi there" if the name is not known. This simple personalisation measurably improves open rates and engagement.

Event data in flows

In flow emails, access trigger event data to personalise content. In a cart abandonment flow, you can reference the abandoned product name, price, and image URL directly in your email copy. In a browse abandonment flow, reference the viewed product details.

Conditional text blocks

Use if/else logic to show different text based on profile properties. Show different greetings based on whether the customer has purchased before. Display different CTAs based on VIP status. Reference specific past purchases in cross-sell messaging.

Date formatting

Format dates dynamically for order confirmations, expected delivery dates, or subscription renewal reminders. This ensures dates appear in the correct format for your audience (day-month-year for UK customers).

Step 5: Preview and test

Dynamic content must be tested thoroughly because it behaves differently for different recipients:

  1. Use Klaviyo's preview mode — preview the email as specific customer profiles to verify that dynamic content renders correctly
  2. Test with different profiles — check profiles with different properties (VIP vs standard, male vs female, UK vs international)
  3. Test fallbacks — verify that fallback content appears correctly when dynamic data is missing
  4. Send test emails — send test emails to yourself using different profile contexts
  5. Check mobile rendering — dynamic product grids can behave differently on mobile devices

Always test the worst-case scenario: a profile with no purchase history, no gender data, no location, and no segment membership. Your email should still look professional and make sense even when every dynamic element falls back to its default.

Testing dynamic content in Klaviyo preview mode
Always preview dynamic emails as multiple customer profiles to verify content renders correctly for every scenario.

Practical use cases

Cart abandonment with dynamic products

The most common use of dynamic content is in cart abandonment flows. The email automatically shows the exact products the customer left in their cart, with images, titles, prices, and direct links to purchase. No manual input needed — Klaviyo handles everything based on the trigger event data.

Post-purchase cross-sell

After a customer buys a specific product, show dynamic recommendations for complementary items. If they bought a jacket, show matching trousers. If they bought coffee, show mugs or a grinder. Klaviyo's recommendation engine handles the product selection automatically based on purchase patterns across your customer base.

Seasonal campaigns with gender splits

Create one email template for a seasonal sale with conditional blocks that show different hero images and product selections based on gender. This halves your workload whilst doubling the relevance of every email sent.

Location-based shipping messaging

Use conditional blocks to show different shipping information based on the customer's country. UK customers see free shipping messaging. International customers see estimated delivery times and any applicable surcharges. This removes a common barrier to conversion.

VIP versus standard messaging

In campaign emails, show VIP customers their exclusive early-access discount whilst standard customers see the regular offer. Same email template, different experiences, different conversion drivers.

Advanced techniques

Nested conditions

Combine multiple conditions for precise targeting. Show a specific product block only to female VIP customers in the UK who have purchased skincare in the last 90 days. This level of precision drives significantly higher engagement than broad, generic targeting.

Dynamic countdown timers

Add countdown timers that dynamically calculate the time remaining until a sale ends, a discount expires, or a product launch goes live. These create genuine urgency without requiring manual updates to your email templates.

Custom HTML blocks with template logic

For advanced personalisation beyond what the drag-and-drop editor offers, use custom HTML blocks with Klaviyo's template language. This allows for complex conditional logic, loops through product data, and custom formatting. Most brands will not need this level of complexity, but it is available for those who do.

A/B testing dynamic content

Test different approaches to dynamic content — compare personalised product recommendations against bestsellers, or gender-split content against universal content. This data tells you which dynamic strategies actually drive more revenue for your specific audience. For more on optimising your flows, see our flow optimisation guide.

Advanced dynamic content techniques in Klaviyo
Advanced techniques like nested conditions and custom template logic enable highly precise personalisation.

Common mistakes to avoid

1. No fallback content

If a dynamic product block has no products to show (because the customer has no browsing history, for example), the block will be empty. Always configure fallback products — bestsellers or new arrivals work well — to ensure every recipient sees a complete email.

2. Over-personalising

Using every piece of data you have about a customer can feel invasive rather than helpful. Referencing their specific browsing behaviour in real time crosses a line for many consumers. Keep personalisation helpful and product-focused, not surveillance-focused.

3. Not testing all scenarios

Dynamic content creates many variations of the same email. If you only test with one profile, you may miss issues affecting specific customer types. Test with profiles that represent each major segment your dynamic content targets.

4. Complex templates that break

The more dynamic elements you add, the more fragile the template becomes. A conditional block with incorrect logic can hide essential content from some recipients. Keep your dynamic logic as simple as possible and test thoroughly before setting live.

5. Ignoring performance data

Dynamic content is not always better than static content. If your personalised product recommendations consistently underperform compared to a curated bestseller list, the data is telling you something. Monitor click-through rates on dynamic blocks and adjust your strategy accordingly.


Dynamic content transforms email marketing from broadcasting to conversation. Instead of sending one message to everyone, you send the right message to each individual — the products they want, the information they need, and the offers that are most likely to convert them.

Start with the highest-impact applications: dynamic product blocks in your cart abandonment and browse abandonment flows, then expand to conditional content in campaigns. Each dynamic element you add makes your emails more relevant and your revenue per email higher.

Need help implementing dynamic content in your Klaviyo emails? See our Klaviyo services or get in touch for a free account audit.