Skip to Content
Custom Domains

Custom Domains

Every project needs a custom domain to go live. Campaigns cannot be served without a verified domain connected to your project.

Common Domain Patterns

Most teams use a subdomain of their main domain:

DomainUse Case
get.myapp.comAcquisition funnels, landing pages
quiz.myapp.comQuiz-style onboarding flows
sub.myapp.comSubscription / paywall funnels
start.myapp.comGeneral onboarding
try.myapp.comFree trial flows

Setup

Open Domain Settings

Go to Project Settings > Domains and click Add Domain.

Domain settings Insert image: The Project Settings page with the Domains tab selected, showing the “Add Domain” button and any existing domains listed.

Enter Your Domain

Type your domain (e.g., quiz.myapp.com) and click Add.

Add domain dialog Insert image: The “Add Domain” dialog with a text input showing an example domain being entered.

Create a CNAME Record

In your DNS provider (Cloudflare, Namecheap, Route 53, etc.), create a CNAME record pointing your domain to AppFunnel:

TypeNameTarget
CNAMEquizcname.appfunnel.net

DNS configuration Insert image: Example DNS configuration in a provider like Cloudflare, showing the CNAME record being added with the correct values.

Wait for Verification

AppFunnel checks the DNS record automatically. This usually takes a few minutes, but DNS propagation can take up to 24 hours.

Verification pending Insert image: The Domains list showing a domain with a “Pending” verification status badge.

Domain Verified

Once verified, the domain status changes to Active. All campaigns in the project are now accessible at your custom domain.

Domain verified Insert image: The Domains list showing a domain with a green “Active” status badge.

URL Structure

Once your domain is connected, campaigns are served at:

https://{domain}/f/{campaign-slug} https://{domain}/f/{campaign-slug}/{page-slug}

The first page of a funnel omits the page slug. Subsequent pages include it:

https://quiz.myapp.com/f/onboarding → First page https://quiz.myapp.com/f/onboarding/experience → "experience" page https://quiz.myapp.com/f/onboarding/paywall → "paywall" page

The browser URL updates as the visitor navigates through the funnel.

Deep Linking

You can link a visitor directly to a specific page by passing their session ID as a query parameter:

https://quiz.myapp.com/f/onboarding/paywall?sid={sessionId}

This is useful in email flows — for example, linking a user back to their paywall or a specific step in the funnel.

In integrations like Customer.io, the sessionId is automatically pushed to the user object, so you can use it directly in email templates.

Sessions are bound to a specific campaign. A session ID from one campaign cannot be used to access a different campaign’s funnel.

Behavior Without a Session

If a visitor lands on a page URL without a valid sid parameter and has no existing session cookie, a new session is created and they are redirected to the first page of the funnel. They cannot skip ahead without an active session.

Multiple Domains

You can add multiple custom domains to a single project. All campaigns are accessible from all verified domains.

Troubleshooting

IssueSolution
Domain stuck on “Pending”Verify the CNAME record is correct in your DNS provider. DNS propagation can take up to 24 hours.
SSL certificate errorAppFunnel provisions SSL automatically after verification. Wait a few minutes after the domain becomes Active.
CNAME conflictSome DNS providers don’t allow CNAME on the root domain (myapp.com). Use a subdomain instead.
Last updated on