boltZharp Docs
domainMonitors

Domains

Get alerted before a domain registration runs out, and check that your DNS records resolve to the values you expect.

Two monitor types cover domains. A Domain expiry monitor reads the domain's WHOIS record and warns you ahead of its expiry date. A DNS records monitor looks up records such as A, MX or TXT and checks what they return.

How expiry is looked up

On every check, Zharp queries WHOIS directly, over port 43:

  • It asks whois.iana.org which registry is responsible for the domain's extension.
  • It asks that registry's WHOIS server for the domain.
  • If the registry points to the registrar's own WHOIS server, it asks there too, and uses that answer when it contains an expiry date. Otherwise it keeps the registry's answer.

From the record it reads the expiry date, and where present the creation and last-updated dates, the registrar, the nameservers, the DNSSEC state and the domain status codes. Days left are counted in whole days, rounded up.

Create a domain expiry monitor

  1. 1
    Choose the type

    On the Monitors page, click New, open the type picker and choose Domain expiry monitor.

  2. 2
    Enter the domain

    Fill in Domain name with the registered domain, such as example.com. Use the name you pay a registrar for, not a subdomain like www.example.com.

  3. 3
    Choose the warning period

    Open Advanced settings. Under Expiry settings, set Alert before expiry to 7, 14, 30, 60 or 90 days (default 30), and Alert on registrar change to Yes (default) or No. Then click Create monitor. A domain monitor has no SSL & domain verification section — that is for website, keyword and API monitors.

When it goes down

The monitor goes down when the days left reach the Alert before expiry value, and stays down until the registration is renewed and WHOIS shows the new date. It also goes down when the lookup itself fails, and — with Alert on registrar change on — when the registrar differs from the one seen on the monitor's first check.

What happenedMessage on the check
Expiry is within the alert periodDomain expires in 21 days (Threshold: 30)
The registration has expiredDomain expired on 3/14/2026
WHOIS answered, but without an expiry date Zharp could readDomain info parsing failed on whois.example-registry.net
A WHOIS server couldn't be reached or timed outWHOIS Lookup Error:
The registrar changed (Alert on registrar change on)Security Alert: Domain registrar changed from "Registrar A" to "Registrar B"

The last one is followed by the error. A healthy check reads Domain is healthy. Expires in 240 days.

The monitor page

  • The days until expiry, with Expires on, Registered on, Last updated and the Registrar.
  • A Nameservers card with Primary NS, Secondary NS, DNSSEC, Registrar lock and whether Transfer is allowed.
  • Recent checks. A row is marked CHANGED when something differs from the check before it: Registrar changed, Nameserver changed, DNSSEC enabled or DNSSEC disabled, Renewed, or Status changed. Open the row to see the before and after values.
info
Which changes alert
A registrar change takes the monitor down when Alert on registrar change is on. The registrar it compares against is the one from the monitor's first check; once you have confirmed a move was intended, save the monitor again to start comparing against the new registrar. Nameserver, DNSSEC and status changes show up in Recent checks but don't alert on their own.

DNS records monitors

A DNS records monitor resolves the records you list on every check and fails if a lookup fails or an answer doesn't contain the value you expect.

Create one

  1. 1
    Choose the type

    Click New on the Monitors page and choose DNS records monitor.

  2. 2
    Enter the domain

    Fill in Domain name, for example example.com. Record names below are relative to it.

  3. 3
    List the records

    Under DNS records to check, fill in one row per record, and click Add record for more. At least one row needs a hostname.

FieldWhat to enter
Hostname@ for the domain itself, or a name such as www, which becomes www.example.com. A name that already ends with the domain is used as it is.
TypeA, AAAA, CNAME, MX, TXT or NS. The default is A.
Expected valueText the answer must contain, such as an IP address or a mail server name. Optional.

How answers are matched

  • With an expected value, the record passes when any part of its answer contains that text, ignoring case. 203.0.113.10 passes if it is one of several A records. For MX, entering the mail host such as mail.example.com is enough. Because it is a text match, 203.0.113.1 also matches 203.0.113.10.
  • Without an expected value, the record passes as long as the lookup returns an answer.
  • Lookups use the resolver chosen under DNS settings → DNS server: Google (8.8.8.8), Cloudflare (1.1.1.1), Quad9 (9.9.9.9), or Automatic for the checking server's own resolver.

Check propagation

With Check propagation set to Yes, every record that answered is asked again of Google, Cloudflare, Quad9 and OpenDNS (skipping the one already used). The check fails if any of them answers differently or not at all, and the message names the resolvers that are behind. With an expected value, each resolver only has to return that value; without one, the answers must match exactly, ignoring order and TTL — so a name that answers differently by location, such as one behind a CDN, needs an expected value.

When it goes down

What happenedMessage on the check
An answer didn't contain the expected valueDNS validation failed for www.example.com (A)
The lookup returned an error, such as no such recordDNS lookup failed for www.example.com:
A public resolver disagreed (Check propagation on)DNS not fully propagated for www.example.com (A): Cloudflare (1.1.1.1) answers differently

Every record is looked up on each check; the message names the first one that failed. The monitor page shows a DNS records card with what each record returned against what you expected, the query time, and the TTL for A and AAAA records. The Zone card shows the domain's SOA serial, primary nameserver and refresh time.

Troubleshooting

Domain info parsing failed

The WHOIS server answered, but the answer had no expiry date in a form Zharp recognises — or no record at all, which is what a subdomain gets. Check that Domain name is the registered domain and not a subdomain, and run whois example.com yourself to see what the registry returns.

WHOIS Lookup Error or a timeout

Some WHOIS servers limit how often they answer the same client. If errors come and go, set a longer Check frequency under Advanced settings — an expiry date doesn't change from minute to minute.

A DNS record fails right after I changed it

Resolvers keep the old answer until its TTL runs out. Wait for the TTL shown on the monitor page to pass, or lower the TTL before you make planned changes.