TEASEDocs
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.ftlenabled (bool), weight (integer 1–1000, relative — not a percentage), label, and for ftl only, require_country_link (default true: 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 base arms config.
  • 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.

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.

On this page