Custom domains for a project
You can put a project on your own subdomain (for exampleapp.yourcompany.com) so customers open your brand, not only on a GenieForge subdomain. Apex domains (like yourcompany.com alone) are not supported yet; use a subdomain.
When you add a domain, choose its purpose:
- Portal: signed-in customer portal and public intake links
- Project landing: public marketing site for that project. Public intake also opens here when the project has no Portal domain (or when a guest is already on this host)
- App landing: public product marketing site for the app (not tied to one client project). Does not serve intake
/manifest.webmanifest), a crawler allow file (/robots.txt), a /sitemap.xml of published guest URLs, and an llms.txt that lists the same pages. In Google Search Console, add the landing hostname and submit https://your-domain/sitemap.xml (not the GenieForge marketing sitemap). Builder Preview does not install as an app and does not need those files. Some AI crawlers are still blocked on the hostname. That is separate from GenieForge app access.
A platform Slug (your-slug.genieforge.ai) is always a Portal-style host. Landing sites need their own landing-purpose custom domain. HIPAA-enabled apps cannot use Project landing or App landing domains.
Set it up
- Open Project Settings for the project.
- Under Public access & domains, confirm Public Project is on (new projects start with it on). Visitors cannot open a custom domain until this is on (Portal and Project landing). App landing hosts are app-scoped and do not require a project slug.
- Under Custom Domains, add a hostname and choose Portal, Project landing, or App landing. Every project also gets a platform Slug for a
your-slug.genieforge.aiURL (neutral by default; you can rename it). Custom domains do not require that slug. - At your DNS provider, create:
- A CNAME from your hostname to the target shown in Project Settings (typically
customers.genieforge.app) - A TXT record named
_genieforge-verify.<your-hostname>with the token GenieForge shows
- A CNAME from your hostname to the target shown in Project Settings (typically
- Click Verify. Ownership is checked first, then SSL is provisioned. Status moves through pending verification, pending SSL, then active.
- If SSL is still pending, keep the CNAME in place and use Refresh until the status is active.
_genieforge-verify.<your-hostname> works, then click Verify again. A “not visible in public DNS” error means the registry has not published nameservers yet, not that the Host values are wrong.
In Build chat you can also ask: “Put this project on app.yourcompany.com as a Portal domain. Walk me through CNAME and TXT verify in Project Settings.”
Host field vs full DNS name
Project Settings shows the Host values to type at your registrar. Many registrars (Namecheap, GoDaddy, Cloudflare DNS) append your root domain automatically in the Host / Name field. Verify then looks up the full name in public DNS. If your zone isyourcompany.com and the custom domain is app.yourcompany.com:
If you paste the full name into Host and the provider also appends the zone, the record ends up on the wrong name and Verify fails with “TXT record not found”.
If a hostname points at the GenieForge CNAME target but is not an active public custom domain, visitors see a generic “This domain is not configured” page, not the GenieForge marketing site. If the domain is already active and a visitor instead sees “This site is temporarily unavailable”, that is a brief lookup issue. Refresh; it is not a DNS or Public Project problem.
Branding on your domain
Public project hosts (your custom domain and youryour-slug.genieforge.ai subdomain) stay on your brand in the browser and when links are shared:
- Tab icon uses your app or project favicon (or logo), not the GenieForge favicon. After you replace that file, refresh the public page to load the new icon.
- Link previews use your app name, description, and social image when you have set them under App Settings (or project branding overrides)
- Google Search can show that same app name as the site name above results for your landing, instead of only the domain
- Cookie and marketing chrome from GenieForge do not appear on these hosts
Public intake on your domain
Published Public intake links and personalized invite links use your active Portal custom domain when one is set. If the project has a Project landing domain and no Portal domain, intake links and landing visit buttons use that landing hostname so guests stay on your brand. Optionally set a Public path alias on the form (for examplersvp) so intake URLs look like https://www.yourcompany.com/rsvp/… instead of the default GenieForge path. App landing domains do not serve intake. Login and the signed-in portal still use the Portal domain or your public project subdomain.
If the project has more than one active Portal custom domain, GenieForge picks one preferred host for newly minted links. Every active Portal domain still serves the form if someone opens that host. Remint or republish after you change domains so printed QR codes and stored invite links pick up the new host.
