ProductsLinkSmart links & ads
Change the traffic split or geo rules
Adjust weights or add a country override without reissuing the link — it takes effect within a minute.
The URL you posted never changes. What changes is the policy behind it — PATCH /api/admin/smartlinks/{id} with a new policy object.
The policy shape
{
"v": 1,
"arms": {
"paid": { "enabled": true, "weight": 50, "label": "Paid" },
"ftl": { "enabled": true, "weight": 50, "label": "Trial", "require_country_link": true }
},
"geo": [
{ "countries": ["DE", "AT"], "arms": { "ftl": { "enabled": false } } }
]
}arms.paid/arms.ftl—enabled(bool),weight(integer 1–1000, relative — not a percentage),label, and forftlonly,require_country_link(defaulttrue: the trial arm fires only for a country that has its own trial destination; every other country gets the paid arm — there's no pooled/foreign-country trial fallback).geo— up to 200 rules, each{ countries: [...ISO codes], arms: {...overrides} }. The first matching rule wins; a country not covered by any rule uses the basearmsconfig.- Unknown fields anywhere in the document are rejected outright (
bad_policy) — a typo can't silently change routing.
Effect delay
The resolver caches the smart link's policy for 60 seconds. A PATCH takes effect on the public
/r/<slug> route within that window — there's nothing else to redeploy or re-publish.
Turning the link off
PATCH with active: false disables it. If published buttons still point at it, this returns
409 deactivate_confirm_required — see
Troubleshooting.
What's next
A policy change can make a country stop resolving to anything if its arm has no destination — run Validate before publishing after any non-trivial policy edit.