A rich media ad can be a template too. A rich media set makes one HTML5 bundle per sheet row — a ZIP you upload to an ad server — with that row's text, images, and click-through baked in.
Availability: personalized creative sets are rolling out to teams gradually. If you do not see Personalize with data on the rich media ad's page, your team does not have it yet. Contact support to ask for access.
| Static set | Rich media set | |
|---|---|---|
| One ad is | One row in one size (a JPEG) | One row, as a responsive HTML5 bundle covering every size |
| Sizes on the review | The sizes you pick | Responsive (every size) |
| Quote line | Renders | Bundle builds |
| Text fit check | Yes — ads can need review | No |
| Save to library / Edit a copy | Yes | No — download or export the bundle |
Open the rich media ad from the brand's Rich Media list (/home/brands/{brandId}/rich-media/{generationId}). In the left panel's Assets tab, give each element that should change a variable with its { } chip — the headline, the price, the product image, the link. Save the ad.
The stage previews the current row: the saved ad with that row's values, running in a sandbox that loads only the ad's own files. The ad itself is not changed. Step through rows, or open the Preview grid and pick a row.
Videos cannot come from the sheet yet. A video variable keeps the template's clip, and the bar says so.
Every click-through in a bundle goes to one place: the row's landing_url.
landing_url to a column to give each row its own landing page. Links must start with https, mailto, or tel.var clickTag = "…" with that URL — the usual IAB convention — so an ad server can replace it with its own tracking URL.clickTag is empty.If the ad's link element is bound to a different variable, the row is blocked: every link in the bundle goes to the one click-through, so that variable would be replaced. Bind the link to landing_url instead.
A bundle is self-contained. When the set is prepared, every script, stylesheet, font, and image the template loads is downloaded once and packed into each bundle. A finished bundle makes no network requests except its click-through.
So some templates cannot be bundled. The review then skips them with a reason:
| The template… | What to do |
|---|---|
| Loads a frame, redirects the page, uses a relative link, or loads a script that is not from a public library CDN | Remove it from the template |
| Points to another site outside its click-through — a plain link, a form, or an attribute | Remove it, or make it the ad's link |
| Plays video or audio from another site | Remove the media |
| Loads too many files, or its files add up to too much (the message gives the limit) | Use fewer or smaller images, fonts, or scripts |
| Loads a script, stylesheet, or font that cannot be downloaded | Check the link, or remove it |
Fix the template, save it, then choose Refresh quote on the set's review.
Choose Review set in the Data panel. The review works as for a static set — see Review and approve a set. The Ads line reads like 40 HTML5 bundles: one per row, covering every size.
On the set page, each row shows an HTML5 bundle tile that Covers 6 sizes. From its … menu (or Preview in Table view):
A very large bundle shows This bundle is too large to preview here. Download it instead.

Export downloads a ZIP that holds each row's bundle as its own ZIP, ready to upload to an ad server, plus a CSV manifest of row keys, files, landing URLs, and ad names. See Export a set.