Documentation
Back
  • Getting Started
    • Create Your First Ad
    • Teams, Brands, and Navigation
    • Generation Basics
  • Brands
    • Create a Brand
    • Work in a Brand
    • Manage Brand Settings
    • Brand Guidelines and Website Data
    • Connect Publishing Accounts
    • Manage Brand Members
  • Create Ads
    • Playground vs Launchpad
    • Create Video Ads
    • Create Static Ads
    • Create UGC Ads and Personas
    • Create Rich Media Ads
    • Create Carousel Ads
  • Tools
    • Image Studio
    • Remove Background
    • Generate Vector
    • Adapt Ad
    • Video Generator
    • Edit Video
  • Campaigns & Personalization
    • Data Sheets
    • Personalize a Static Ad
    • Review and Approve a Set
    • Work with a Creative Set
    • Export a Set
    • AI Values per Row
    • Generate a Template from a Data Sheet
    • Personalized Rich Media Sets
    • Sets in Campaigns and Assistants
  • Media & Delivery
  • Team & Account
    • Compliance Settings
  • Help & Troubleshooting
  • Developers & Automation
    • API
    • MCP
      • MCP setup

Personalize a Static Ad

Bind a layered static ad's text and images to a data sheet, step through rows, and save the mapping.

Personalizing turns one layered static ad — the template — into one ad per sheet row, in each size. You set it up in the layer editor with Personalize with data. Previews render in your browser for free; only Suggest with AI uses credits on this page.

Availability: personalized creative sets are rolling out to teams gradually. If you do not see Personalize with data in the editor toolbar, your team does not have it yet. Contact support to ask for access.

Before you start

  • A layered static ad — one generated with Editable layers. Finished images and carousels cannot be personalized.
  • A data sheet in the same brand with status Ready — see Data sheets.
  • Layers that should change per row need a template variable. Ads generated as editable layers usually arrive with variables on the headline, offer, product image, and call to action. To add one, select the layer and fill Template variable (for example headline) in the Layers panel. Names start with a letter and use a–z, 0–9, - and _. Layers that share a name receive the same value.

No design yet? Generate a template from a data sheet and you land in this panel with a draft mapping.

1. Open Personalize with data

  1. Open the static ad in the layer editor.
  2. In the toolbar, choose Personalize with data (the database icon; the label shows on wide screens). The Personalize with data panel opens on the right.
  3. Under Data sheet, choose a sheet. Sheets still processing, or that failed, are listed but cannot be picked.

The panel shows the row count and key column, such as 312 rows · key: vin, then the template's Variables.

Static ad editor with the Personalize with data panel open, variables mapped, and the row stepper under the canvas

2. Map variables to columns

Start with one of the two helpers:

  • Auto-map matches columns to variables by name, including the usual column names of product catalogs, vehicle inventories, and location lists. Free.
  • Suggest with AI makes one small AI call for what names cannot settle. Uses credits. Suggestions appear under AI suggestions with a short reason; choose Apply, Apply all, or Dismiss.

Then select a variable to open its binding and pick a Source:

SourceWhat fills the variable
Template valueThe design's own text or image. Nothing changes per row
ColumnOne column's value. A column whose type may not suit the variable shows (type may not fit)
FormatText built from several columns, such as {year} {make} {model}. Select a column under Insert a column to add it at the cursor. Write }} for a literal brace
Fixed textThe same text on every row
AI text / AI imageWritten or made per row by AI when the set runs — see AI values per row

A variable's binding expanded, with Source, Column, transforms, and Block rows without a value

Transforms

Column and Format bindings can take transforms, applied top to bottom. Choose Add transform…, then reorder with Move up / Move down or Remove one.

TransformWhat it does
Trim spacesRemoves spaces at the start and end
UPPERCASE, lowercase, Title CaseChanges the case
CurrencyFormats an amount with a currency, locale, and decimals. A value in a different currency is blocked rather than shown wrong
NumberFormats a number for a locale, with fixed decimals
DateFormats a date as Short, Medium, Long, Full, or ISO, for a locale and time zone
Fallback textText to use When empty
Replace valuesOne per line: value=replacement, such as AWD=All-wheel drive
ShortenCuts to Max characters, optionally with Add …

Required values

