Measure traffic with website analytics

publisher

Turn 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.

Documentation feedback

AdServeKit evolves over time. If you notice information that appears outdated or inconsistent with the current dashboard, please report it so we can update the guide.