# Zulink

## Custom domains

> Category: Getting started

---

## Pages


### Getting started

- [What is Zulink?](https://docs.zulink.co/getting-started/what-is-zulink)
- [Quickstart](https://docs.zulink.co/getting-started/quickstart)
- [Custom domains](https://docs.zulink.co/getting-started/custom-domains)

### Links

- [Creating links](https://docs.zulink.co/links/creating-links)
- [Targeting](https://docs.zulink.co/links/targeting)
- [A/B testing](https://docs.zulink.co/links/a-b-testing)
- [Link security](https://docs.zulink.co/links/link-security)
- [Social previews](https://docs.zulink.co/links/social-previews)

### Design and analytics

- [OpenGraph Designer](https://docs.zulink.co/design-and-analytics/opengraph-designer)
- [Analytics](https://docs.zulink.co/design-and-analytics/analytics)

### Team and plans

- [Members and invitations](https://docs.zulink.co/team-and-plans/members-and-invitations)
- [Roles and permissions](https://docs.zulink.co/team-and-plans/roles-and-permissions)

### AI agents

- [MCP Server](https://docs.zulink.co/ai-agents/mcp-server)

---

# Custom domains

Zulink has no shared default domain. Every short link runs on a hostname you connected yourself, which means the links carry your name and stay yours.

## Adding a domain

**Project settings → Domains → Add domain**. Enter the domain or subdomain you want to use, for example `go.example.com` or `example.link`.

The domain appears in the list right away, together with the DNS record you need to create at your provider. The panel shows the record type, the name and the value to enter. Copy it over exactly.

Which record that is depends on the kind of hostname you connected. A subdomain such as `go.example.com` points at Zulink with a `CNAME` record. A root domain such as `example.link` cannot carry a `CNAME`, so it uses an `A` record instead, entered under the name `@` at your provider. You do not have to work any of this out yourself. The panel already shows the record that fits the hostname you added.

## Verification

Zulink looks the record up and derives the domain's state from what it finds:

| State | Meaning |
| --- | --- |
| Checking | The domain was added but not looked at yet. |
| DNS configured correctly | The record was found. The domain is verified and usable. |
| DNS not configured correctly | No matching record was found at the last check. |

Unverified domains are re-checked automatically every few minutes, so you can add the record and walk away. Nothing needs to be triggered by hand. A domain that was verified and later loses its record falls back to the failed state at the next check, and its links stop resolving until the record is back.

Leave the record in place permanently. It is not a one-time proof of ownership; it is what routes visitors to Zulink.

## One domain, one project

The same hostname can sit in several projects while it is still unverified, but only one project can hold it verified. Whichever project verifies it first claims it; the others will report the domain as already in use.

## Using the domain

A verified domain can be picked in the domain field whenever you create or edit a link. Unverified domains are not offered, and links cannot be created for them.

Requests to a path that has no link, or to a link that has expired, return a not-found page. Nothing else on the hostname is served.

## Root links

Leaving the short link path empty makes the domain root itself a link, so `go.example.com` redirects on its own. This is available from the Pro plan upwards.

## Removing a domain

Removing a domain from a project removes every link on it. The short URLs stop working immediately and cannot be restored, so make sure none of them are still printed, scheduled or shared somewhere before you remove it.

## Limits

How many domains a project may connect depends on its plan. The numbers are on [Plans and limits](https://docs.zulink.co/team-and-plans/plans-and-limits).
