Skip to content

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

SurfaceLands onWho 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
LocationA /near/... city + radius + categorySwirl 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:

  1. Serves a valid HTTPS certificate for your domain (obtained automatically from Let’s Encrypt — no cert ceremony, no waiting).
  2. 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.

  1. Click Add a domain.
  2. Enter the hostname (e.g. nc.dance or events.kingsroadballroom.com).
  3. 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.
  4. 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.
  5. Add the records at your provider. Wait a minute. Click Verify.
  6. 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:

BadgeMeaning
Awaiting DNSWe haven’t seen the TXT record yet. Add the records and click Verify.
Verify failedThe 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).
LiveCertificate 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.dance itself) — 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.