Custom domains
A custom domain is a memorable front door to a page on Swirl — say nc.dance taking people to the dance-events-near-Nevada-City listing, or kingsroadballroom.com taking them to your venue page. Visitors who go to your domain are redirected to the matching page on swirl.events.
It’s a shortcut, not a separate site. Everyone lands on swirl.events as themselves — signed in, with their saved events, location, and preferences intact.
What you can attach a domain to
| Surface | Lands on | Who can attach it |
|---|---|---|
| Event | /events/<slug>/ | Event owners / managers |
| Venue | /venues/<slug>/ | Venue owners / managers (see Claiming a venue) |
| Host | /hosts/<slug>/ | The host themselves |
| Series | /series/<slug>/ | Series owner |
| Location | A /near/... city + radius + category | Swirl admins only |
You can attach more than one hostname to the same surface — typically example.com and www.example.com so both work.
How it works (the short version)
Your domain points at a small Swirl server that:
- Serves a valid HTTPS certificate for your domain (obtained automatically from Let’s Encrypt — no cert ceremony, no waiting).
- Redirects the visitor to the matching page on
swirl.events, preserving the rest of the path.
That’s it — no app runs under your domain, so there’s nothing to break and nobody ends up in a signed-out copy of the site.
Adding a domain
From the host workspace, open the surface you want (an event in the editor, a venue at /manage/venues/[id]/, etc.) and find the Custom domain section.
- Click Add a domain.
- Enter the hostname (e.g.
nc.danceorevents.kingsroadballroom.com). - The panel expands with two records to add — an A record pointing your hostname at our server’s IP, and a TXT record at
_swirl-verify.<your-host>that proves you control the domain. Click any name or value to copy it. - We auto-detect your DNS provider from its name servers and show step-by-step instructions for it (Cloudflare, Namecheap, Porkbun, GoDaddy, Squarespace, Route 53, DNSimple, Hover, and more). If we get it wrong, pick from the dropdown.
- Add the records at your provider. Wait a minute. Click Verify.
- Once verification succeeds, the domain goes live within ~30 seconds, and the HTTPS certificate is issued automatically.
Status badges
Each domain shows where it is in the lifecycle:
| Badge | Meaning |
|---|---|
| Awaiting DNS | We haven’t seen the TXT record yet. Add the records and click Verify. |
| Verify failed | The lookup ran but didn’t find the right TXT value. Common: typo, propagation delay. |
| Live (cert pending) | Verified and serving; the certificate is being obtained (a few seconds on first hit). |
| Live | Certificate issued and serving. |
Once it’s live you’ll get a Visit ↗ link to open it.
Removing a domain
Click Remove on the row. Visitors to that hostname will get a connection error until you remove the DNS records or repoint them elsewhere.
Limits
There’s a soft cap of 10 custom domains per registered domain per week, per user — well below what your DNS or certificate provider would consider abusive. Most people will never come close. If you hit it, wait a week or email events@swirl.events with the reason.
The cap exists because of Let’s Encrypt’s own rate limits (50 certificates per registered domain per week); we stay well under so one person can’t exhaust the shared budget.
What if my DNS provider isn’t in your list?
Pick Other / not sure. The walkthrough still tells you exactly what to add — a generic A record and a generic TXT record. Every DNS provider supports those.
Troubleshooting
- Verify failed, but I added the TXT record. DNS usually propagates in a minute or two — try again. If it still fails, double-check the record name (
_swirl-verify.<your-host>) and value (swirl-verify=...) match exactly, prefix included. (We check your domain’s authoritative name servers directly, so a fixed typo is picked up right away rather than waiting out a cached copy.) - Connection / TLS error in the browser. Either DNS hasn’t propagated yet, or the A record isn’t pointing at our server. Confirm with
dig +short <your-host>. - Route 53 apex. Leave the record name blank for the apex (e.g. for
nc.danceitself) — don’t type@, which Route 53 turns into a literal@.nc.dance. - Two domains, one page. Add them as two separate domains (one for the apex, one for
www.). They verify and serve independently.