Custom Owner Portal
Request a branded owner portal domain and email setup
Custom owner portal domains are available through a support-managed pilot. Submit a custom support request before changing DNS. Support confirms availability and supplies the exact records for your team. Support configures the feature without a customer-specific application release. A domain does not grant access: owners still need an invitation and permission to view their statements.
Set up the domain yourself
Teams enrolled by support can run the setup from team settings or the API. Only Team Admins
can change it; other members can read it. Teams that are not enrolled keep the support-managed
setup, and GET /team/owner-portal/setup reports setupEnabled: false.
PUT /team/owner-portal/setupwithexpectedRevision: 0adds the domain, branding and an optional sender inpendingstatus.POST /team/owner-portal/setup/providerscreates the Cloudflare, Clerk and Postmark records and returns each provider's status with the DNS records to add. Call it again to recheck after changing DNS; repeated calls create nothing new.- Once Cloudflare and Clerk report
verified, and Postmark too when a sender is set, sendstatus: "active"with the current revision. Then sendlinksEnabled: trueto use the domain in owner emails. - Send
status: "disabled"andlinksEnabled: falseto turn the portal off. DELETE /team/owner-portal/setupwith the current revision removes a domain that is not live, together with its Cloudflare, Clerk and Postmark records, so another domain can be added. Turn a live domain off first. Links in emails already sent to owners stop opening once it is removed.
Each provider shows one status. missing means the record is not created yet; run step 2.
pending means the provider is waiting for your DNS. DNS changes usually apply within an hour and
can take up to a day. verified means the provider has checked the records. When your DNS is
on Cloudflare, set every record to DNS only; proxied records cannot be verified.
Logos are uploaded with POST /team/owner-portal/setup/logo and must be square PNGs of at most
512 × 512 pixels and 200 KB. The portal uses the logo as its browser tab and home screen icon;
without a logo, the icon is a square in the primary colour. The primary colour needs at least
4.5:1 contrast with white text.
To change the sender of a live portal, call step 2 with senderFrom first and save the sender
once Postmark reports verified.
Each team has one domain. A domain registered to another team is refused. Every write sends
the current revision as expectedRevision; a stale revision is refused with
ownerPortalChanged. Removing the platform footer stays with support. Every change appears
in the team's audit log as an ownerPortal event.
What to provide
- Your team ID and desired subdomain, such as
owners.example.com. - A DNS administrator who can add the records supplied by support.
- Your company display name, at most 60 characters.
- A square PNG logo, at most 512 × 512 pixels and 200 KB, for upload to our asset storage.
- A primary colour from the existing UI palette, or a colour for contrast review.
- Your company/statement address and support phone, with contact labels at most 80 characters.
- Your requested sender address and an existing, monitored reply-to mailbox.
Support checks that the selected colour has at least 4.5:1 contrast with button text and that the logo fits the fixed layout. Use the existing team settings for logo, colours, company name and contact details. Changes to the public sign-in brand require support to update the approved public presentation.
Fonts, spacing, positions, layouts and PDF templates cannot be changed. We do not supply a copy of our PDF generator. Existing email content editing remains available. Customer SMTP servers are not supported.
DNS and authentication
Support supplies portal ownership/routing records, a Clerk Frontend API CNAME and the Postmark DKIM and return-path records for your sending domain. Add those exact records and keep them in place. Do not change your existing MX records or add a second SPF record. Every record must be DNS-only when using Cloudflare.
Support verifies domain ownership, TLS and sending identity, then tests the portal with a controlled owner account before enabling links in outgoing invitations and statements. Domain setup does not activate customer access automatically.
Sign-in and account creation briefly visit VRPlatform's primary authentication domain, then return to your portal. Clerk satellites share the existing account and session. Owners do not need a separate account for the custom hostname.
Portal and email behaviour
The custom hostname covers the owner portal, statement links, invitation links, calendar, files and supported account features. Features remain subject to your existing settings and each owner's permissions. The custom portal displays only its registered team's profiles. Manager access uses the normal platform portal.
While the portal is active, the registered name is the brand owners see. It appears in the
portal navigation and sign-in screens, the owner invitation page, the statement page and
emailed statement link page, the header of owner statement and owner statement summary PDFs, and in the subject, body, sender name and footer of
owner invitation and statement emails. Without an active portal, owner PDFs show the team's company
name, or the team name when no company name is set, and owner emails use the platform name.
The company name stays the legal name. Documents that identify the company legally, such as 1099
forms, the property manager statement and the trust reconciliation, keep it.
A requested sender identity is used only after support verifies it. An explicit verified
reply-to mailbox receives replies. Statement PDFs keep their existing layout, contact details
and page numbers. Support can disable the promotional platform footer with showPlatformBranding. Custom
sender, name and footer settings apply only while the portal is active; a pending or disabled
portal sends platform-branded mail from the platform sender.
Branding delivery to the portal
The portal edge reads approved presentation and routing for a registered hostname from an
internal, machine-authenticated API and embeds it into every page it serves; the browser
never calls the API for this. The embedded data exposes no owner records, balances or
credentials. portalEnabled is false until activation and after disabling the portal, and the
edge stops serving the portal in both states. The edge reuses a lookup for up to 30 seconds and
the API for up to one minute, so activation changes apply within that window. Embedded
presentation does not authorize API requests; authenticated team and owner permissions still
apply.
{
"hostname": "owners.example.com",
"portalEnabled": true,
"teamId": "11111111-1111-4111-8111-111111111111",
"slug": "example-team",
"dataRegion": "us",
"name": "Example Company",
"logo": null,
"colorPrimary": "#1343CC",
"showPlatformBranding": false,
"signInUrl": "https://portal.vrplatform.app/owner-login?owner_portal=owners.example.com",
"signUpUrl": "https://portal.vrplatform.app/owner-sign-up?owner_portal=owners.example.com"
}Contact support before removing DNS or changing domains. Previously delivered links need to remain reachable during a domain change.
