Product feeds

Product emails that build themselves

Point Better Email at your XML or JSON feed. Your product grid fills itself with real titles, prices, images, and discount badges.

XML and JSON

Google Shopping, custom XML, JSON endpoints. If your feed has a URL, Better Email can connect to it.

Betty maps your fields

Betty reads the feed structure and maps title, price, image, URL, and more in seconds. No afternoon of manual work.

Images transformed on the fly

Image workers resize, crop, and draw badges onto product images at request time. Discount percentages, trust badges, brand logos.

Always current at send time

Product data resolves from the feed when your ESP sends the email. Prices and availability are never stale.

Inside the editor

Pick products without leaving the editor

The product picker lives right inside Better Email. Browse and search your full catalog, select the products you want, and confirm. The module builds itself with live feed data.

  • Search across your entire catalog
    Full-text search across product names and descriptions. No scrolling through 40,000 items.
  • Sale prices visible before you pick
    See original and discounted prices in the picker so you know which products have active discounts before inserting them.
  • Hand-pick or let the feed decide
    Use the picker to curate specific products for hero slots. Let the feed auto-populate the rest of the grid.
  • Three layouts, same feed
    Switch between 2-column grid, 3-column grid, and list. Betty maps your fields once and every layout uses the same data.
Better Email
MK
B
Summer Sale
Product Grid
-29%

Shimano Deore Brake Set

£69£49
-11%

Pro Air Cycling Helmet

£89£79

Lightweight MTB Pedals

£34
-21%

Waterproof Saddle Bag

£32£25

Product Grid

Layout

Product image without badge
SAVE 30%
Discount badge
{{ product.thumbnail | imgTag: width: 640,
   draw1_url: badge_url, draw1_width: 240,
   draw1_top: 0, draw1_left: 0 }}

The draw params are composited onto the image by the image worker. No Photoshop. No designer. The discount percentage is calculated from the feed's price fields and rendered per product.

Product image
OUTLET
SAVE 21%
Kopi Cervus
Draw layers
{{ product.thumbnail | imgTag: width: 640,
   draw1_url: ribbon_url,
   draw2_url: badge_url,
   draw3_url: brand_logo_url,
}}

One draw layer: the OUTLET ribbon composited onto the image automatically when the URL contains /outlet/.

Product image
fit: cover
Image crop mode
{{ product.thumbnail | imgTag: width: 640, fit: 'cover' }}

Cover fills the module slot exactly, cropping the image to fit. Best for lifestyle photos where edge-to-edge fill matters.

Image workers

Images that do more than just show the product

Every product image passes through Cloudflare Workers before it lands in the email. Draw anything onto it at request time: discount badges, trust logos, brand marks, ribbons. The transform runs per product, per send. No pre-generated images. No storage overhead.

  • Discount percentage drawn from feed data
    Better Email calculates the exact discount from price and sale_price and draws "SAVE X%" onto the image. Each product gets its own correct number.
  • OUTLET, SALE, NEW: any ribbon you need
    Feed field values and URL patterns trigger ribbons automatically. One module, all your product categories.
  • Cover or pad, per product
    Feed images come in every aspect ratio. Workers fit them to your module dimensions without distortion.
  • Image rollover on hover
    Two product images in the feed automatically enable a hover effect in email clients that support it.
Feed logic

Write logic directly on your feed data

Liquid runs on every product. Calculate discounts, detect product categories, control image dimensions. All without touching your ESP or the feed source.

Discount badge

Calculated from price and sale_price in the feed, drawn onto the image.

Product
SAVE 29%

Kopi Cervus House Blend

£22£16

Image height

One field controls the image height across all products in the module simultaneously.

Product 1
Product 2
Product 3

Body text length

Truncate product descriptions to any length. Consistent card heights, no overflow.

Product

Kopi Cervus House Blend

Single-origin Ethiopian Yirgacheffe, light roast. Notes of bergamot, jasmine, an...

£4980 chars max

All logic lives in the email module template. Your feed source stays untouched.

Feed reference

Standard Google Shopping fields

Better Email works with standard Google Shopping XML feeds. If you run Google Shopping ads, your feed already has everything you need.

XML fieldUsed forRequired
titleProduct title in the emailRequired
linkProduct URL for click-throughRequired
g:image_linkMain product imageRequired
g:priceRegular priceRequired
g:sale_priceSale price — triggers discount badgeOptional
g:additional_image_linkHover image (second image used)Optional
g:brandBrand name and logoOptional
g:custom_label_1Custom badge labelOptional
descriptionProduct description in list layoutOptional

Using a custom feed format? Betty can suggest a field mapping from a sample.

Your product catalog deserves better than copy-paste

Connect your feed once. Let Better Email handle the rest: layouts, images, discounts, and always-current prices.

Request a demo