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 email | Dynamic email |
|---|---|
| Same products shown to everyone | Products personalised to each recipient's history |
| One hero image for all | Different hero images by gender, location, or segment |
| Same copy for every subscriber | Conditional text based on customer tier or behaviour |
| Fixed discount for everyone | Tiered 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.
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:
- Go to Content > Products in Klaviyo
- Confirm your products are listed with correct images, titles, prices, and URLs
- Check that product categories and collections are properly synced
- 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:
- Open the email in Klaviyo's drag-and-drop editor
- From the content blocks panel, drag a Product Block into your email layout
- Click on the block to configure it
- Choose the product feed source
Feed source options
| Source | Best for | How it works |
|---|---|---|
| Dynamic (event data) | Flows | Pulls products from the trigger event (e.g., abandoned cart items) |
| Personalised recommendations | Campaigns and flows | Uses Klaviyo's AI to recommend products based on purchase history |
| Bestsellers | Campaigns | Shows your top-selling products from a selected time period |
| New arrivals | Campaigns | Shows recently added products from your catalogue |
| Custom collection | Campaigns | Shows products from a specific Shopify collection |
Configuring the product block
- Select the number of products to display (typically 3-6)
- Choose the layout — grid, list, or single product
- Configure which product attributes to show (image, title, price, description)
- Set the CTA button text ("Shop Now", "View Product")
- 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.
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
- Click on any content block in the email editor
- In the block settings, find the Display Conditions or Show/Hide option
- Add a condition based on profile properties, segment membership, or event data
- 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:
- Use Klaviyo's preview mode — preview the email as specific customer profiles to verify that dynamic content renders correctly
- Test with different profiles — check profiles with different properties (VIP vs standard, male vs female, UK vs international)
- Test fallbacks — verify that fallback content appears correctly when dynamic data is missing
- Send test emails — send test emails to yourself using different profile contexts
- 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.
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.
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.

