Dynamic Content & Segmentation

Personalization in your ESP's native language

Design segments and content variants visually. Better Email writes the conditional logic for you — as real AMPscript, Jinja, or Liquid that runs natively in your ESP.

No proxy tags. No middleware. No rewriting personalization by hand after export.

The differentiator

One segment. Every ESP's native syntax.

Most tools handle personalization with proprietary tags that only work inside their own sending platform. Better Email is different: you build segments and variants visually, and the export contains real conditional code in the language your ESP already speaks. It runs natively — no translation layer, nothing to fix by hand.

Export preview — segment: VIP customers
Rule:loyalty_tierequals"Gold"
AMPscriptSalesforce Marketing Cloud
%%[ IF @loyalty_tier == "Gold" THEN ]%%
  <!-- VIP hero module -->
%%[ ELSE ]%%
  <!-- Default hero module -->
%%[ ENDIF ]%%
LiquidBraze / Customer.io
{% if custom_attribute.${loyalty_tier} == 'Gold' %}
  <!-- VIP hero module -->
{% else %}
  <!-- Default hero module -->
{% endif %}
Django/JinjaKlaviyo
{% if person|lookup:'loyalty_tier' == 'Gold' %}
  <!-- VIP hero module -->
{% else %}
  <!-- Default hero module -->
{% endif %}

What your export contains, per ESP

Better Email generates each email service provider's native conditional syntax on export. The same visual segment becomes the right code for wherever you send.

Salesforce Marketing CloudAMPscript
KlaviyoDjango/Jinja
BrazeLiquid
Customer.ioLiquid
MailchimpMerge-tag conditionals
HubSpotHubL
SAS CI 360JavaScript

Why native matters

Because the logic is evaluated by your ESP at send time, personalization works with your real subscriber data, your existing sending setup, and your ESP's testing tools. Switch ESPs or send from several? The same email exports correctly to each one.

See all ESP integrations
Segmentation

Saved segments

Define an audience once, reuse it everywhere. Saved segments are named, organization-wide audience definitions with rules per integration — so "VIP customers" means the same thing in every email your team creates.

Organization-wide and reusable

Segments are shared across your organization. Define "New subscribers" once and every editor targets the exact same audience — no copy-paste logic, no drift.

Simple rules, no code required

Build rules from attribute, operator, and value: equals, not equals, greater than, less than, exists. Anyone on the team can define an audience.

Custom rules for power users

Need something more advanced? Write raw ESP code as a custom rule — full AMPscript, Liquid, or Jinja expressions, exactly as your ESP will evaluate them.

Per-integration rules

One segment can carry different rules per ESP integration, so the same audience definition exports correctly to Salesforce Marketing Cloud, Klaviyo, Braze, and beyond.

Saved segmentsOrganization
VIP customersSimple rule
loyalty_tierequalsGold
New subscribersSimple rule
days_since_signupless than30
Lapsed buyersCustom rule
{% if last_order_days > 90 and total_orders > 0 %}
Has app installedSimple rule
app_user_idexists
Hero Banner — variants3 variants
VIP customersVariant 1
New subscribersVariant 2
Everyone elseDefault fallback
Dynamic content

One email, a variant for every audience

Any module or block in your email can carry content variants. Show VIP customers an exclusive offer, greet new subscribers with an onboarding message, and let everyone else see the default — all in a single email.

  • Target variants with saved segments
    Attach any saved segment to a variant. The right audience sees the right content, consistently across every campaign.
  • Always a default fallback
    Every variant set includes a default, so no recipient ever sees an empty module — even when they match no segment.
  • Exports as native conditionals
    Variants become IF/ELSE blocks in your ESP's own syntax, evaluated at send time against real subscriber data.
Personalization toolkit

Built on your real subscriber data

Segmentation and personalization are only as good as the data behind them. Better Email keeps your recipient data, tokens, and previews in sync with your ESP.

Recipient fields

A catalog of subscriber data fields powering segmentation and personalization. Sync fields automatically from your ESP integration, add them manually, or manage them through the Better Email API.

first_namesynced
loyalty_tiersynced
last_order_daysAPI
citymanual

Merge tags

Admins decide which recipient fields can be inserted as merge tags. Editors drop first name, loyalty tier, or points balance anywhere in the email, and on export it becomes the right merge-tag syntax for your ESP — automatically.

{First name}%%FirstName%%
{First name}{{ first_name }}
{First name}*|FNAME|*

Preview profiles

Named sample-recipient profiles let you preview the email exactly as a given segment or recipient would see it — variants resolved, merge tags filled in — before anything is exported.

AG

Anna — Gold tier

Previewing as VIP customer

NS

Noah — signed up 5 days ago

Previewing as new subscriber

Content feeds

Dynamic content from your product data

Import product or content data to drive dynamic, repeatable content — like product grids that fill themselves from your catalog instead of being assembled by hand.

  • XML and JSON feeds
    Point Better Email at your existing product or content feed and use its fields directly in your modules.
  • Native Klaviyo catalog support
    Connect your Klaviyo product catalog directly — no separate feed setup required.
  • AI-assisted field mapping
    Betty helps map feed fields — title, price, image, URL — to your modules, so setup takes minutes instead of an afternoon of manual matching.
Product gridFeed: spring-catalog.json
{ "title": "Trail Jacket", "price": "89.00", "image": "…", "url": "…" }

Trail Jacket

Ridge Boots

Summit Pack

Personalization that ships in your ESP's language

See how your team can design segments visually and export native AMPscript, Jinja, or Liquid — no hand-coding required.

Request a demo