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.
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 catalogFull-text search across product names and descriptions. No scrolling through 40,000 items.
- Sale prices visible before you pickSee original and discounted prices in the picker so you know which products have active discounts before inserting them.
- Hand-pick or let the feed decideUse the picker to curate specific products for hero slots. Let the feed auto-populate the rest of the grid.
- Three layouts, same feedSwitch between 2-column grid, 3-column grid, and list. Betty maps your fields once and every layout uses the same data.
Shimano Deore Brake Set
Pro Air Cycling Helmet
Lightweight MTB Pedals
Waterproof Saddle Bag
Product Grid
Layout

{{ 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.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.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.
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 dataBetter 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 needFeed field values and URL patterns trigger ribbons automatically. One module, all your product categories.
- Cover or pad, per productFeed images come in every aspect ratio. Workers fit them to your module dimensions without distortion.
- Image rollover on hoverTwo product images in the feed automatically enable a hover effect in email clients that support it.
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.

Kopi Cervus House Blend
Image height
One field controls the image height across all products in the module simultaneously.



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

Kopi Cervus House Blend
Single-origin Ethiopian Yirgacheffe, light roast. Notes of bergamot, jasmine, an...
All logic lives in the email module template. Your feed source stays untouched.
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.
titleProduct title in the emailRequiredlinkProduct URL for click-throughRequiredg:image_linkMain product imageRequiredg:priceRegular priceRequiredg:sale_priceSale price — triggers discount badgeOptionalg:additional_image_linkHover image (second image used)Optionalg:brandBrand name and logoOptionalg:custom_label_1Custom badge labelOptionaldescriptionProduct description in list layoutOptionalUsing a custom feed format? Betty can suggest a field mapping from a sample.
Explore more of Better Email
Product feeds are one piece of a complete email creation platform.
Dynamic Content & Segmentation
Segment any block visually, preview the whole email as any audience, and export native AMPscript, Jinja, or Liquid.
Learn moreVisual Editor
Drag modules, edit inline, and preview your feed-powered email in real time.
Learn moreBetty AI
Betty maps feed fields, suggests module layouts, and writes product copy, all in the editor.
Learn moreYour 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