“Test more creatives” is incomplete advice. If every new ad changes the product scene, headline, offer, crop, audience, and landing page at once, the results cannot tell a merchant what worked.
This first-hand workflow starts with one factual product control and adds two deliberately different visual hypotheses: routine context and distinctive product world. The SKU, visible label, portrait format, negative-space requirement, generation model, and review sheet stay fixed. Copy, offer, CTA, destination, audience, and campaign settings should stay fixed when the pack enters a real test.
The same discipline then carries into the jobs that follow a test: Black Friday, subscription and preorder offers, catalog ad automation, a five-card carousel, and a landing-page check before launch.
Evidence boundary: NORTHLINE is the same fictional serum used in our same-SKU fidelity test, not a merchant product. The source and three candidates below are real files. Two prompts produced three successful Masonry jobs; a fourth request failed before generation for insufficient credits. This article does not report ad performance, a conversion lift, or a universal creative winner.
The decision this pack is designed to answer
The first test asks one narrow question:
Does a factual packshot, a recognizable use context, or a distinctive graphic environment produce the strongest downstream result for this SKU and offer?
That is a visual-concept test, not a finished campaign strategy. The control establishes the sold product. The two treatments change the job performed by the surrounding pixels, not the product promise.
| Creative | Visual hypothesis | What changes | What stays fixed |
|---|---|---|---|
| C0: factual control | Product clarity is enough | No generated scene | SKU, copy, offer, CTA, destination, audience, placement |
| V1: routine context | A recognizable use moment adds relevance | Shelf, window light, composition | Product truth and every campaign variable above |
| V2: product world | A distinctive color-and-shape system adds recognition | Amber arch, shadow, composition | Product truth and every campaign variable above |
Do not call minor background-color swaps separate hypotheses. If two versions communicate the same idea, they belong inside one production route, not as two strategic test cells.
C0: keep the factual source as the control
The control is intentionally plain. It gives the test a truthful baseline and prevents “newer” from automatically meaning “better.” Keep an approved product image on the destination page too, so the ad and PDP do not set conflicting expectations.
V1: routine context
The routine brief requested a limestone bathroom shelf, morning light, and a quiet upper copy zone. It prohibited people, fruit, water, added products, and all generated ad copy.
This is the useful routine candidate. It creates a recognizable environment without inventing a person, result, or application method. It is campaign-ready only after product review because reference conditioning did not lock the physical package.
The same prompt produced a second valid-looking image:
Rejecting this candidate is part of the economics. A downloadable file is not automatically an accepted creative. Here the rejection reason is hypothesis failure, not ugliness: it does not make the intended routine context distinct enough to answer a new question.
The exact generation contract was:
# Originally run on gemini-3.1-flash-image-preview (Nano Banana 2), which Masonry retired in November 2026; gemini-nano-banana-2.1 replaced it. masonry image "Using the supplied reference image as the immutable product, create a 4:5 paid-social ecommerce photograph. Place the exact bottle lower-center on a pale warm-gray limestone bathroom shelf in soft morning window light. Reserve the upper 35 percent as quiet warm off-white negative space for approved copy added later outside the generated image. Change only the environment, surface, composition, and lighting. Preserve exactly the bottle silhouette and proportions, orange liquid and fill line, transparent over-cap, silver pump geometry, white label size and placement, and every character of NORTHLINE, VITAMIN C, 30 ML. One bottle only. No person, hand, fruit, leaves, water, box, claims, icons, headline, price, CTA, watermark, or extra text." \ --model gemini-nano-banana-2.1 \ --ref ./northline-approved-source.webp \ --aspect 4:5 \ --seed 202608141 masonry job wait <job-id> masonry job download <job-id> --output ./northline-routine-v1.png
V2: distinctive product world
The second hypothesis removes literal use context. It asks whether a restrained amber visual system makes the product more recognizable while retaining one focal point and a clean copy zone.
Its fixed prompt used the same product invariants and exclusions, replacing only the environment instruction with:
Place the exact bottle centered in the lower two-thirds on a clean matte warm-cream surface with one translucent amber acrylic arch behind it and a crisp soft-edged shadow. Reserve the upper 28 percent as uncluttered negative space for approved copy added later outside the generated image.
The successful Masonry jobs were 62c1ed63-57ee-411f-8c7b-1ffd8d747eb6, 297558db-5adf-4bcc-b397-8fd1a937be7b, and 00f98296-ebda-4f9e-ad06-d45e0dfb73f1. One second-seed product-world request failed before generation for insufficient credits. No replacement output was hidden behind a reroll.
Product and creative acceptance sheet
Score product truth before advertising taste.
| Gate | C0 control | V1 routine | V1 rejected | V2 product world |
|---|---|---|---|---|
| Exact visible label text | Pass | Pass | Pass | Pass |
| One product; correct orange color | Pass | Pass | Pass | Pass |
| Source-locked package geometry | Pass | Review | Review | Review |
| Clear upper copy zone | Not applicable | Pass | Pass | Pass |
| Distinct declared hypothesis | Control | Pass | Fail | Pass |
| Test-cell disposition | Keep | Keep after approval | Reject | Keep after approval |
This run produced three successful candidates, two accepted treatment concepts, and one rejected candidate. That is a 67% concept acceptance rate among generated files, not a model reliability rate and not an ad win rate. With the failed credit-gated request included, the operational record is two accepted concepts from four attempts.
For products with exact geometry, regulated packaging, intricate hardware, or hard-to-read labels, generate only the background and composite the approved packshot. The same-SKU fidelity benchmark shows why exact text can coexist with a materially redrawn bottle.
Add copy after the image passes
Generated copy creates unnecessary spelling, offer, and claim risk. For the first visual test, use the same approved text everywhere. A deliberately plain fictional contract might be:
| Field | Fixed value |
|---|---|
| Primary text | Meet NORTHLINE Vitamin C. |
| Headline | NORTHLINE Vitamin C, 30 ML |
| CTA | Shop now |
| Offer | No promotional offer in the first visual test |
| Destination | The exact SKU and variant page; use the Shopify variant-image workflow to verify that its selected preview and gallery stay correct |
A real merchant should source every feature, benefit, price, discount, review, certification, and before/after implication from the approved product and legal record. Once the visual winner has enough evidence, keep that image fixed and run a separate copy-hypothesis test.
Meta's current photo-ad guidance recommends a single focal point, restrained image text, visual consistency, and experimenting before committing. Its Ads Manager guidance also supports previewing placements and setting up an A/B test. Use the official photo-ad guidance and current Ads Manager workflow instead of treating this article's 4:5 export as a permanent platform specification.
Offer-led creative: Black Friday, subscriptions and preorders
An offer changes the test. The discount, price, cadence or ship date becomes a fact the ad promises, and it has to stay true on the product page, in the cart and at checkout. The same four steps work for all three offer types:
- Freeze a versioned offer record before anyone touches pixels.
- Generate only the visual layer, with no text, numbers or terms in it.
- Render the offer from the record as a separate layer, so a date or price fix never rerolls the product.
- Audit the promise after the click before the cell enters a test.
| Offer type | Freeze before pixels | Must match after the click | Decide on |
|---|---|---|---|
| Black Friday | product scope, discount, code, start and end time, timezone, price basis | offer applies on the page and in checkout; code works | purchases and contribution after discount |
| Subscription | price, one-time alternative, billing cadence, delivery cadence, renewal, cancellation path | selected plan survives page, cart, checkout and confirmation | completed subscription purchases, then retention over real billing cycles |
| Preorder | price, payment timing, estimated ship window, unit cap, delay and cancellation path | preorder state and estimate repeat on page, checkout, confirmation and feed | fulfilled preorder contribution after cancellations and refunds |
All three examples below use fictional products and offers. The generated images and Masonry jobs are real; nothing is connected to a live checkout, and no ad performance is claimed. Templates: the Black Friday offer record, the subscription offer record and the preorder offer record.
Black Friday: keep the old ad as the control
A first-time Black Friday merchant usually asks whether they need all-new creative or an overlay on what already works. Run both as two cells that differ in one variable. C0 keeps an accepted evergreen ad and adds the offer as a rendered layer. N1 is a new seasonal scene with the exact same offer layer.
For N1, the approved packshot was reference 1 (product truth) and a textless aubergine-and-amber style board was reference 2 (style only):
# Originally run on gemini-3.1-flash-image-preview (Nano Banana 2), which Masonry retired in November 2026; gemini-nano-banana-2.1 replaced it. masonry image "Create one 4:5 paid-social seasonal product photograph from two references. Reference 1 is immutable product truth. Reference 2 is style direction only. Preserve exactly the NORTHLINE Vitamin C bottle and every character of NORTHLINE, VITAMIN C, 30 ML. Use the aubergine set, smoked-amber arch, warm stone plinth, amber rim light, haze, and upper negative space. No campaign text, letters, numbers, price, percentage, discount, badge, CTA, countdown, confetti, gift box, ribbon, person, extra product, watermark, or claim." \ --model gemini-nano-banana-2.1 \ --aspect 4:5 \ --seed 2608155 \ --ref ./NL-VITC-30-approved.webp \ --ref ./bfcm-style-board.webp
Job 661ef97f-18a2-4a07-bfcd-f2241fa127b3 returned a 928 x 1152 file in about 10 seconds.
Keep C0 even if the team prefers N1. Without it you can't tell whether the seasonal art helped or the discount did. Selling into the EU adds one more check: Shopify's Price Indication Directive guidance says an announced reduction can require showing the lowest price of the previous 30 days. Route the actual promotion through the merchant's own legal review for each market.
Subscriptions: billing and delivery are two fields
A subscribe-and-save ad has more terms than a sale, and they recur. Record billing cadence and delivery cadence separately: a prepaid plan can charge on one schedule and ship on another. Don't render "cancel anytime" unless the live policy and the market review support those exact words.
The safest route keeps both the product and the terms out of generation. A live Nano Banana 2 job (ef60f4c8-80aa-49f4-a920-d2b71b6410f9, seed 2608158) made only a textless background plate. The approved candle photo was placed on it unchanged, and the price and cadence were rendered from the record:
Then check the same plan on every surface the shopper sees:
| Surface | Check |
|---|---|
| Ad | SKU, purchase type, price basis, cadence, approved qualifiers |
| Product page | one-time and subscription options, selected plan, price, cadence, policy link |
| Cart | subscription line item survives with price, frequency and quantity |
| Checkout | recurring total, shipping and tax, frequency, agreement, policy |
| Confirmation | next charge and delivery dates, selected plan, how to manage or cancel |
In Shopify, the selling plan is the source of those terms. The Shopify Subscriptions setup guide notes that themes, apps and shipping profiles can change the path, so test it on desktop and mobile. Rules on recurring charges are also moving: the FTC's Negative Option Rule page shows it asked for comment again in March 2026. That is a reason for market-specific legal review, not a checklist this page can certify.
Preorders: the cap is arithmetic, not copy
A preorder promises a future shipment. The record should hold price, payment timing (full payment, deposit, or charge at fulfillment), an estimated ship window, the unit cap, and what happens if the date slips. Work out the cap from real supply, for example 60 inbound units minus 12 held back for damage and wholesale leaves 48 to sell online. Never ask an image model to infer it, and never turn the internal count into "only 25 left" copy.
The same route applies: a textless plate from a live job (43c8e0d4-be19-421a-b3b5-8c5d416e196a, seed 2608161), the approved product placed unchanged, and the terms rendered from the record.
Put the estimate in page text near the buy button too; an image alone isn't enough. If the product is in Google Merchant Center, set availability to preorder with a valid availability_date, and check that the confirmation email repeats the same estimate. If the window will be missed, ask buyers to accept the new date or refund them before it passes. Shopify's deferred purchase options support each payment timing; change the record first, then re-render only the term layer.
When the platform makes the creative
The matrix above controls what you upload. Catalog ad systems then pick products, crop, extend and sometimes generate new images on their own. Each of those outputs is a new image of your product, so it needs the same product-truth review as V1 and V2. Here is what to record for the three systems merchants ask about most. Google and Reddit specs were checked on 27 October 2026 and the Meta controls in August 2026; recheck before export.
Google Performance Max
A listing group selects which Merchant Center products an asset group can show; the asset group holds the images, text and final URL that serve with them. If every included SKU cannot truthfully use the same image, copy, offer and destination, split the group before making creative. Export the three shapes from Google's current Performance Max specifications:
| Shape | Recommended | Minimum | Review for |
|---|---|---|---|
Square 1:1 | 1200 x 1200 | 300 x 300 | product clarity in a balanced crop |
Horizontal 1.91:1 | 1200 x 628 | 600 x 314 | product still identifiable in a wide frame |
Vertical 4:5 | 960 x 1200 | 480 x 600 | mobile framing without clipping the SKU |
Then record four automation controls separately, because each can put a different image in front of shoppers: asset generation from your URL and product summary, image enhancements that adjust uploads for more placements, landing-page images pulled from the destination, and auto-generated video when the group has none. If landing-page images are on, audit the whole page: a stale seasonal banner or a wrong-variant photo can become an ad. Judge the group on conversion value and contribution, not Ad Strength, which only measures asset breadth.
Meta Advantage+ catalog ads
Meta's Advantage+ creative can expand images, generate backgrounds or full-image variations, add text, animate and add music, and not every feature exists for every ad type. Don't log these as one "AI on" column:
| Control | Record | What to reject |
|---|---|---|
| Image expansion | enabled state and the resulting crop | invented edge content or a changed product scale |
| Background or full-image variation | input media and the output you observed | a redrawn product, new prop or implied claim |
| Text options or overlay | source copy and the generated options | an altered offer, price, claim or spelling |
| Animation and music | source frame and the resulting motion | changed geometry or an unsafe crop |
| Catalog media | main and additional images, video, frames | old or wrong-variant media still attached to the item |
The last row matters most for catalog ads. They can draw on item-level media you never selected in the ad, so a stale video or wrong-variant photo on the catalog item can appear in delivery. Fix it on the item, not in the ad.
Reddit Dynamic Product Ads
Reddit's Dynamic Product Ads setup needs physical products, a catalog, Reddit Pixel or Conversions API commerce events, and product IDs that match between the catalog and those events. That ID match is the highest-leverage check: if ViewContent, AddToCart and Purchase don't carry the catalog's exact product ID, Reddit can't tie shopper activity to the right product, however good the image is.
The catalog guidance asks for images at least 500 x 500 px, image URLs that resolve to JPG or PNG (so check what your CDN actually serves, not the source file), and recommends a white background. Reddit serves DPA in feed and conversation placements, so review each placement's preview separately: a correct image can still sit beside a stale price or click through to a parent collection.
One review rule for all three
Whatever the platform generates or picks, check the delivered ad, not the source file: exact product and variant, no invented claim or offer, a destination that shows the same item, and a named owner who can roll it back. The AI product photo rules by platform covers the listing-side rules on the same channels.
Carousel ads: five cards, five jobs
A carousel is a different test from the matrix. The matrix compares independent images. A carousel is one ordered story where each card must still make sense alone, because shoppers can enter at any card. Meta's carousel format page allows up to ten cards, each with its own link, and says to turn off automatic card reordering when the order carries the story.
Decide the route first. A manual carousel declares every card, line, link and position. A catalog carousel lets the platform pick items and media from your feed, so the Advantage+ catalog checks above apply instead.
| Card | Job | Source | Rule |
|---|---|---|---|
| C1 | identify the exact product | approved packshot plus rendered name and size | becomes the reference every later card is checked against |
| C2 | show one real detail | crop of the same source (pump, label, 30 ML) | crops are fine; an invented back label or new angle is not |
| C3 | add one quiet scene | a real generated lifestyle image from our ecommerce product-photo prompts | approve only after comparing the redrawn bottle to the source |
| C4 | say what arrives | approved source with "ONE 30 ML PUMP BOTTLE" | box, gift or multipack copy needs the commerce record |
| C5 | route to the product | "VIEW THE EXACT PRODUCT" linking to the same SKU page | no price, scarcity or discount unless the offer record says so |
A carousel is only as approved as its weakest required card. Before release, preview it in the real ad account: confirm the format exists for your objective, exactly five cards appear in order, each uses its approved file and URL, and any automatic crops or overlays are recorded. Then test the released carousel against a named control, such as the winning single image from the matrix, on purchases.
Check the landing page before launch
A good ad that lands on the wrong page gets blamed for weak results it didn't cause. Before any cell from this page goes live, check that the click arrives at the same promise. Run the check on the exported placement and the rendered page, not on the design file.
| Gate | Pass when | Hold when |
|---|---|---|
| SKU | ad and page resolve to the same catalog item | the ad product can't be identified exactly |
| Variant | color, size, pack or subscription state agrees | the page defaults to another option |
| Quantity | shown and sold quantity agree | a set or count is implied but not sold |
| Offer | price, discount, code and dates are current on the page | the offer is missing, expired or applied later |
| Claim | every claim traces to an approved source | a benefit, rating or certification was invented |
| CTA | the page can do what the ad asked ("Shop now" to "Add to cart" is fine) | the click hits a dead end or a different intent |
| Visual | the sold product is recognizable and factual | packaging, color, label or contents changed |
| Final URL | redirects and tracking land on the intended page | the URL resolves somewhere else |
| Mobile | the promise and buy button are visible at phone width | a popup, slow load or layout hides them |
Google's Quality Score guidance makes the same point from the search side: keep ad and landing-page messaging consistent and follow through on the offer. When an ad has delivery but sales stall, find the first broken step before making new creative:
| What you see | Check first |
|---|---|
| clicks but fewer landing-page views | page speed, redirects, consent banner, tracking |
| page views but weak add-to-cart | message match, variant, offer, price, stock |
| add-to-cart but weak checkout | shipping, tax, payment, promo code application |
| checkouts but few completed orders | payment errors, total price, fraud rules |
| orders but weak contribution | discount depth, fulfillment, returns, support cost |
When a live ad slows down: diagnose fatigue before refreshing
Once a control has delivery history and starts to slip, generating twenty replacements is not a diagnosis. The drop may come from repeated exposure, a narrower audience, a placement shift, a weaker offer, a changed product page, checkout friction or a tracking failure. A new image fixes only the first.
Compare equal windows on the same campaign, SKU, market and attribution setup, and note launches, discounts, outages and tracking releases first.
| What you see | Likely layer | Check before generating |
|---|---|---|
| Frequency rises, outbound CTR falls, post-click purchase rate holds | Attention decay on the execution or message | Audience overlap, placement mix, comments, then a controlled refresh |
| CTR holds, landing-page purchase rate falls | Destination or commerce promise | Variant, price, offer, shipping, stock, page speed, checkout, event tracking |
| Reach falls while CPM changes | Delivery or auction | Budget, bids, audience size, placements, seasonality |
| Platform conversions fall, store orders do not | Measurement | Pixel/CAPI deduplication, consent, attribution window, UTMs, release history |
| CTR and post-click conversion both fall | More than one layer | Rebuild the timeline; one new image cannot isolate the cause |
Frequency is an account-specific signal, not a universal threshold. Download the diagnosis sheet for two worked examples (one attention-decay pattern, one destination problem) you can replace with your own numbers.
When the evidence points at the creative, refresh the smallest layer that could explain the decline, and keep the old ad live as the control:
- Execution: same buyer idea and copy; new crop, camera, layout, light or opening frame.
- Message: same SKU and offer; one different approved buyer problem or proof point.
- Offer: new price, bundle or terms, only with an updated offer record and destination.
- Audience or placement: a distribution test, not a creative win.
We ran an execution refresh on the routine cell above, asking Masonry to change only composition, camera angle, light and shadow while keeping the bottle immutable:
# Originally run on gemini-3.1-flash-image-preview (Nano Banana 2), which Masonry retired in November 2026; gemini-nano-banana-2.1 replaced it. masonry image "Using the supplied reference image as the immutable product, create one 4:5 paid-social ecommerce photograph that refreshes the existing morning-routine shelf execution without changing its buyer idea. Place the exact NORTHLINE Vitamin C bottle in the lower-right third on a pale warm-gray limestone bathroom shelf, photographed from a slightly higher three-quarter angle with a stronger diagonal band of soft morning window light. Keep the upper-left 40 percent quiet warm off-white negative space for approved copy added later. Change only composition, camera angle, light direction, and shadow. Preserve exactly the bottle silhouette and proportions, orange liquid and fill line, transparent over-cap, silver pump geometry, white label size and placement, and every character of NORTHLINE, VITAMIN C, 30 ML. One bottle only. No person, hand, fruit, leaves, water, box, claim, icon, headline, price, CTA, watermark, or extra text." \ --model gemini-nano-banana-2.1 \ --ref ./northline-approved-source.webp \ --aspect 4:5 \ --seed 2026081801
It returned a 928 × 1152 file in about five seconds. It looks good, and it was rejected.
The wording survived; the package did not. Re-rolling until a pretty output passes hides the cost and can still miss subtle drift. When exact geometry matters, keep the approved product pixels and change only the layout around them:
Less cinematic, but honest and fast to version. The amber product world (V2) stays a separate hypothesis; it is a new concept, not a refresh of the routine cell. Download the refresh lineage sheet to record parent asset, changed layer, method, job ID, seed, review and disposition for every attempt.
For the test itself, hold the SKU, offer, copy, destination, audience, optimization event, placements and budget treatment fixed, change one named execution layer, and judge on the downstream purchase or contribution result. Reach, frequency, CTR and landing-page views are diagnostics. Returns, "not as described" complaints and tracking gaps are guardrails. Meta's Advantage+ creative can generate variations too; preview every delivered version and record the settings with the result.
Name the files so the result is diagnosable
Use names that expose the one changed variable:
NL_VITC_C0_PACKSHOT_4x5_v1.webp NL_VITC_V1_ROUTINE_4x5_v1.webp NL_VITC_V2_AMBERWORLD_4x5_v1.webp
The accompanying experiment record should contain:
| Field | Record |
|---|---|
| Decision | Which visual concept deserves the next production round? |
| Fixed variables | SKU, offer, copy, CTA, URL, audience, optimization event, placements, attribution, budget treatment |
| Changed variable | Visual concept only |
| Primary decision metric | Purchase or the downstream event the campaign is genuinely optimized for |
| Diagnostics | Impression, thumb-stop if available, outbound click, landing-page view, add-to-cart, checkout |
| Guardrails | Product complaints, “not as described” contacts, returns, contribution economics, tracking failures |
| Decision rule | Declared before launch; do not crown an early winner from a handful of conversions |
Do not use a universal CTR benchmark from another store to decide whether your creative works. A high click rate can coexist with a mismatched product page, weak buying intent, broken tracking, or no purchases. If a creative earns clicks but no downstream movement, first verify the optimization event and tracking, then inspect whether the ad promise, variant, price, shipping information, and destination page agree.
Why this is more useful than generating 100 ads
Current merchant discussions make the failure mode plain. One established Shopify advertiser described AI changing intricate product proportions and details, and argued for using real product media as the truth layer while AI varies the surrounding hook or structure. Read the July 2026 discussion.
Another merchant had already tried more than fifteen creatives and still could not distinguish a creative problem from an offer or product problem. That thread is qualitative evidence, not a performance benchmark, but it shows why “more variants” is not a measurement plan. Read the creative-testing question.
The useful unit is not one generation. It is one named hypothesis that preserves the product, survives review, enters a controlled test, and produces a decision.
For the moving-image extension of the routine cell, the real-product AI UGC workflow shows the approved source, generated keyframe, five-second hand-reach clip, temporal rejection gate, and purchase-oriented measurement handoff.
When an accepted cell expands into another language or market, use the product image localization workflow to preserve the source creative, review target copy, and verify the actual channel mapping before launch.
When the team has not yet chosen the question worth testing, use the AI review-mining to creative-brief workflow to code authorized feedback, reject unsupported claims, and feed one authority-backed buyer question into this matrix.
Put this workflow in the ecommerce production stack
Start with the supplier-photo to complete image-set workflow when the launch needs PDP, detail, social, and campaign deliverables. Use this page when the job is specifically a diagnosable static-ad test. Apply the AI product-photo trust guardrails before release and the product-photography model comparison when the current route fails the SKU.
If the next merchant job might belong in catalog, PDP, acquisition, customer evidence, lifecycle, or wholesale rather than another ad cell, use the AI for ecommerce workflow map to choose its authority record and commercial finish line before generating.
Build the scenes in Masonry's AI product photography studio, or use the Masonry CLI to record prompt, route, seed, job ID, file name, reviewer, and disposition automatically.
When the declared variable moves from the ad into the Shopify PDP hero, use the Shopify product-image A/B-test workflow. It keeps the product and commerce path fixed while adding stable assignment, rendered exposure, sample-size planning, performance and return guardrails, and a recoverable decision record.
Bottom line
A profitable creative process does not begin with maximum output. It begins with a question the test can answer. Keep one factual product control, add two genuinely different visual hypotheses, separate approved copy from generation, reject duplicates and product drift, and let downstream business results, not file count or aesthetic taste, decide the next production round.


