Dynamic Content & Segmentation

One campaign, a version for every audience

Segment any block right in the editor, preview the whole email as any subscriber, and export conditional logic your ESP runs natively: AMPscript, Jinja, Liquid, and more.

No code. No guesswork. No "send a test to myself five times."

Summer Sale · one campaign
3 audiences
In the editor

Segment a block in seconds

Segmentation happens where the content is. Select any block, add a variant, and describe who should see it: a field, an operator, a value. Watch it happen, then try it yourself:

Step 1: this offer block goes to everybody.

Let’s give VIP customers their own version. Hit "Add variant" in the panel.

Summer Sale · Better Email editor
hero-summer.jpg

Spring picks for you

Fresh arrivals, picked weekly

Shop new in

Selected block

SegmentationEverybody

This block shows the same content to every recipient.

Variants live on the block

No separate campaign logic to manage. Select a block, add a variant, done. The targeting travels with the content it belongs to.

A fallback, always

Every segmented block keeps an "Everybody else" version, so no recipient ever gets an empty module, even when they match no segment.

Mix fields and saved segments

Build conditions from recipient fields, or drop in an organization-wide saved segment like "VIP customers" as a single chip.

Rule logic

Rules your whole team can read

Conditions are plain building blocks: a recipient field, an operator, a value. Group them with ALL or ANY, flip AND to OR, negate with NOT. Powerful enough for real targeting, readable enough for review. The audience and exported code update as you click.

Saved segment · VIP customers

Group · match conditions below

Ifplanistext
ordersgreater thannumber

Would match 2 of 8 example recipients

Anna

gold · 24 orders

Marco

gold · 3 orders

Sofie

silver · 11 orders

Noah

free · 0 orders

Priya

gold · 15 orders

Liam

silver · 2 orders

Emma

free · 1 orders

Yuki

gold · 8 orders

{% if plan == 'gold' and orders > 10 %}
  <!-- VIP offer block -->
{% endif %}

The eight recipients above are illustrations. Better Email never sees your subscriber list: rules export as this code and your ESP evaluates them against the real list at send time.

Need more? Save any rule as a reusable segment for the whole organization, or drop to raw ESP code for the edge cases.

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
Adobe CampaignJavaScript templates
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 campaign exports correctly to each one.

See all ESP integrations
Preview profiles

Preview the whole email as anyone

Preview profiles are reusable, made-up sample recipients, invented for testing and never imported from your list. Pick one and the entire email re-renders: merge tags fill in, every block resolves to the variant that profile matches, and blocks they shouldn't see disappear. What you see is exactly what Anna, Noah, or everybody else will get.

Preview as:

Hi Anna 👋

Here's what's new this week.

VIP customers

Gold early access

30% off everything, 48 hours before anyone else

Shop now
📱

Open the app for member pricing

Preview profile

ALAnna LindbergGold member since 2021
first_nameAnnatext
plangoldtext
app_usertrueboolean
VIP customers

Resolves to

Offer blockVIP customers
App bannerShown

Reusable, shareable profiles

Save a profile for one campaign or for the whole workspace. "Anna, Gold member" means the same thing in every campaign your team previews.

Coverage for every path

Better Email can generate profiles from the email itself, so every variant path has a profile that reaches it. No branch ships unseen.

"Everybody else" built in

One click shows the email with zero segments matched: the pure-fallback version that recipients outside every audience will get.

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 campaign 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
Personalization toolkit

Your data's structure, not your data

Better Email syncs recipient field definitions from your ESP: names, types, structure. The actual subscriber values (emails, names, attributes) never leave it. Segments export as code your ESP evaluates at send time, and previews run on made-up profiles. Powerful segmentation, no personal data handled.

Recipient fields

A catalog of field definitions 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|*

No personal data, by design

Better Email stores field names and types, never subscriber values. Rules ship as native code and run inside your ESP, so emails, names, and attributes stay where they already live.

loyalty_tier · TEXTsynced
country · TEXTsynced
[email protected]stays in your ESP
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.
  • Automatic image cropping and feed logic
    Liquid and Cloudflare Workers do the heavy lifting: feed images are cropped to fit your modules on the fly, and you can write logic on feed fields, like a sale badge that appears when a price drops.
  • 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 segment blocks visually, preview the email as any audience, and export native AMPscript, Jinja, or Liquid. No hand-coding required.

Request a demo