Routy

Custom Domains

Point a domain of your own at Routy so your tracking links, your pixel and your incoming postback URL all run on your brand instead of a shared Routy host.

What this feature does

Every click you send goes through a tracking URL, and by default that URL sits on a Routy host: https://affiliates.routy.app/route/123. Add a domain of your own and the same link becomes https://links.yourbrand.com/route/123. The visitor sees your brand in the address bar, and for coupon, content and review publishers, a platform-branded host is also the thing that tells a reader the link is monetised.

You can bring a domain you already own, or take a subdomain on Routy's own zone. Either way Routy provisions the TLS certificate through Cloudflare, so there is no certificate for you to buy, install or renew.

A domain is not only for links. Each one carries a usage setting covering three things: the tracking links on /route, the <script src> your pixel loads from, and the incoming postback URL you hand to a network. A domain you brought yourself is allowed all three unless someone deliberately holds it back to links.

What you'll get out of it

  • Tracking links on your own host, keeping the same /route/{linkId} path as the default: links.yourbrand.com/route/123. Nothing about how the click is recorded changes.
  • A TLS certificate Routy provisions and renews. For a domain you bring, Routy registers it with Cloudflare as a custom hostname using SSL for SaaS; for a subdomain on Routy's zone, Routy writes a proxied CNAME in that zone.
  • A hostname pre-check before you commit. POST /v1/affiliates/domains/verify-host-name says whether a candidate host is valid and available, so the form can tell you before the domain exists as a record.
  • The exact CNAME target to put in your own DNS, from GET /v1/affiliates/domains/pointed-to. You point your domain at that value and nothing else.
  • A verify call you can run yourself. POST /v1/affiliates/domains/main/verify re-runs the DNS and SSL checks and moves the domain's validation status on, which is what you use after your DNS change goes live.
  • A main domain you choose. Promote any of your domains with PATCH /v1/affiliates/domains/{domainId}/main, and the one you promote demotes the previous main domain.
  • A separate domain per traffic source, attached with POST /v1/traffic-sources/{trafficSourceId}/domains. Each traffic source takes at most one, and a hostname already in use comes back as a 409 rather than being silently attached twice.
  • Health checks run against your domain from outside Routy, against public DNS resolvers rather than our own, with an alert in Routy when a domain stops answering and another when it starts again.
  • Your postback URL and your pixel on the same host as your links, so the URL you paste into a network's backoffice and the script tag in your page source are both on your brand.

A domain is not retroactive and it is not portable by itself. A tracking link is a plain string once it is published, in a landing page or inside an ad platform, so links already in the wild keep naming the host they were generated on. They keep working while that host stays enabled, and they stop the moment it is disabled.

How it actually works

Two paths, and which one to take

A subdomain on Routy's zone, such as yourname.routy.app, is the quicker path: Routy owns the zone, so it writes the DNS record and the certificate follows, and there is nothing for you to do at a registrar. Take this if you want off the shared host today and don't yet care whose name is on it.

A domain you own, such as links.yourbrand.com, is the one worth doing properly. Routy registers it with Cloudflare as a custom hostname and provisions the certificate; you add a CNAME from your host to the target Routy gives you, and the domain goes live once your DNS change has propagated. The branch between the two paths is decided by who holds the parent zone, not by what the domain looks like, so a main domain on a zone you own takes the custom-hostname path just as a traffic-source domain does.

Getting a domain verified

A new domain starts in the new status, and it has to pass DNS and SSL verification before it becomes enabled and starts serving. The lifecycle statuses are new, enabled, suspend and disabled. Validation is reported separately and per check, as valid_dns or invalid_dns and valid_ssl or invalid_ssl, with valid once both pass, so a domain stuck half way says which half.

The order of work is: check the hostname, attach it to the traffic source it will serve, read the CNAME target, point your DNS at it, then run verify. A domain for a traffic source is yours to attach; a domain promoted to your account's main domain is added by us, so that one starts with a message to your account manager. Running verify before your DNS has propagated is harmless and reports invalid_dns, so there is no penalty for checking early.

What happens when a domain breaks

A domain that has gone live can still break later, usually because a CNAME was edited or removed at the registrar. Routy checks enabled domains from the outside, using public DNS resolvers instead of its own, and runs three checks in order: does the host resolve, does HTTPS come up with a valid certificate, and does the application answer /ping with pong. The run stops at the first failure and records it as a DNS, SSL or application failure.

