Skip to main content

Edit creative on Google image and Performance Max campaigns

Today we can replace the creative on a Google search campaign through the top-level headlines / descriptions / finalUrls arrays on PUT /v1/ads/{adId}, and that works well. For Google campaigns with imagery (display and Performance Max) there
is no equivalent: the text can't be changed afterwards and the image can't be replaced at all.

Why it matters to us: we build campaigns for small business owners who don't log into Google Ads themselves. When their ad needs a new photo or a sharper line, the whole point of our tool is that they can do it where they already are. Right
now our only honest answer is "this one you have to do in Google Ads", which is exactly the step they hired a tool to avoid.

What would help, in order of usefulness:
1. Replacing individual assets (an image, a headline) on an existing image or PMax campaign.
2. If replacing in place isn't possible, an endpoint that swaps the whole asset set at once, the way the search arrays already work.

Meta and LinkedIn already support both text and image edits after creation, so for us this is the one platform where the flow breaks.
Status: Completed1 comment

Log in to comment and vote

Comments1

  • Miquel Palet López

    Team•

    Sep 11

    Shipped and live, as your option 2. You can now swap the asset set on Display and Performance Max campaigns through PUT /v1/ads/{adId}:

    PUT /v1/ads/{adId}
    {"assetGroup": {"headlines": ["...", "...", "..."], "images": {"landscape": ["https://..."]}}}

    Each list you send becomes the full new set for its kind, and a kind you leave out is untouched, matching the search arrays you already use. Display takes creative.headlines / descriptions / longHeadline / businessName / finalUrls plus the image roles; PMax takes the assetGroup shape above.

    On your option 1, replacing an individual asset in place: that one genuinely is not possible, and it is Google's constraint rather than ours. Assets are immutable once uploaded, so the only supported shape is create-new and re-link, which is what runs underneath. The practical effect is the same and it is done in a single atomic mutate, so the asset group never dips below Google's required minimums part-way through.

    Verified live on a throwaway Performance Max campaign, reading the result back from Google through GAQL rather than trusting our own 200:

    ENABLED  Ads API For Six Networks   (new)
    ENABLED  Ship Ads In One POST       (new)
    ENABLED  Zernio API                 (re-sent, same asset id, not duplicated)
    REMOVED  One API Many Networks      (replaced)
    REMOVED  Social Media API           (replaced)

    Two behaviours worth knowing. Google dedupes assets by content, so re-sending a value the group already has resolves to the same asset and is left alone rather than churned. And an image Google rejects (wrong aspect ratio, for instance) fails the whole call with its reason, leaving the existing assets untouched, instead of half-applying.

    Related, since it came from your other report the same day: replacing an image on a Display campaign used to return 200 and change nothing at all. Unsupported creative edits on Google now fail loudly with a message naming what cannot be changed.