Your app, on your own domain.
Every project is live at its own address from the first deploy. Point a domain you own at it when you are ready, decide for yourself when strangers can see it, and serve more than pages once they can.
The open web talks back.
Being online means more than serving pages. Two small files are enough to accept a signed webhook from a payment provider and hand structured data to anything that asks for it.
import { db, webhooks, config } from 'hatchable';
// senders have no session: the signature is the auth
export const access = 'public';
export const methods = ['POST'];
export default async function (req, res) {
const secret = await config.get('STRIPE_WEBHOOK_SECRET');
const sig = req.headers['stripe-signature'] || '';
const t = sig.match(/t=(\d+)/)?.[1];
const v1 = sig.match(/v1=([a-f0-9]+)/)?.[1];
const ok = await webhooks.verifyHmac({
raw: `${t}.${req.rawBody}`,
signature: v1, secret, timestamp: t,
});
if (!ok) return res.status(400).json({ error: 'Bad signature.' });
await db.query(
'UPDATE orders SET paid_at = now() WHERE ref = $1',
[req.body.data.object.id]
);
res.json({ received: true });
}
import { db } from 'hatchable';
// anyone, including anonymous visitors
export const access = 'public';
export const methods = ['GET'];
export default async function (req, res) {
const { rows } = await db.query(
`SELECT name, price_cents
FROM dishes
WHERE published
ORDER BY sort_order`
);
res.setHeader('cache-control', 'public, max-age=60');
res.json({ menu: rows });
}
A URL you can share, and a name that's yours.
The address, the certificate, the privacy switch, and the machinery that lets other services talk to your app. All of it comes with the project.
An address from the first deploy
Every project serves at your-slug.hatchable.site the moment your AI deploys it, over HTTPS. There is no build to configure, no server to pick, and nothing to switch on afterwards.
Your agent hands back a working link at the end of the very first build.
Your name on the door
Paste a domain you own into the project settings and add the one DNS record it shows you. A CNAME for a subdomain, an A or ALIAS record for a root domain. It verifies once the record resolves.
maria-cooks.com instead of a subdomain, usually minutes after the DNS lands.
The certificate is not your problem
A certificate is issued for your domain the first time somebody asks for it, and renewed for you after that. No ACME client to run, no renewal reminder in your calendar, and no charge per domain.
The padlock is there on day one and still there in year two.
Root, www, and a few brands
One project can answer to more than one name. Add the root domain and the www version, or park a second brand on the same app. Each hostname routes to the same code and gets its own certificate.
Up to ten hostnames on one project, within your plan's domain allowance.
Nobody sees it until you say so
A new project is private. The URL exists, but anyone who opens it has to sign in as you or as a collaborator you invited. Half-finished work is never quietly readable by a stranger who guesses the name.
The client portal you are still building is a login wall to everyone else.
Going public is a decision
Publishing is a switch in the project settings, and only the owner can flip it. Your AI can create, deploy, and preview all day, and it still cannot make your project public. That door opens from your side.
Your first published app is free, and it carries a small Built on Hatchable badge.
Show it around before you ship
Ask for a preview link and you get a URL that renders the app exactly as a stranger would see it, for thirty minutes, with the project still private. A private project's deploy returns one without being asked.
Send it to a client on their phone, get the note back, fix it, resend.
More than pages
Files under api/ become real HTTP endpoints, so your app can return JSON, receive webhooks and check their signatures, and call other services using secrets it holds for you.
Stripe marks an order paid. A partner pulls your catalogue as JSON.
The spec sheet, in plain terms.
https://{slug}.hatchable.site, live from the first deploy, on every plan.cname.hatchable.com for a subdomain. An A record, or ALIAS/ANAME flattening where your registrar offers it, for a root domain.api/, each declaring access of public, member, admin or scheduler. The edge enforces it before your code runs.webhooks.verifyHmac over the raw request body, compared in constant time, with an optional replay window that defaults to 5 minutes.Current as of August 2026. Domain allowances come from the same table the pricing page renders from, so the two cannot drift apart.
Say it like this.
Everything here is something your AI can do for you through its Hatchable connection. Pointing the domain and flipping a project public are the two steps you take yourself.
Asked and answered.
What address does my app get?
Its own. Every project serves at your-slug.hatchable.site over HTTPS from the first deploy, and that is a real production URL, not a preview sandbox. Share it, link to it, point a QR code at it.
How do I put it on a domain I own?
Open the project settings, paste the domain, and add the one DNS record it shows you. A subdomain like app.example.com takes a CNAME to cname.hatchable.com. A root domain like example.com takes an A record, or an ALIAS record if your registrar supports one. Once the record resolves, the domain verifies and starts serving, usually within minutes.
Is my app public the moment it deploys?
No. Projects start private, and anyone who opens the URL has to sign in as you or a collaborator. Going public is a switch in the project settings that only you can flip. Your AI can build, deploy, and show you a preview, but it cannot publish for you.
Can I publish on the free plan?
Yes, one app per account. It goes live on the open web at its hatchable.site address and carries a small Built on Hatchable badge. Builder removes the badge and publishes everything you make, on your own domains.
Can other services call my app?
Yes. Files under api/ become HTTP endpoints, so your app can return JSON to anything that asks. It can receive webhooks and verify their signatures, and it can call other APIs using secrets it stores for you. It is a backend, not a page.
Can I show someone the app before it goes public?
Yes. Ask your AI for a preview link and you get a URL that renders the app exactly as a stranger would see it, for thirty minutes, without making the project public. Deploying a private project hands one back automatically.
More detail lives in Share and sell and the pricing table.
Put it at your own address.
Connect the AI you already use, describe the app you want, and it comes back with a URL that works. The domain on the front of it is up to you.
Want the walkthrough? Share and sell covers publishing, domains, and handing an app to someone else.