A customer's public project answers on an address the customer chose — first a per-tenant subdomain of Motir's public namespace, then a domain they own.
Why this is a story and not a footnote on the one before it
The previous story moves /p/* to a namespace Motir owns. This one hands the address to the customer, and every mirror in the category treats that as a separate, PAID capability rather than as part of the move:
- Notion — a workspace claims one
notion.site domain on the free plan (five on paid); a custom domain is a paid add-on, and buying it also unlocks removing Notion's branding from that domain.
- Canny — every portal starts at
<subdomain>.canny.io; a custom domain such as feedback.company.com is configurable, and Canny's own help centre stresses marking it primary so it is the canonical source for search engines. Search-engine indexing of a board is itself gated to paid plans.
- Statuspage —
<company>.statuspage.io by default, custom domain + SSL excluded from the free plan, and the root domain is explicitly not usable: it must be a subdomain.
- Productboard — the portal is hosted on a customer domain via a "Host Portal on your domain" toggle.
So the shape is settled by the mirrors: a working default address for everyone, an owned address for customers who pay, and a canonical that names whichever one is primary.
Scope
The addressing model (a tenant-scoped subdomain, and its rename/redirect obligations — Atlassian's own documentation warns that an old product URL "keeps working as a redirect and is never released", which is the standard this must meet); the custom-domain record — verification, certificate issuance and renewal for a domain Motir does not control; the canonical/primary rule so two addresses for one page never compete; the settings surface a customer configures it from; and where it sits in the plan/tier boundary.
Boundary
- Ends at the address. It changes nothing about what a public project page RENDERS.
- Does not re-open the isolation decision — the namespace and its cookie boundary are the previous story's, and a customer domain inherits them.
- Does not decide PRICING. Which tier includes a custom domain is
8.1/8.6's call; this story ships the capability and the gate it reads.
- Assumes nothing about certificate machinery being in place — provisioning per-customer TLS is this story's own deliverable, and it is the reason this is not a settings checkbox.
Verification recipe
- In project settings, set a workspace's public subdomain; confirm the project resolves at it and the old address redirects.
- Add a custom domain, follow the verification instructions, and watch the certificate issue.
- Confirm the page's canonical names the primary address only, and that the non-primary one redirects rather than duplicating.
- Rename the subdomain; confirm the previous one keeps redirecting and is not released.
Acceptance criteria
- A workspace can claim a subdomain of Motir's public namespace, and a project resolves there; the reserved-name set and the rename/redirect obligation are both enforced and tested.
- A customer-owned domain can be verified and served with a valid, auto-renewing certificate, and its failure states (unverified, expired, revoked) each render something a customer can act on.
- Exactly one address per page is canonical; every other address for the same page 301s to it, and the JSON-LD
@id, og:url and sitemap entry name the canonical one.
- The capability reads the tier gate rather than hardcoding a plan, and the gate's name is cited on the card.
- The ADR records which of the four mirrors above each decision follows, with the observation it was read from.
Context refs
motir-core/docs/decisions/organization-url.md — its reversal condition and its rename-machinery warning (Linear's URL key, Atlassian's never-released redirect) are the standard this story meets
- The previous story's ADR — the namespace this one subdivides
motir-core/docs/decisions/billing-tiering.md · organization-tier.md — the gate this reads
- Notion Sites domains + custom-domain add-on; Canny custom domain + make primary; Statuspage custom domain and SSL; Productboard Host Portal on your domain