# Custom domains

> Point your own domain at a Guv service. Guv verifies ownership and issues certificates automatically.

Every web service gets a generated address on `guv.run` as soon as it deploys. To use your own domain, add it to the service and create the DNS records Guv shows you.

## Add a domain

In the dashboard, open the service and choose **Add your own domain**. Or use the CLI:

```bash
guv domains add www.example.co.uk --service web
```

Guv works out who your registrar is and shows instructions for it. There are step-by-step guides for 123-reg, GoDaddy, Namecheap, Cloudflare, IONOS and Fasthosts.

You will create two records:

1. A **TXT** record that proves you own the domain.
2. A **CNAME** (or, for a bare domain such as `example.co.uk`, an **A** and **AAAA**) record that sends traffic to Guv.

Then verify:

```bash
guv domains verify www.example.co.uk
```

The dashboard checks for you as you go: DNS, then ownership, then the certificate, then live.

## In guv.yaml

```yaml
services:
  web:
    domains:
      - www.example.co.uk
      - host: example.co.uk
        redirect_to: www.example.co.uk
```

## Good to know

- **Certificates** are issued and renewed automatically.
- **Wildcards** such as `*.example.co.uk` need DNS delegation so certificates can be issued.
- A domain verified by one account can never be claimed by another. If you see [`domain_taken`](/errors/domain_taken/), remove it from the other project first.
- If your DNS changes have not appeared yet, [`domain_verification_failed`](/errors/domain_verification_failed/) explains what to check.
