Executive overview: adding Google PMax as a first-class ad destination alongside Meta — with its own canonical prompts, full-funnel asset groups, safe-zone-aware generation, and a costed delivery workflow. Prepared for team review; decision register in §11.
Executive summary
Recommendation: proceed. The platform is closer to PMax-ready than expected — all six required asset sizes already exist as dormant format stubs, the Creative Director already carries PMax-specific weighting, and three parked funnel titling presets map directly onto TOF/MOF/BOF. The build is three flag-gated phases (~7–11 dev days plus API approvals), and the marginal generation cost when run alongside Meta is ≈ +$1.50–1.90 per product for a complete visual kit: 9 funnel-differentiated statics, 6+ video renditions from two paid masters, and logos — delivered into clients' existing asset groups, where Google's per-impression engine matches each creative to the viewer's funnel stage automatically. Text assets stay client-owned.
What PMax changes vs Meta
Asset-pack model, not single ads: Google assembles combinations from up to 20 images, 15 videos, and 25 text assets per asset group — creative must work standalone and in any pairing.
Different safe zones: Google may crop statics up to ~20% at the edges; YouTube UI overlays differ from Meta's (§2).
Video floor: ≥10s and YouTube-hosted — our Meta masters are 8s, which forced the duration decision (now made: 10s everywhere).
Text assets stay client-owned: their existing PMax headlines/descriptions keep serving — we supply the visual layer only (copy burned into the creative itself remains ours).
Why this is cheap to do well
The 9:16 video master is shared with Meta once duration standardizes at 10s — only the 16:9 master is net-new spend.
Funnel differentiation on video is free — titling variants composited over the same paid masters.
Demand Gen uses identical files — switching it on later costs nothing at generation time.
Prompt work ships as overlays on the proven Meta spine, flag-gated, byte-identical when off — no regression risk to the running business.
One launch gate we recommend adding: the known open defect where ~1-in-3 static renders can carry a hallucinated competitor-style mark is a bigger liability on Google (trademark policy, broader placement surface) than on Meta. We recommend the already-drafted post-render vision QC ships before PMax scales past pilot volume; manual QA covers the pilot.
Asset specification & safe zones
The six generation sizes are confirmed complete against Google's current PMax requirements; only brand-level logos are added. Demand Gen reuses the identical files.
Static images
Asset
Size
Status
Safe zone
Landscape 1.91:1
1200×628
Required
keep critical content ≥120px from L/R, ≥63px from T/B (central 80% — Google may crop up to ~20% of outer edges)
Square 1:1
1200×1200
Required
≥120px all sides
Portrait 4:5
960×1200
Optional — unlocks mobile-first inventory
≥96px L/R, ≥120px T/B
Square logo 1:1
1200×1200 (min 128×128)
REQUIRED for asset group to serve
keep mark centered; derived from brand logo, $0
Landscape logo 4:1
1200×300
Recommended
same
Every static must be designed to work with NO accompanying text — Google mixes assets per placement and may show the image alone. Max 20 images per asset group; Google recommends 4+ landscape, 4+ square, 2+ portrait. Our 3 concepts × 3 sizes = 3 per ratio — one short of that recommendation. Free remedy: include the clean catalog hero shot as a 4th image per ratio ($0, no generation), or add a 4th concept (+$0.22).
Google official: avoid top 10%, bottom 25%, right 10% (engagement rail); we title inside top 14% / bottom 35% / right 15% to survive Meta AND YouTube with one asset
PMax minimum video duration is 10 seconds — current Meta masters are 8s, which is why the duration standardization decision matters. Videos cannot be file-uploaded to PMax: they must be hosted on YouTube (unlisted is fine) first. Up to 15 videos per asset group (raised from 5 in early 2026). If no video is supplied Google auto-builds slideshow videos from the statics — these underperform custom video by ~25-40%.
16:9 video is natively supported by the video model and by the titling compositor (1920×1080 composition exists).
Google Ads OAuth + read/sync integration (campaign import, asset-group listing) — the credential type the future push will need.
GAPS What the audit surfaced
No multi-asset text generation — the whole system is single-headline; the PMax text pack is a net-new service.
Video preset topology: as stubbed, a Google video run would queue one 16:9 ad only. The two-master + derived-1:1 kit needs new expansion plumbing (caught in adversarial review, now scoped).
Safe zones unpopulated for Google surfaces (all zeros) and one format-classification bug would title square PMax video on the landscape composition.
No delivery path: Meta has API push; Google is read-only today, and PMax video must be YouTube-hosted regardless.
Funnel presets exist but nothing selects them per run — plumbing required.
Landscape statics currently generate with 15–21% crop loss; exact-aspect generation sizes fix this (one already enum-legal, one needs a live probe).
Current pipeline — request → delivered ad
A circular "$" badge marks a billable API call (measured per-unit cost shown below it). A solid-outline chip names the model executing that stage. A dashed-outline chip marks a deterministic, no-AI step.
$ = billable · NEW = net-new build · SHARED = reused from Meta pipeline · dashed outline = planned, not yet built
Prompt architecture — four canonical PMax variants, one shared spine
The design rule, learned from this codebase's own history (a well-intentioned video-prompt "improvement" was fully rolled back after it increased hallucinations): never fork whole prompts. Each PMax variant is an overlay on the proven Meta spine, behind its own flag, byte-identical to current behavior when off, A/B-able before default-on.
Canonical prompt
What the PMax variant adds
What stays shared
1 · Static image generation one call renders the finished ad, copy typeset in-model
Platform-notes block: content confined to the central-80% safe box (Google crops edges); design must work with no accompanying text and read at thumbnail size; CTA policy — no burned CTA on TOF/MOF (Google renders its own button), burned CTA on BOF only; 10% edge margins (vs 6% Meta); exact-aspect generation sizes for 1.91:1 and 16:9.
2 · Video generation camera-only prompt; text composited downstream
New PMax directives profile: 10s pinned (PMax floor; model ceiling), hook-first pacing — product identity readable in the first 2 seconds (skip button, Shorts swipe) — and landscape-aware scene language for the net-new 16:9 master (today the prompt ignores aspect entirely).
Three-scene timeline mechanics, no-text rule, physical-accuracy and product-fidelity blocks, operator guidance/raw override levers at every level (ad→product→category→brand).
3 · Creative Director 3 concepts/product; strategy + copy + media picks
Archetype weighting + creative briefs for the five new PMax surfaces (pattern exists); funnel objective block — TOF weights brand/editorial hooks, MOF weights proof and stats, BOF weights offer and CTA emphasis; concepts map one-per-funnel-stage on full-funnel runs.
Nothing net-new — PMax text-asset generation is out of scope (client-owned; see §Text assets). The Director's concept copy continues to drive what's typeset into statics and titled onto video.
Why overlays and not new prompts: the Meta prompts carry two years of accumulated fixes (copy fidelity contracts, product-fidelity hardening, carve-outs discovered through measured regressions). A PMax fork would silently lose that lineage; an overlay inherits every future Meta fix automatically.
Full-funnel coverage — per product, Google optimizes stage selection
Funnel-addressing creative ships together, per product, into the client's existing asset groups. Google's combination engine already selects assets per impression using the viewer's intent signals — a first-touch user gets the lifestyle creative, a cart abandoner gets the offer creative, from the same group. Consolidation also feeds Smart Bidding's learning (Google advises against over-segmenting). The table below is a coverage spec — what every product's asset set must span — not an account structure. Stage-split asset groups and stage-level budget steering are explicitly not pursued.
Every image already carries a vision-stamped shotType (lifestyle, on_model, product_only, flat_lay, detail, packaging) + ad-suitability score; seed rule stays "first catalog image, never UGC"; the funnel stage steers the Director's media picks, it does not override seeding.
Per-product output
≥3 statics ×3 sizes + 2 video masters ×3 sizes ×3 title variants, delivered as one per-product set — comfortably above the "at least 3 ads per funnel stage" bar. The Director's 3 concepts per product map one-per-stage, and the video funnel variants are free retitles of the same paid masters.
Every PMax run generates the full funnel spread by default — no per-stage runs, no new run parameters, no account restructuring. Google's per-impression optimization does the stage matching.
Social-proof hierarchy ADOPTED 2026-08-10
Adopted from team-supplied creative guidelines, and a strong fit — the platform's intent system was already built around a "core element" concept. The governing rule:
One dominant social-proof element per creative. Supporting proof may appear but stays visually secondary — quote, rating, review count, price, and CTA never get equal weight. And don't choose ratings-vs-reviews globally: choose the strongest proof story per SKU.
Creative type
Star rating
Review count
Quote
When
Rating-First
Dominant
Supporting
No
Rating ≥ ~4.5 with substantial volume; smaller formats where a quote crowds
Testimonial-First
Optional, small
Usually no
Dominant
Short, specific customer quote; lifestyle products; larger canvases
Combo
Yes
Optional
Yes
Large 1:1 / 4:5 only, short quote, strong rating, minimal other messaging
Product-First / Minimal
Optional
No
No
Strong photography, premium brands, creative diversity for PMax
Per-SKU decision logic
Strong rating + large volume → Rating-First
Compelling quote → Testimonial-First
Both + large canvas → Combo (one still dominates)
Weak review count → never print it ("23 reviews" hurts); rating-only or quote instead
Rating below ~4.5 + high volume → popularity framing ("Loved by thousands", "18,000+ reviews") instead of the numeric rating
Thresholds live in config, not prose; count-display rules extend the existing tier-coherent rating-display service.
Why it fits the machine
The four creative types map onto the four existing static intents almost 1:1 — this is prompt + selection-logic work, not new rendering machinery.
The Director's brief already carries strongest-signal and proof-density fields — the decision logic slots into its objective block.
Concept diversity requirement: the 3–4 concepts per SKU must differ on the proof axis (rating / testimonial / product-hero / value) — meaningfully different approaches for PMax to test, not cosmetic layout variations. This also strengthens the 4th-concept remedy from §Specs.
Text assets — deliberately out of scope CLIENT-OWNED
Decision (2026-08-10): we are not in the ad-copy business for PMax. Clients already run PMax — their asset groups carry serving headlines and descriptions, and feed-driven retail placements pull title/price from the Merchant Center feed. We supply the visual layer: images, video, and logos into their existing groups.
What stays ours
Copy inside the creative — the headline/CTA the image model typesets into statics and the burned-in Remotion video titling. That is the creative itself, not a PMax text-asset field, and it's already core product driven by the Director's concept copy.
Boundary case
A brand-new asset group cannot serve without text. If a client ever wants one created, the client or their media buyer supplies the text assets — that's their account, their claims, their sign-off. Our future API push is supplement-only: it adds visual assets to existing groups and never touches text.
Unit economics
~$0.22
statics per concept (3 sizes, live default model)
+$1.20
net-new 16:9 video master @10s
≈ +$1.50–1.90
marginal cost per product alongside a Meta run
≈ $2.70–3.10
full PMax kit standalone
Cost breakdown
Item
Cost
Note
Statics 3 sizes
$0.22/concept ($0.072/image measured)
drops to ~$0.11 on the -developer model variant — but that switch is uncommitted and one sample showed a 16% hard-failure rate; re-measure before counting on it
×3 funnel concepts
$0.43–0.65/product
9 images clears Google's recommended counts
9:16 video master @10s
$1.20
SHARED with Meta (Meta moves 8s→10s, +$0.20 vs today)
16:9 video master @10s
$1.20
net-new, PMax only
1:1 video
~$0
derived crop, no generation; face detect ~$0.02 first time
Funnel title variants
$0
Remotion, self-hosted
Reference reframes
≤$0.08/image, one-time
per-aspect cache, amortizes across runs
Logos
$0
derived from brand logo
All figures are measured charges from the live ledger, not list prices (list prices understate by ~7× on this stack). Every submit is billable — the platform reads actual prices back from settled predictions.
Workflow, delivery & per-client prerequisites
End-to-end flow
Generate — wizard adds a Google destination; one run produces the full visual kit per product (statics ×3 sizes ×3 concepts spanning the funnel, 2 video masters → 6+ titled renditions, logos).
QA — automated safe-zone overlay check (Google's official templates composited over renders), copy-fidelity spot check, competitor-mark screen (manual at pilot; vision QC as the scale gate).
Deliver v1 — per-product export bundle: correctly named/sized visual files + YouTube upload checklist. Colleagues add the assets to the client's existing groups (or a paused test campaign) and validate Google accepts everything.
Deliver v2 (planned, in priority order) — YouTube Data API upload (unlisted) → Google Ads API asset push into existing asset groups (supplement-only: adds visuals, never touches text) → Merchant Center supplemental-feed writer pushing generated lifestyle imagery into product feed image fields.
Measure & loop — per-asset ratings and asset-group segmentation feed back into template/prompt selection; the existing brand-voice derivation already reads Google campaign creatives and closes the loop.
Per-client prerequisites (checklist for the team)
Google Ads account with conversion tracking verified (PMax is goal-driven; without clean conversions it optimizes to noise).
Merchant Center linked for retail/feed-based PMax — feed hygiene (titles, GTINs, prices) is the client's; we contribute imagery.
YouTube channel decision: per-client channel vs agency channel hosting unlisted ad videos (team decision, §11).
UGC rights confirmed to extend to Google surfaces before any UGC-derived creative ships there.
Brand assets present: logo (drives the required 1:1 logo asset), populated brand summary (21 of 31 brands have one today — pilot from this population).
Measurement plan (consultant recommendation)
Naming taxonomy from day one: {brand}-{theme}-{funnel} for asset groups so per-asset ratings aggregate cleanly.
Pilot: 1–2 brands, full kit, paused-upload validation, then live with modest budget; 2-week read on asset ratings before scaling.
A/B discipline: PMax prompt overlays measured against plain prompts before default-on (flags make the control arm exact).
Incrementality guard: where budgets allow, keep one comparable brand PMax-dark as a holdout for the first cycle.
Risks & mitigations
Risk
Severity
Mitigation
~1-in-3 static renders carry a hallucinated competitor-style mark (known open defect)
HIGH
Treat the drafted post-render vision QC as a LAUNCH GATE for PMax scale-out (Google trademark policy + brand safety exposure is higher than Meta); manual QA until it lands
Prompt changes have regressed output before (a prior video-prompt "improvement" was fully rolled back)
MED
All PMax prompt work ships as flag-gated OVERLAYS; Meta prompts stay byte-identical; A/B before default-on
Funnel titling presets are authored for 8s pacing; masters move to 10s
MED
Re-author preset timings for 10s plates (small, contained)
Google video preset as stubbed would queue only ONE 16:9 ad
MED
Scoped: new two-master expansion + derive-only 1:1 ad (adversarial review caught this before build)
-developer image model showed 16% hard-failure in one 38-submit sample
MED
Stay on full model for PMax v1; re-measure before switching
No Google upload path; videos must be YouTube-hosted
KNOWN
v1 = export bundle + manual upload checklist; API push + YouTube Data API planned
Auto-generated Google slideshow videos if we under-deliver video
KNOWN
Always ship both masters; slideshows underperform ~25–40%
UGC rights were cleared with Meta in mind
MED
Legal/team check before UGC appears on Google surfaces
Decision register
DECIDED 2026-08-10
Dedicated PMax static set (no Meta reuse)
Standardize all video at 10s, share the 9:16 master (industry data: Stories sweet spot 6–10s, Reels/feed 15–30s, so 10s is defensible on Meta and is the model's ceiling anyway)
Delivery priority = generation first, then API push, plus product-feed imagery output
Full-funnel spread per product into existing asset groups — Google optimizes stage selection; no stage-split structure, no stage budget steering
Static PLATFORM_NOTES overlay + CTA policy, PMAX video directives profile (hook-first, 16:9 language, 10s), Director funnel objective + new format weighting
~2–3 days
A
C — Funnel spread + delivery
Full-funnel-spread default (one concept per stage, all three titling presets per master, re-authored for 10s), per-product export bundle, wizard UI, then YouTube API → supplement-only Ads API push → Merchant Center feed writer
~3–5 days + API approvals
A, B
Every phase independently shippable and flag-gated; flags off = byte-identical current behavior. Verification: offline harness suite + one live probe run (~$2.50, one product) + a paused real PMax campaign upload to confirm Google accepts every asset.
Appendix — method & verification
How this was produced: three parallel read-only code traces over the backend (format/preset/safe-zone machinery · prompt/copy/Director systems · media model/templates/run flow), current pipeline documentation, and external research on Google's current PMax specs and safe-zone guidance. The resulting plan was then adversarially reviewed against the live code by an independent pass instructed to refute it: ~35 claims checked, 12 findings (2 critical, 4 high) — every finding is folded into this document (honest static pricing at the live default model, video preset topology requiring new expansion plumbing, mandatory schema enum + surface-policy work, funnel presets needing per-run wiring and 10s re-authoring, exact-aspect generation sizes, duration missing from video identity digests).
Key external sources: Google Ads Help (video ad specs & safe-zone templates, Shorts ads specs), current PMax spec guides (AdNabu, Hawky, TheMarketingCalc, PixExact), Meta video length benchmarks (Benly, QuickFrame, Superscale). Numbers marked "measured" come from the platform's own reconciled billing ledger, not list prices.
Not yet verified live: one non-enum generation size needs a single live probe; the -developer image model's failure rate needs a controlled re-measure; Google's acceptance of every exported asset gets confirmed by the paused-campaign upload in the pilot.