Most AppRoute links live their whole life with no controls turned on. They route on OS, they collect analytics, they show up on a CSV at the end of the month. But every once in a while you need one to stop — at a deadline, at a click count, at a password prompt, or right now because something is on fire. Here is how each of those controls actually works.
01Password gates
Toggle a password on a link and visitors see a single input field before they get the redirect. The page renders in under 100ms because it is server-rendered from the same edge that handles the routing. We rate-limit attempts per hashed-IP — five tries per ten minutes by default. After that the form locks for the rest of the window and logs a link.password_failed event.
Closed betas. Investor decks. Internal launch URLs you do not want forwarded. NDA-bound product previews.
When not to use it: anything you are sharing with more than 50 people. At that scale the password leaks within hours regardless of what you do. Use a real auth gate on the destination instead.
02Click caps
Set a maximum click count and the link goes inactive the moment it crosses the threshold. We do this server-side at the edge, so the cap is enforced consistently across regions — no race where the link serves 5,200 clicks because two POPs both thought they had headroom.
- Caps count all clicks including bots, unless you tick
human clicks only. - Bot-only redirects (chat previews) never count against the cap.
- When the cap hits, the link shows an
inactivepage rather than a 404 — the URL still resolves, it just does not redirect.
03Expiry dates
Set an expiry datetime in any timezone and the link stops redirecting the moment the wall-clock crosses it. Same inactive page as the cap case. The timezone is whatever the link author picked, not the visitor's — so a May 31 23:59 Europe/Berlin expiry behaves identically for a click coming from Tokyo and one coming from São Paulo.
Expire links the way you expire cookies — on a date, in a known timezone, with a quiet failure mode. Anything else gets argued about at 11pm.
04Pause and reactivate
Pause is the manual override. One toggle in the dashboard, one API call (PATCH /v1/links/{id} with paused: true), and the link goes inactive in under five seconds across every edge. Use this when:
- Your app has just been pulled from the store and you do not want traffic flowing to a dead listing.
- An ad partner has gone rogue and is sending bot clicks at your link.
- Marketing made a typo, the URL is wrong, and the launch tweet is already out.
Reactivating is the same toggle in reverse. Past clicks remain in your analytics; the link's slug, destinations, and rules are unchanged.
05Stacking the controls
All four controls coexist. You can put a password on a link with an expiry and a click cap, and pause it manually on top of that. The evaluation order is: paused beats expired beats capped beats password. Whichever fires first is what the visitor sees.
If you remember one thing: pause is not a delete. A paused link can come back. A deleted link is gone — slug freed, analytics retained but unjoinable, future creates with the same slug treated as a fresh link. When in doubt, pause.