How it works
Your own address, step by step
A name on our domain, or your own
Either is a paid feature; both work the same way for the person clicking.
You prove the domain is yours first
When you save your own domain, Hazelsong makes a TXT record for your project and that name, named _hazelsong.<your domain>, and shows you its value once. Until that record is found in your DNS the domain is pending: it is not registered with the host, nothing is served on it, and it does not stop any other project. Press Verify once you have added it. This is what stops somebody else from putting their page on a name you own, including one you once pointed here and later removed. Only a fingerprint of the value is kept, so if you lose it, make a new one.
The certificate is arranged for you
Once it is verified you add one more DNS record, the CNAME or the A record; the rest is done here.
It is claimed, never written over
An address is taken with a claim that fails if somebody already has it — never a plain write that could hand one business's wall to another. A pending domain claims nothing, so the first project to prove a name is the one that holds it.
The widget from your own domain too
The same domain serves your widget, its testimonials, pictures, videos and counts, and the ask dialog, for your project only — so the two lines on your site can name your address rather than ours. Walls and widgets writes them that way when you choose it.
Watched once it works
Once your own domain has answered, the daily run asks the host about it again: whether it still points here, and whether the host can still confirm it is yours. If not, your report's "Is anything broken?" says so with the exact DNS record to add — the CNAME, the A record on a bare domain, or the TXT record the host asks for — and when the same check fails twice in a row you get one email, at most once a week while it lasts. The first check that finds it answering again clears the line.
Safe by design
The rule that makes it safe to have
Clear boundaries
What it will not do
Every capability page ends with this list. It is the part that says what you are actually buying.
- It will not register or serve a domain before its TXT record is found in your DNS.
- It will not take an address that is in use.
- It does not sell you the domain.
- It will not tell you a domain is broken while it is still being set up, or because the host did not answer: only an answer that says so counts, and only for a domain that once worked.
- It will not change your DNS. It tells you the record; adding it is yours.
- Your domain will not serve another project's widget, testimonials, pictures or counts: asked for there, they are not found.
Where it lives in the code: lib/domain-proof.ts · app/api/domains/route.ts · scripts/domain-proof-check.mjs · lib/domains.ts · lib/domain-watch.ts · lib/domain-watch-rules.ts · lib/care.ts · proxy.ts · lib/own-domain-rules.ts · scripts/own-domain-widget.mjs · app/d/[host]/page.tsx
Questions
Asked about this
From Help, where every answer is written from the product as it runs.
How much code is it?
Two lines: a script tag and a div. The layout is a query string on the script tag, or a data attribute on the div — both of which live in your page, so turning a wall into a marquee later means editing those two lines where you pasted them. There is nothing to rebuild at this end.
It shows nothing on my page.
Three usual causes, in order of likelihood: nothing is published yet (Pending is not published); the builder you are using strips script tags from block content, in which case the tag goes in the theme footer; or you are looking at the editor preview rather than the live page, which is normal on Webflow, Framer, Elementor and Squarespace.
Can I embed it in Notion or a newsletter?
No, and not because of us: neither runs a third-party script. Link the hosted wall in Notion, and use a testimonial image in the newsletter. Email has not run JavaScript for twenty years.
Does the widget slow my page down?
It is one small script with no framework behind it and no font to fetch. It draws after your page has drawn.
This is running now
Open a project and use it. Nothing on this page is a roadmap.