inmake DOCS
Docs / Tenant hosting / Custom domains

Custom domains

Binding a domain DNS-first with the _drop TXT record; certificates; requirements.

Every published store is served at https://{sid}.inbs.dev (Demo: https://demo-{sid}.inbs.dev) by the tenant fleet. A store can also be reached on its own domain, bound DNS-first — there is no server-side domain registry, DNS is the state.

Binding a domain#

  1. In CRM & Studio open Website › Hosting. The card shows the record values for your store.
  2. Create the records at your DNS provider:
    • the _drop.{domain} TXT record carrying drop-site={env}.{sid}.{site_key} — the store's site_key is unguessable, so the TXT proves both domain-owner and store-owner intent;
    • an A/AAAA record pointing at the fleet (or a CNAME where the target advertises one — the card says which).
  3. Click Connect. The server validates the TXT record and, on success, registers a certificate for the domain. The card then shows the certificate status and live checks (TXT, A/AAAA, HTTPS).

The first bound domain becomes the store's canonical site URL (used in sitemaps and canonical links).

How it resolves#

The tenant server binds an unknown host lazily on first request: _drop.{host} TXT → drop-site={env}.{sid}.{site_key} → resolve the store → the TXT's key must match the store's site_key. Transport failures never unbind a domain; only two consecutive sweeps that positively confirm a missing or mismatched record do. Removing the TXT record (or Disconnect in CRM & Studio) unbinds it.

Before the record exists#

A domain whose A/AAAA (or CNAME) already reaches the fleet but has no valid _drop TXT record does not answer a blank 404: the server shows a DNS onboarding page (HTTP 404, noindex) naming the domain, pointing at Website › Hosting for the record (the page never spells it out — the value carries the project's private site key) and saying why the last check failed — record missing, DNS unreachable, an environment this server doesn't host, a project that isn't hosted here, or a key that no longer matches (copy the value from the Hosting card again). The page is in English or Czech after the browser's language, and Check again simply reloads it; the negative result is cached for about a minute, so a just-created record binds within that window — or at once through Connect on the Hosting card, whose failed answer carries the same verdict as detail.

Requirements#

  • Web hosting must be enabled for the store (automatic for new stores; Enable web hosting on the card repairs older ones).
  • The store must be published — an unpublished store answers 404 on every host, custom domains included.
  • Custom domains are a paid-plan feature in CRM & Studio (platform administrators bypass).