Set Up a First-Party Tracking Domain
First-Party Tracking Domain CNAME Setup | Perspection
Set up a first-party CNAME tracking domain in Perspection to bypass ad blockers, extend cookie lifetime, and auto-provision DNS.
A first-party tracking domain converts Perspection event collection from a third-party request to a first-party request by pointing a CNAME subdomain (such as events.yourdomain.com) at the Perspection ingestion endpoint. Ad blockers block 26-42% of third-party tracking requests, and Safari ITP caps third-party cookie lifetime at 7 days. A CNAME subdomain eliminates both problems because the browser treats the subdomain as same-origin traffic. Perspection supports automatic DNS provisioning for 5 providers (Cloudflare, AWS Route 53, GoDaddy, Namecheap, Google Cloud DNS), manual setup with step-by-step guides for 14+ additional providers, auto-detected DNS provider identification via nameserver lookup, and zero-touch SSL certificate provisioning through Cloudflare for SaaS. The entire configuration takes under 5 minutes when using auto-provisioning. After DNS verification (polled every 10 seconds for up to 30 attempts over 5 minutes), Perspection issues a domain-validated SSL certificate that progresses through pending_validation, pending_deployment, and active stages within 2-5 minutes. The CNAME target for all workspaces follows the pattern {id}.perspection.app, where {id} is derived from the workspace ID.
Why does a first-party tracking domain improve data collection?
A first-party tracking domain increases event capture rates by 26-42% because ad blockers cannot distinguish first-party subdomain requests from regular website traffic. Safari ITP limits third-party cookies to 7 days, fragmenting identity resolution. A CNAME subdomain like events.yourdomain.com loads from the same origin, extending cookie persistence and preserving identity graphs across sessions.
Ad blocker impact on third-party tracking
Ad blockers maintain blocklists of known third-party tracking domains. When the Perspection SDK loads from ingest.perspection.app or any other third-party Perspection endpoint, ad blockers intercept and block the network request before the event reaches the Perspection ingestion server. The blocked request produces zero data -- no page view, no click event, no conversion signal.
A first-party CNAME subdomain like events.yourdomain.com resolves to the exact same Perspection infrastructure, but the browser and ad blocker see a request to yourdomain.com -- the same origin as the website. The request passes through unblocked.
Safari ITP and cookie lifetime degradation
Apple Safari enforces Intelligent Tracking Prevention (ITP), which restricts cookies set by third-party domains to a maximum of 7 days. For Perspection, the 7-day cap means that returning visitors after a 1-week gap appear as entirely new users, breaking the identity graph and inflating unique user counts.
When Perspection cookies are set under the first-party subdomain, Safari treats the cookies as first-party storage. The cookies persist for the full browser-default duration, and Perspection identity resolution maintains accurate cross-session user profiles.
How the CNAME target is generated
Perspection uses a single ingestion endpoint for all workspaces. When you configure a first-party domain, the dashboard generates a workspace-specific CNAME target using the first 8 characters of the workspace ID. For example, workspace a1b2c3d4-e5f6-7890-abcd-ef1234567890 produces the CNAME target a1b2c3d4.perspection.app.
How does Perspection CNAME-based first-party tracking work?
A DNS CNAME record maps a customer-owned subdomain to the Perspection ingestion endpoint. When the browser requests events.yourdomain.com, DNS resolves the CNAME to {id}.perspection.app. Because the Same-Origin Policy evaluates the URL hostname (not the resolved IP), the browser treats the request and cookies as first-party to yourdomain.com.
The CNAME resolution chain
The technical flow from browser to Perspection ingestion operates in 5 steps:
The Perspection SDK (installed per Install Tracking on Your Website) fires a tracking event to
https://events.yourdomain.com/track.The visitor's browser performs a DNS lookup for
events.yourdomain.com.The DNS resolver returns the CNAME record pointing to
{id}.perspection.app.The DNS resolver follows the CNAME to the Perspection infrastructure IP address.
The browser sends the HTTP request to the resolved IP with
Host: events.yourdomain.com, and Perspection's Cloudflare edge routes the request to the ingestion server.
How the SDK snippet changes with a first-party domain
When a workspace has a verified first-party domain, the Perspection dashboard generates an SDK snippet that uses the serverContainerUrl parameter instead of the default endpoint parameter:
Both the SDK script file (sdk.js) and all event payloads (/track, /v1/batch, /v1/identify) load through the first-party subdomain. The ad blocker sees only requests to yourdomain.com, and cookies set by the Perspection SDK inherit first-party storage classification.
Impact on Event Match Quality
A first-party domain directly improves Event Match Quality (EMQ) scores for Meta CAPI, Google Ads, and TikTok Events API by preserving the fbclid, gclid, and ttclid cookies across sessions. When Safari ITP expires the cookies after 7 days under third-party tracking, the click ID is lost, and the conversion event cannot be matched to the original ad click. A first-party domain prevents the click ID from expiring, boosting EMQ scores. For details on EMQ optimization, see Event Match Quality.
How do you set up automatic DNS provisioning in Perspection?
Automatic DNS provisioning creates the CNAME record through the DNS provider's API without requiring a separate login. Perspection detects the provider via nameserver lookup against 19 known providers. For 5 supported providers -- Cloudflare, AWS Route 53, GoDaddy, Namecheap, and Google Cloud DNS -- Perspection accepts API credentials transiently, creates the record, and discards the credentials immediately.
Prerequisites
Before starting, confirm the following:
A Perspection workspace exists (see Create Your Workspace if not).
The Perspection Web SDK is installed on the website (see Install Tracking on Your Website).
DNS API credentials are available for the DNS provider (see provider-specific requirements below).
The chosen subdomain is not already in use (common choices:
events,track,data,t).
Step-by-step: Automatic DNS provisioning
Log in to the Perspection dashboard at
dashboard.perspection.app.Navigate to Connectors in the left sidebar, then select the Sources tab.
Select the First-Party tab within Sources.
Enter the desired subdomain in the domain input field (for example,
events.yourdomain.com). Perspection requires a subdomain -- root domains are not supported.Click Continue Setup. Perspection performs a nameserver lookup using Node.js native DNS with a fallback to Cloudflare DNS-over-HTTPS (
1.1.1.1) to identify the DNS provider.If Perspection detects a supported provider, a banner displays the provider name with an "Auto-setup available" badge. Select the Auto Setup tab.
Enter the DNS provider API credentials in the credential fields. Each provider requires different credentials:
Provider | Required Credentials | Where to Find |
|---|---|---|
Cloudflare | API Token (DNS:Edit permission) | Cloudflare Dashboard > My Profile > API Tokens |
AWS Route 53 | Access Key ID + Secret Access Key | IAM Console > Users > Security Credentials |
GoDaddy | API Key + API Secret | GoDaddy Developer Portal > API Keys |
Namecheap | API Key + API Username + Whitelisted IP | Namecheap Dashboard > Profile > Tools > API Access |
Google Cloud DNS | GCP Project ID + Service Account Key (JSON) | GCP Console > IAM > Service Accounts |
Review the CNAME preview showing the Host value and Target value that Perspection will create.
Click Create DNS Record Automatically. Perspection validates the credentials against the provider API, creates the CNAME record with a TTL of 300 seconds, and then discards the credentials.
A "DNS Record Created" confirmation appears. Perspection begins polling DNS verification every 10 seconds for up to 30 attempts (5 minutes total).
Credential security
Perspection explicitly does not store, log, or persist DNS provider credentials. The credentials are passed to the API endpoint at POST /:workspaceId/dns/auto-provision, used in-memory to authenticate a single API call to the DNS provider, and then released from memory when the request completes. The Perspection UI displays a security notice confirming credentials are used once and immediately discarded.
Provider detection for unsupported providers
Perspection detects 19 DNS providers in total by matching nameserver hostname patterns. For the 14 providers without auto-provisioning support (Wix, Squarespace, Hostinger, Vercel, Netlify, DigitalOcean, OVH, Porkbun, Name.com, DNSimple, Bluehost, IONOS, Hover, and Linode/Akamai), Perspection displays the provider name, a direct link to the provider's DNS settings page, and step-by-step manual configuration instructions.
How do you manually configure a CNAME for Perspection?
Create a CNAME record in your DNS provider's dashboard with the subdomain as Host and the Perspection endpoint as Target. The dashboard displays both values with copy buttons. DNS propagation takes 2-10 minutes, and Perspection verifies the record automatically by polling every 10 seconds.
CNAME record values
The Perspection dashboard generates two values for the CNAME record:
Host / Name: The subdomain prefix (for example,
eventsforevents.yourdomain.com, ortrackfortrack.yourdomain.com)Target / Points to: The workspace-specific endpoint in the format
{shortId}.perspection.app(for example,a1b2c3d4.perspection.app)
Both values are displayed in the Perspection First-Party configuration UI with copy-to-clipboard buttons.
Step-by-step: Cloudflare manual setup
Log into the Cloudflare Dashboard at
dash.cloudflare.com.Select the domain.
Go to DNS > Records.
Click Add record.
Set Type to
CNAME.Set Name to the subdomain prefix (for example,
events).Set Target to the Perspection CNAME target value (for example,
a1b2c3d4.perspection.app).Set Proxy status to DNS only (grey cloud icon). The orange cloud (Proxied mode) interferes with SSL certificate provisioning and must be disabled.
Click Save.
Step-by-step: AWS Route 53 manual setup
Log into the AWS Console and navigate to Route 53 > Hosted zones.
Select the domain's hosted zone.
Click Create record.
Set Record name to the subdomain prefix (for example,
events).Set Record type to
CNAME.Set Value to the Perspection CNAME target value.
Set TTL to
300.Click Create records.
Step-by-step: GoDaddy manual setup
Log into GoDaddy at
dcc.godaddy.com/manage/dns.Navigate to My Products > DNS > Manage Zones and select the domain.
Click Add in the DNS Records section.
Set Type to
CNAME.Set Host to the subdomain prefix.
Set Points to the Perspection CNAME target value.
Set TTL to
1 hour(or600seconds).Click Save.
Step-by-step: Namecheap manual setup
Log into Namecheap and go to Domain List > Manage > Advanced DNS.
Click Add New Record.
Set Type to
CNAME Record.Set Host to the subdomain prefix.
Set Value to the Perspection CNAME target value.
Set TTL to
Automatic.Click the green checkmark to save.
DNS propagation and verification
After the CNAME record is saved at the DNS provider, DNS propagation takes 2-10 minutes depending on the provider and the TTL configuration. Perspection automatically polls the DNS record every 10 seconds, displaying a progress counter (for example, "12/30") in the dashboard. The maximum polling window is 30 attempts over 5 minutes. If verification times out, the dashboard displays a link to DNSChecker.org to confirm the CNAME has propagated globally, along with a manual Refresh button to restart verification.
Troubleshooting DNS verification failures
CNAME not detected after 10 minutes: Verify the CNAME Host and Target values exactly match the values shown in the Perspection dashboard. Check for trailing dots, extra spaces, or incorrect subdomain prefixes.
Cloudflare users: Confirm the Proxy status is set to "DNS only" (grey cloud). The orange Proxied cloud mode routes traffic through the Cloudflare CDN, which prevents Perspection from verifying ownership of the domain.
High TTL values: Some providers default to TTL values of 3600 seconds (1 hour) or higher. Lowering the TTL to 300 seconds (5 minutes) accelerates propagation.
DNSChecker.org verification: Enter the full subdomain (for example,
events.yourdomain.com) at dnschecker.org/#CNAME to confirm the CNAME record resolves correctly from multiple global locations.
How does Perspection auto-provision SSL certificates?
After DNS verification, Perspection auto-provisions a domain-validated SSL certificate through Cloudflare for SaaS, issued by Let's Encrypt or Google Trust Services. The certificate progresses through 3 stages -- pending_validation, pending_deployment, and active -- within 2-5 minutes. No manual SSL configuration or certificate installation is required.
SSL provisioning lifecycle
The SSL provisioning process follows 4 automated stages:
Custom hostname creation: Perspection registers the customer domain (for example,
events.yourdomain.com) as a Cloudflare custom hostname with the Perspection origin server (ingest.perspection.app). The registration triggers automatic certificate issuance.Pending validation (
pending_validation): Cloudflare verifies domain ownership through HTTP validation. The Perspection dashboard displays a "Validating" badge with an auto-refresh spinner. Validation typically completes in 1-3 minutes.Pending deployment (
pending_deployment): The validated certificate is being deployed to Cloudflare's global edge network (300+ data centers). The dashboard displays a "Deploying" badge. Deployment typically completes in 1-2 minutes.Active (
active): The SSL certificate is live. The dashboard displays an "Active" badge with the certificate authority name (Let's Encrypt or Google Trust Services) and the issuance date. All HTTPS requests to the first-party subdomain are now encrypted end-to-end.
SSL status monitoring
The Perspection dashboard automatically refreshes SSL status every 10 seconds while the certificate is in a pending state. The dashboard displays the following information for active certificates:
Certificate status badge (Active, Validating, Deploying, or Error)
Certificate authority (Let's Encrypt or Google Trust Services)
Issuance date
Expiration monitoring (Perspection flags certificates with fewer than 7 days until expiration)
SSL certificate renewal
Perspection SSL certificates are managed entirely by Cloudflare for SaaS and renew automatically before expiration. No manual intervention is required for certificate renewal. Perspection monitors certificate validity and logs warnings when certificates approach the 7-day expiration threshold.
Troubleshooting SSL provisioning
SSL stuck in pending_validation: Confirm the DNS record shows "Verified" in the Perspection dashboard first. SSL provisioning cannot begin until DNS verification succeeds.
Provisioning takes longer than 15 minutes: Check for CAA (Certificate Authority Authorization) DNS records on the domain that may block Let's Encrypt or Google Trust Services from issuing certificates. If a CAA record exists, add
letsencrypt.organdpki.googas permitted CAs.SSL error status: Click the Retry button in the dashboard to re-trigger certificate provisioning. If the error persists, contact Perspection support with the workspace ID and domain name.
How does a first-party domain improve Meta CAPI and ad platform conversions?
A first-party domain preserves the fbclid cookie beyond Safari ITP's 7-day limit, letting Perspection attach click IDs to conversions days or weeks later. The same applies to gclid, ttclid, msclkid, and li_fat_id. For Meta CAPI, first-party cookie persistence directly increases Event Match Quality by providing valid fbclid on more server-side conversions.
The click ID expiration problem
When a user clicks a Meta ad, Facebook appends fbclid=abc123 to the landing page URL. The Perspection SDK captures the fbclid value and stores the value in a browser cookie. Under third-party tracking:
Safari ITP expires the cookie after 7 days.
If the user converts on day 8, Perspection has no
fbclidto attach to the conversion event.Meta receives the conversion event without a click ID, reducing the Event Match Quality score.
Under first-party tracking:
The cookie is stored under
events.yourdomain.com, treated as first-party storage.Safari does not apply the 7-day ITP cap.
The
fbclidpersists for the full cookie duration.Perspection attaches the
fbclidto the conversion event sent via Meta CAPI, and Meta successfully matches the conversion to the original ad click.
First-party domain and ad platform data flow
The first-party CNAME routes events through the Perspection ingestion endpoint assigned to the workspace. This ensures all event data -- including click IDs for Meta, Google, TikTok, and other ad platforms -- flows through a consistent, first-party origin that preserves cookie integrity and maximizes attribution accuracy.
Methodology
All first-party domain setup steps, DNS provisioning flows, and SSL certificate details in this guide were verified against the Perspection production dashboard as of February 2026.
"The single highest-leverage action any e-commerce brand can take to improve server-side tracking accuracy is configuring a first-party CNAME subdomain. The setup takes 5 minutes, but the impact compounds over every session, every returning visitor, and every conversion event that would otherwise be lost to ad blockers or ITP. Brands running Meta CAPI through Perspection consistently see a 15-25% increase in attributable conversions within the first 30 days of enabling a first-party domain, driven almost entirely by recovering Safari and Firefox users who were previously invisible to third-party tracking."
Sources and References
Cloudflare -- Understanding CNAME Records, https://developers.cloudflare.com/dns/manage-dns-records/reference/dns-record-types/
WebKit -- Intelligent Tracking Prevention, https://webkit.org/tracking-prevention-policy/
Let's Encrypt -- How It Works, https://letsencrypt.org/how-it-works/
Perspection Product Guide -- Install Web SDK, /library/install-tracking-website-guide
Perspection Product Guide -- Event Match Quality, /library/event-match-quality-guide
