Demand Gen one-click image ads: match the landing page

Google's September 2026 Demand Gen Drop adds one-click landing pages from image ads on YouTube Shorts and Gmail. Make a matching page hero with Sume.

4 min readSume
All posts

Google's September 24, 2026 Demand Gen Drop adds a one-click landing page: a single tap on an image ad on YouTube Shorts or Gmail goes to your landing page. For Shorts, Google says to upload 9:16 full-bleed image ads, and it says adding Gmail to Demand Gen gives a 40% increase in conversions at the same ROI for image creatives. With one tap and no extra step, the page the tap opens has to continue the ad.

These points are from Google's announcement, read on 2026-10-02. For the image size itself, see the related post.

What did Google announce?

The relevant items for image advertisers are these.

Demand Gen image ad items, from the Google Ads blog, read 2026-10-02.
ItemWhat the page says
One-click landing pageSingle tap on image ads on YouTube Shorts and Gmail
Shorts image adsUpload 9:16 full-bleed image ads
Gmail in Demand Gen40% increase in conversions at the same ROI, for image creatives (Google's figure)
Business Agent for YouTube AdsSign-up

What should the landing page do?

Reuse the ad's product, colour and headline in the page hero so the tap feels like a continuation. If the ad shows a blue jacket, the page should open on the same blue jacket, not a category grid.

Make the hero from the same image

Take the ad's source photo and request a wider hero with the Image API: aspect_ratio 16:9 for desktop, or 4:5 for a mobile hero. Keep the product unchanged and leave space for your own headline text, added in code, not in the pixels.

import os, requests

r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json={
        "model": "sume/auto",
        "prompt": "Wide landing page hero from this exact product photo, same colours, empty space on the left for a headline, no text in the image",
        "input_references": [
            {"type": "image_url", "image_url": {"url": "https://example.com/ads/jacket.jpg"}}
        ],
        "aspect_ratio": "16:9",
    },
    timeout=60,
)
body = r.json()
if r.status_code == 200:
    print(body["data"][0]["url"])
else:  # 202: poll the job
    print(body["data"]["status_url"])

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume