MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-3878

Customer-owned addresses for a public project — per-tenant subdomains + custom domains

Blocked
Description

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

  1. In project settings, set a workspace's public subdomain; confirm the project resolves at it and the old address redirects.
  2. Add a custom domain, follow the verification instructions, and watch the certificate issue.
  3. Confirm the page's canonical names the primary address only, and that the non-primary one redirects rather than duplicating.
  4. 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