Short links
A short link is a memorable path on a domain you already have in RouteSeam — go.example.com/docs — that sends visitors to a longer URL somewhere else. It is the same kind of object as a domain redirect: a route, published to the same edge, answered the same way. The difference is scope. A short link matches one exact path; the domain’s catch-all answers everything else.
Before you start
Section titled “Before you start”A short link lives on a domain you own, so add the domain first and point its DNS at RouteSeam. A link is no more available than the domain under it: until the domain is active, the link shows the domain’s own status — DNS Pending or Provisioning SSL — rather than Active. See DNS setup.
Creating a short link
Section titled “Creating a short link”Open Short links in the dashboard sidebar and choose New short link. The form asks for:
- Domain — which of your domains the link lives on. A link stays on the domain it was created on; to move one, remove it and create it again on the other domain.
- Slug — the path after the hostname. Leave it empty and RouteSeam generates one.
- Where it should go — the full destination URL, including
https://. It must be a realhttp://orhttps://URL, and RouteSeam refuses a destination that points back at the same domain or at another RouteSeam domain that redirects back to it. - Redirect type — 301, 302, 307, or 308. The default is 302.
- Preserve query strings — on by default.
- Expires on — optional, and always a future date.
Creating, editing, or removing a link publishes a new edge configuration. The change is live within a minute.
A slug can contain letters, numbers, and the characters -, ., _, and ~. It has to start with a letter or a number, and it can be nested with slashes: go/docs is valid and produces example.com/go/docs. Leading and trailing slashes are ignored, so docs and /docs create the same link. The whole slug can be up to 200 characters.
Each path can be used once per domain. If the slug is already taken, RouteSeam says so, keeps everything else you typed, and lets you pick another.
Generated slugs
Section titled “Generated slugs”Leave the slug empty and RouteSeam generates a random seven-character one. The alphabet it draws from leaves out 0, O, I, and l, so a link read aloud or copied off a slide cannot land on the wrong place.
Slugs are case-sensitive
Section titled “Slugs are case-sensitive”The edge matches paths exactly, so /Docs and /docs are two different links. Someone who types the wrong case does not reach your link — the request falls through to the domain’s catch-all, or gets a 404 if the domain has no active catch-all. Lowercase slugs are the safest habit.
Choosing a redirect type
Section titled “Choosing a redirect type”All four status codes are available and the trade-offs described in redirect types still apply. What differs is the default.
302 is the default for short links, where a domain’s catch-all defaults to 308. A short link’s destination is expected to change — repointing it is much of the reason to have one. A 301 or 308 is cached by browsers and search engines, and a cached permanent redirect cannot be withdrawn: someone who followed the old one may keep landing on the old destination long after you updated the link. RouteSeam sends Cache-Control: no-store with 302 and 307 responses, so a temporary link stays changeable.
| If the link is… | Use |
|---|---|
| A campaign, a printed or scanned target, anything you may repoint (default) | 302 |
| Reversible and may carry non-GET traffic | 307 |
| A permanent shortcut whose destination will never move | 301 or 308 |
What a link matches
Section titled “What a link matches”A short link answers exactly one path. example.com/docs matches; example.com/docs/getting-started does not, and falls through to the domain’s catch-all. Visitors are sent to the destination URL as you entered it — nothing from the request path is appended to it.
Query strings. With Preserve query strings on, which is the default, parameters on the incoming request are carried through, so example.com/docs?utm_source=slides arrives at the destination with utm_source intact. Parameters already written into the destination URL take precedence over ones from the request. Turn the option off to send every visitor to the destination exactly as written.
Short links and the domain’s catch-all
Section titled “Short links and the domain’s catch-all”A domain has one catch-all redirect and any number of short links. At the edge an exact path match wins: RouteSeam looks for a short link at the requested path first, and only falls back to the catch-all when there is none. Adding short links never changes where the rest of the domain’s traffic goes.
That fallback also decides what happens when a link stops resolving. A link that is disabled or past its expiry is left out of the published configuration, so requests to its path are answered by the domain’s catch-all again — or with a 404 if the domain has no active catch-all. See domains and routes.
Expiry and switching a link off
Section titled “Expiry and switching a link off”Expires on is optional and takes a future date. After it passes the link stops resolving and shows as Suspended in the list, with the expiry date underneath. Clearing the date removes the expiry.
Enabled is a switch on a link that already exists. Switching it off keeps the link and its slug — the path stays yours — but stops it resolving, and the link shows as Suspended. Switch it back on whenever you like. Removing a link instead frees the slug, and the link stops resolving within a minute.
Click counts
Section titled “Click counts”The short links list has a Last 7 days column: the number of requests the edge answered for that exact path on that domain over the past seven days. Because matching is exact and case-sensitive, requests to a different spelling or case are counted as a different path.
The window is seven days during early access, so the number means the same thing for everyone. For fuller traffic reporting, see analytics, which is reported per domain rather than per link.
Plan limits
Section titled “Plan limits”Short links have no limit of their own. Each one counts as a route against your organization’s route limit, exactly as a domain’s catch-all redirect does. At the limit, creating a link is declined with a message naming the allowance and a link to the plan and usage page; existing links keep working. See early access and usage.
Managing short links through the API
Section titled “Managing short links through the API”Organizations granted API access during early access can manage links through the API, nested under the domain:
GET /api/v1/domains/{domain_id}/short_linksPOST /api/v1/domains/{domain_id}/short_linksGET /api/v1/domains/{domain_id}/short_links/{id}PATCH /api/v1/domains/{domain_id}/short_links/{id}DELETE /api/v1/domains/{domain_id}/short_links/{id}Request and response bodies, validation errors, and exact status codes are in the API reference. Three behaviours are worth knowing before you write a client:
slugis optional on create and generated when you omit it.- On update an omitted field is left alone, while an explicit
nullforexpires_atclears the expiry. - The list endpoint returns every link on the domain in one response. There is no pagination today.
Related pages
Section titled “Related pages”- Redirect types — the four status codes in detail.
- Domains and routes — how a short link relates to the domain’s catch-all.
- Analytics — per-domain traffic reporting and retention by plan.