Measure traffic with website analytics
publisherTurn on first-party analytics for a site you own and read what it collects.
1. Enabling first-party website analytics
AdServeKit includes a first-party analytics engine that operates completely independently of third-party tracking vendors. Traffic data is isolated to your workspace and is never sold or used for cross-site behavioral targeting.
To enable measurement, copy your site-specific snippet from Website analytics → Configure measurement and add it to the <head> of your site template.
Ensure the tag includes your data-measurement-id. Without this attribute, the script functions only as an ad-click landing listener and will not record general website pageviews.
Website measurement tag
<script async fetchpriority="low" src="https://api.adservekit.com/houseads.js" data-measurement-id="G-XXXXXXXXXX"></script>2. Core audience metrics defined
Under Website analytics → Overview, your dashboard reports five core metrics:
- Pageviews: Total verified page loads and routed single-page application (SPA) navigations.
- Sessions: Discrete browsing sessions (expires after 30 minutes of inactivity).
- Unique Visitors: Estimated count of individual visitors over the selected period, measured using privacy-friendly first-party estimation without cross-site tracking.
- Average Session Duration: Active time spent on page (background tabs are paused).
- Bounce Rate: Percentage of single-page sessions with under 10 seconds of engagement and zero interactions.
3. Analyzing traffic sources and top pages
Inspect referring domains to see where your traffic originates (Google Search, social networks, direct traffic).
Review Top Pages to identify high-traffic content suitable for ad placement expansion.
Review Device and Country breakdowns to optimize placement dimensions for your audience.
4. Why pageviews do not equal ad impressions
Total pageviews will almost always exceed rendered ad impressions. This is normal behavior across all digital advertising platforms:
1. Lazy Loading: Placements below the fold only load when scrolled into view. Bouncing users never trigger ad requests.
2. Ad Blockers: Privacy extensions block ad delivery scripts (ad.js) while often permitting first-party analytics (houseads.js).
3. No-Fill: If no campaign matches placement dimensions and no fallback is set, the ad request yields no rendered impression.
4. Render Timeouts: Users who close the tab before the creative finishes rendering in its iframe are not counted as rendered impressions.
5. Troubleshooting missing website analytics
If Website Analytics remains empty: Verify that data-measurement-id is present on the tag, that your domain is listed under Authorized Domains in website settings, and that your site is not blocking the tag with an overly restrictive Content Security Policy.