Domains & Association Files
Set up LinkTrail link domains: a free linktrail.io subdomain or your own host with CNAME and TXT records, its statuses, and the association files served.
A link domain is the host in your link URLs. LinkTrail serves the short links on it and the two association files that let iOS and Android open your app instead of the browser. There are two kinds:
| Provisioned subdomain | Custom domain | |
|---|---|---|
| Example | yourapp.linktrail.io | go.yourbrand.com |
| DNS | None — LinkTrail owns the zone | A CNAME and a TXT record at your DNS provider |
| TLS | Immediate | Issued automatically once DNS checks pass |
| Ready | As soon as it is added | When its status reaches Active |
| Plans | Every plan | Growth (up to 5) and Scale (unlimited) |
Domains belong to a workspace, like apps, links and API keys, and a host can be in one workspace only — adding a host another workspace uses fails with "This domain is already in use".
Add the domain
Dashboard → Domains → Add domain. Choose Custom domain and enter the host — a subdomain you control, such as
go.yourbrand.com. The next screen shows the exact DNS records to add.Add the DNS records
Add both records at your DNS provider, copying the values from the dashboard:
DNS recordsTextType Name Value CNAME go.yourbrand.com custom.linktrail.io TXT _linktrail.go.yourbrand.com linktrail-verify=<token>- The CNAME sends the host's traffic to LinkTrail; the TXT record proves you control the zone.
- Remove any A or AAAA record on the host first. An address record and a CNAME cannot coexist, and most providers silently ignore the CNAME — the verify check names the conflicting record.
- A TXT name can hold several values, so
linktrail-verify=entries for staging and production can sit side by side.
Verify
Click Verify once the records are live. The checks run in order — CNAME, TXT, then TLS — and the domain moves through three statuses:
Status Dashboard shows Meaning pending_dnsAction needed A DNS record is missing or conflicting. The check says which, and the fix. pending_tlsIssuing certificate… DNS passed; the certificate is being issued, usually within a few minutes. activeActive Short links redirect and the association files are served. WarningA custom domain's short links only redirect once it is Active. Don't put the domain in a campaign while it is still pending.
Point your app at it
Add the host to the app and ship an update:
applinks:go.yourbrand.comin the iOS Associated Domains entitlement (Xcode setup), and anandroid:autoVerify="true"intent filter for the host on Android (Deep-link setup). If you setlinkDomainsin the SDK options, add the host there too.
Association files
Every active domain serves /.well-known/apple-app-site-association and /.well-known/assetlinks.json, generated from the apps registered in its workspace. There is nothing to upload: the AASA lists each iOS app as <Team ID>.<bundle ID>, and assetlinks.json lists each Android package with its SHA-256 fingerprints. To change them, edit the app in the dashboard.
- By default a domain serves every app in the workspace. To serve a subset, set
associatedAppIdswith the Domains API. - A removed domain serves no files and its short links stop redirecting. Adding the same host again from the same workspace brings it back with its links — a subdomain as Active, a custom domain as Action needed (
pending_dns), to be verified again before its links redirect. - iOS devices read the AASA through Apple's CDN, which caches it — after a change, reinstall the app to pick it up sooner. Android caches its verification per device; see Troubleshooting.
curl -s https://go.yourbrand.com/.well-known/apple-app-site-association
curl -s https://go.yourbrand.com/.well-known/assetlinks.jsonOr check both files, the Content-Type and redirects with the free Universal Links validator.