Meta Ads — Let each language in translations[] link to its own landing page
Your translations[] field (Meta's Dynamic Language Optimization) supports per-locale copy and per-locale media — but not per-locale destination URLs. Everything localizes except where the click lands.
Meta's underlying asset_feed_spec treats link URLs as a customizable asset exactly like bodies and titles: link_urls[] entries bound to the same language customization rules, so each locale's rule can carry its own destination (with one default). Reference: https://developers.facebook.com/docs/marketing-api/dynamic-creative/asset-feed-spec
Capability needed
an optional linkUrl per translations[] entry, inheriting the ad's top-level linkUrl when omitted:
for example:
POST /v1/ads/create { ..., "linkUrl": "https://example.com/en/", "defaultLocale": "en", "translations": [ { "locale": "es", "headline": "...", "body": "...", "description": "...", "linkUrl": "https://example.com/es/" }, { "locale": "pt_BR", "headline": "...", "body": "...", "description": "...", "linkUrl": "https://example.com/pt-br/" } ] }
Maps 1:1 onto the per-rule link_url in Meta's language asset feed, same as your existing per-locale imageUrl/videoUrl handling — no new Meta surface involved.
Why:
A single URL for a multi-language ad forces locale detection on the landing page, keyed off browser locale — and browser locale disagrees with the creative's locale the user actually saw in over 40% of cases in our data (expat users, shared devices, English-OS users targeted with local-language ads).
Sending each locale's impression directly to that locale's landing page removes the mismatch entirely; in our experiments this delivers a ~30% conversion uplift vs. the single-URL + auto-detect setup.
It's currently the only per-locale dimension of translations[] that can't be expressed through your API despite being supported by the underlying Meta asset feed.
Log in to comment and vote
Comments2
Aug 6
PinnedShipped! Each translations[] entry on POST /v1/ads/create now accepts its own linkUrl, so every language can land on its own page. A locale without one inherits the ad's top-level linkUrl (which stays required, it covers the default language). Unlike text, identical URLs across locales are fine, they share one link asset. Docs: https://docs.zernio.com/ad-campaigns/create-standalone-ad
Fedir Bobylev
Aug 6
You’re an absolute GOAT ☺️