Before anyone is told, Routy tries to fix it. A DNS failure where the Cloudflare custom hostname has gone missing gets the hostname re-added; an SSL failure gets the host's ingress recreated. Routy then waits and re-runs the checks, and a domain that comes back up this way never raises anything.

A failure that survives the repair raises a critical issue against that domain, typed domain_dns_failed, domain_ssl_failed or domain_app_failed, and you get an alert in Routy saying the domain stopped responding. The issue clears itself once the domain answers again, with a 30-minute threshold as a backstop, and a recovery alert follows. Worth knowing: a domain can fail a health check and still be serving traffic, so the alert is a reason to look rather than proof your tracking is down.

If it does not clear, our support team has the next layer. They can run a read-only check of the pieces, the database record, the Kubernetes ingress and the Cloudflare hostname with its SSL status, and a live one that resolves DNS, reads the certificate and calls /ping. From there they can recreate just the Cloudflare side, just the ingress, or both, or deactivate a domain and reactivate it, which tears the infrastructure down and rebuilds it without you deleting and re-adding the domain. The full verify enables the domain automatically if every check passes.

What counts against your plan

Custom domains have their own allowance, customer_domains, which counts the domains you brought that are in the new or enabled status. Suspended and disabled ones don't take a slot. Brand links used to be blocked by this same allowance, which made the limit confusing; they have their own brand-links quota now, so the two no longer interfere.

Two consequences are worth stating plainly. A plan with no custom-domain allowance blocks the feature rather than granting it, because an absent allowance reads as not included. And if your usage ends up over the limit, quota enforcement disables the excess domains, which disables the links on them, so it is worth watching the count before a plan change rather than after.

The count covers the domains you brought. A tracking host assigned to you by Routy is recorded as a different kind of domain and is deliberately left out of it, so a host we put you on is never a host you pay for.

Why this is worth doing

The reason to move off a shared host is not the look of the URL on its own. A tracking host that a lot of affiliates use is a host that can get blocklisted by a network or a link scanner, and you find out when a slice of your traffic stops converting. A domain you own is a domain whose reputation is yours to keep clean, and the only traffic on it is yours.

The second reason is that the pixel and the postback URL are the hardest things to move later. The pixel sits in your site's page source, often behind a CMS or an agency, and the postback URL sits in a network's backoffice, which means asking their affiliate manager to change it. Both of those can live on a domain of yours from the start, and then they never need to move again.

Setting one up is small. One CNAME, one verify call, and the certificate is Routy's problem rather than yours. The cost is that the links you have already published stay on the host that minted them, so the sooner a domain goes on, the less of your history is on a host you don't own.

Frequently asked questions

Do I have to bring my own domain?

No. A subdomain on Routy's zone gets you off the shared host with no registrar work, since Routy owns the zone and writes both the DNS record and the certificate. Bringing your own is what puts your name on the URL, and it's the one we'd suggest if you have a brand to protect.

Do I need to buy an SSL certificate?

No. Routy provisions it through Cloudflare, with SSL for SaaS for a domain you bring, and renews it. There is nothing to install on your side.

How long does it take before my domain works?

A subdomain on Routy's zone is quick, because nothing is waiting on your registrar. A domain you bring goes live once your CNAME has propagated, which is outside our control. Run the verify call after the change and read the validation status instead of guessing.

What happens to links I already created when I add a domain?

They keep naming the host they were generated on, because a published link is just a string in someone else's page or ad platform. They keep working while that host is enabled, and new links use your domain.

Can I use my domain for postbacks and the tracking pixel too?

Yes. A domain you brought is allowed all three uses, tracking links, the pixel script and the incoming postback URL, unless it was deliberately restricted to links.

How many custom domains can I have?

As many as your plan's custom-domain allowance covers. The count includes the domains you brought that are new or enabled, and excludes disabled ones and any tracking subdomain Routy assigned you.

My domain stopped working. Will I find out before my traffic does?

Routy checks enabled domains from outside, tries to repair the usual causes on its own, and alerts you in Routy if the failure persists. A single failed check isn't proof that tracking is down, so treat the alert as a prompt to look at the domain's validation status.

Can I use a bare domain like yourbrand.com rather than a subdomain?

Ask support before you plan around it. The setups described here all use a subdomain, so a bare domain is a question for your account manager rather than something to attempt from the form.

Ready to try Custom Domains?

Attach your domain to the traffic source it will serve, read the CNAME target Routy gives you, create that record at your registrar, then run verify. Promote it to your main domain once it reports valid, and generate one link to check the host on it.