Block rows without a value decides what happens when a row's value is empty:

  • On — the row is skipped when you make a set, with a reason such as headline is required, but this row has no value.
  • Off — the ad keeps the template's own value for that row, and the row shows a warning.

Export fields

landing_url and ad_name show an Export field badge. They are not drawn in the image; each ad carries them into the export's CSV manifest. landing_url also fills a QR code when the design has one, and is the click-through of a rich media bundle. Bind them to columns to give every row its own landing page and name. Links must start with https, mailto, or tel.

Variable statuses

StatusMeaning
BoundFilled from the sheet
Template valueNot bound. Every row keeps the design's value
Missing requiredThe template marks this variable as required and nothing is bound yet
BrokenThe binding is incomplete, or its column or variable no longer exists. Fix it before you can save
Check typeBound, but the column's type may not suit it — for example, a text column on an image
AI valueMade by AI per row when the set runs

Saved bindings whose variable is gone from the template appear under Bindings that need attention. Remove deletes them on the next save.

3. Step through rows

With a sheet picked, the bar under the canvas becomes a row stepper: Row 1 / 312, Previous row, Next row, and Go to row (a row number or a key value) with Go. Each row is applied to every size at once, in your browser. The saved design does not change.

While a row is shown, layout is paused — you cannot move, resize, or align layers. Colors and fonts still edit the template. Close Personalize with data to change the layout.

The bar can show badges for the current row:

BadgeMeaning
BlockedThis row would be skipped in a set. Hover for the reasons
2 warningsSomething to check, such as text longer than the slot allows
Text overflowThe copy does not fit, even at its smallest size, in the listed sizes
1 image after prepareAn image built from a format, fixed text, or a transformed value. It is downloaded when the set is prepared; the preview keeps the template's image
AI values are pendingAI values are made when the set runs. The preview keeps the template's value

The size strip shows the row in every size. A size with an amber ring has text that does not fit.

4. Check many rows in the preview grid

Choose Preview grid to see a page of rows at the current size, rendered in your browser for free. Page through with Previous page and Next page. Blocked rows are marked Blocked. Select a row to show it on the canvas.

Preview grid with a page of rows rendered at one size

5. Fix sizes missing a variable

With several sizes, a variable can be bound in some sizes and not others. Sizes missing a variable lists each gap, such as subhead isn't bound in 320×50, 728×90.

  • When a matching layer is found, the gap says which one (300×250: binds the layer showing "Spring sale"). Choose Bind in 2 sizes to bind it there.
  • Otherwise it says No confident matching layer. Bind it by hand in that size.

Sizes missing a variable, with a gap that has no confident matching layer, below variables that still keep their template values

A gap is not always a problem. A small size often leaves a layer out on purpose — a 320×50 banner may have no subhead or legal line. If that size should not show the value, leave the gap: the size keeps its own design for that part.

If the size should show it, bind it by hand: close Personalize with data, switch to that size, select the layer that should change, and give it the same Template variable name. Save the design, then reopen the panel.

If Bind in… changed the size you are looking at, the panel asks you to save the design to keep it.

6. Save the mapping

Choose Save mapping. The footer shows Unsaved while you have changes. A mapping belongs to one template and one sheet; each sheet you use with the template has its own.

  • Save the design first: the mapping follows the saved layers. — save the design in the editor, then save the mapping.
  • This mapping changed elsewhere — someone else saved it. Choose Reload; your edits are re-applied on top.
  • Switching sheets with unsaved changes asks you to Discard changes or Keep editing.

7. Review a set

Review set sits next to Save mapping. It stays disabled until a set can be made from what is stored — hover it to see why:

  • Save the design first: a set is made from the saved design.
  • Save the mapping first: a set is made from the saved mapping.
  • Save a mapping for this sheet first.

When it is enabled, choose Review set. The Review a personalized set dialog asks:

FieldWhat to choose
SizesWhich of the template's sizes to make
RowsAll 312 rows, Only these rows (row numbers such as 1-20, 45), or Rows matching a filter (column, condition, value)
Leave out rows (optional)Rows to skip, such as 3, 7-9
Name (optional)A name for the set, such as Spring event, Texas

A set can have at most 5,000 rows. Choose Review set to open the set's review page. Nothing is generated or charged yet.

Review a personalized set dialog with sizes, row selection, and name

Next

  • Review and approve a set
  • AI values per row
  • Create static ads