Set up analytics tailored for media sites, news publications, blogs, and content platforms.
Media Analytics Overview
Key Media Metrics
| Metric | Definition | Why It Matters |
|---|---|---|
| Pageviews | Content consumption | Volume |
| Unique Visitors | Audience size | Reach |
| Time on Page | Engagement depth | Quality |
| Scroll Depth | Content consumption | Engagement |
| Recirculation | Pages/session | Stickiness |
| Return Visitors | Loyalty | Audience building |
Media-Specific Challenges
- High traffic volumes - Need efficient tracking
- Content decay - Articles lose relevance
- Real-time events - Breaking news spikes
- Multiple content types - Articles, video, podcasts
- Subscription models - Paywalls and metering
Setting Up Media Tracking
Basic Implementation
<script
defer
data-tracking-code="YOUR_TRACKING_CODE"
src="https://api.zenovay.com/z.js">
</script>
Page views are tracked automatically. Scroll depth tracking can be enabled in the dashboard under Settings → Tracking.
Article Metadata Tracking
Pass article metadata for rich analytics:
// Track article view with metadata
zenovay('track','article_viewed', {
article_id: 'art_12345',
title: 'Breaking: Major Event Unfolds',
author: 'Jane Smith',
category: 'news',
subcategory: 'politics',
publish_date: '2025-01-15',
word_count: 1250,
content_type: 'article',
tags: ['breaking', 'politics', 'national'],
is_premium: false
});
Content Type Tracking
Different content types need different tracking:
// Video content
zenovay('track','video_started', {
video_id: 'vid_789',
title: 'Interview with CEO',
duration_seconds: 420,
category: 'interviews'
});
zenovay('track','video_progress', {
video_id: 'vid_789',
percent_watched: 50,
watch_time_seconds: 210
});
// Podcast/Audio
zenovay('track','audio_started', {
podcast_id: 'pod_456',
episode: 'EP 42: Tech Trends',
duration_seconds: 1800
});
// Photo gallery
zenovay('track','gallery_viewed', {
gallery_id: 'gal_123',
images_count: 25,
images_viewed: 12
});
Author Analytics
Track Author Performance
// Include author in article tracking
zenovay('track','article_viewed', {
article_id: 'art_12345',
author_id: 'author_jane',
author_name: 'Jane Smith',
// ... other metadata
});
Author Dashboard
View in Analytics → Authors:
- Articles published
- Total pageviews
- Average time on article
- Reader engagement score
- Top performing articles
| Author | Articles | Views | Avg Time | Engagement |
|---|---|---|---|---|
| Jane Smith | 45 | 125K | 4:30 | 78% |
| John Doe | 38 | 98K | 3:15 | 65% |
| Sarah Chen | 52 | 180K | 5:10 | 82% |
Category Analytics
Track Categories
// Category hierarchy
zenovay('track','article_viewed', {
category: 'technology',
subcategory: 'startups',
topic: 'funding'
});
Category Performance
| Category | Pageviews | Share | Trend |
|---|---|---|---|
| News | 450K | 35% | +5% |
| Sports | 320K | 25% | +2% |
| Opinion | 180K | 14% | -3% |
| Tech | 150K | 12% | +12% |
Real-Time Analytics
Breaking News Tracking
Monitor real-time during events:
// Track breaking news engagement
zenovay('track','breaking_news', {
story_id: 'breaking_001',
title: 'Election Results',
start_time: new Date().toISOString(),
priority: 'high'
});
Live Dashboard
View in Analytics → Live:
- Current visitors
- Top articles now
- Traffic sources now
- Geographic distribution
Spike Alerts
Set up alerts for:
- Traffic 3x normal
- New article trending
- Server capacity concerns
Scroll Depth Analytics
Why Scroll Matters
For content sites, scroll depth shows:
- How much content consumed
- Where readers drop off
- Article length optimization
Track Scroll Milestones
// Automatic scroll tracking is enabled in dashboard Settings → Tracking
// Custom scroll events
zenovay('track','scroll_milestone', {
article_id: 'art_12345',
milestone: 75, // percent
word_count_read: 940
});
Scroll Depth Report
| Depth | % Readers | Insight |
|---|---|---|
| 25% | 85% | Good hook |
| 50% | 62% | Content engaging |
| 75% | 41% | Some drop-off |
| 100% | 28% | Completed |
Benchmark: 25%+ completing is good for long-form.
Engagement Scoring
Calculate Article Engagement
// Track engagement score
zenovay('track','article_engagement', {
article_id: 'art_12345',
time_on_page: 245, // seconds
scroll_depth: 85, // percent
shares: 12,
comments: 5,
engagement_score: 78 // calculated
});
Engagement Formula
Engagement Score =
(Time Weight × Time Score) +
(Scroll Weight × Scroll Score) +
(Action Weight × Action Score)
Segment by Engagement
| Segment | Engagement | % Traffic | Focus |
|---|---|---|---|
| Deep Readers | 80-100 | 15% | Subscription target |
| Engaged | 50-79 | 35% | Newsletter signup |
| Scanners | 25-49 | 30% | Content format |
| Bouncers | 0-24 | 20% | Reduce |
Traffic Source Analysis
Media-Specific Sources
| Source | Visitors | Engaged | Notes |
|---|---|---|---|
| Google News | 180K | 42% | Algorithm-driven |
| Google Search | 150K | 55% | Intent-driven |
| 120K | 25% | Social discovery | |
| Twitter/X | 80K | 35% | Breaking news |
| Apple News | 60K | 48% | Curated |
| Direct | 90K | 68% | Loyal readers |
Social Referral Tracking
// Track social referral
zenovay('track','social_referral', {
platform: 'twitter',
post_id: 'tweet_123',
article_id: 'art_12345',
campaign: 'breaking_news'
});
Newsletter Integration
Track Newsletter Signups
// Newsletter signup from article
zenovay('track','newsletter_signup', {
location: 'article_footer',
article_id: 'art_12345',
newsletter_type: 'daily_digest'
});
Newsletter-Driven Traffic
Track readers from newsletters:
https://yoursite.com/article?utm_source=newsletter&utm_campaign=daily_2025_01_15
Content Recommendations
Track Recommendation Clicks
// Recommendation widget impressions
zenovay('track','recommendations_shown', {
article_id: 'art_12345',
recommendations: ['art_456', 'art_789', 'art_012'],
position: 'article_end'
});
// Recommendation click
zenovay('track','recommendation_clicked', {
from_article: 'art_12345',
to_article: 'art_789',
position: 2
});
Recirculation Rate
Recirculation = Sessions with 2+ pageviews ÷ Total sessions
Benchmark: 40%+ is good for media sites.
Paywall & Subscription Tracking
Meter Tracking
// Track meter status
zenovay('track','meter_status', {
articles_read: 3,
limit: 5,
period: 'month',
user_id: 'anon_123'
});
// Paywall hit
zenovay('track','paywall_shown', {
article_id: 'art_12345',
trigger: 'meter_limit',
offer: 'subscribe_50_off'
});
Subscription Funnel
- Free reader
- Registered (email)
- Hitting paywall
- Conversion
See Media Subscription Conversion for detailed tracking.
CMS Integration
WordPress
// Pass article data to Zenovay
add_action('wp_footer', function() {
global $post;
if (is_single()) {
$categories = get_the_category();
$author = get_the_author();
?>
<script>
zenovay('track','article_viewed', {
article_id: '<?php echo $post->ID; ?>',
title: '<?php echo esc_js(get_the_title()); ?>',
author: '<?php echo esc_js($author); ?>',
category: '<?php echo esc_js($categories[0]->name); ?>',
publish_date: '<?php echo get_the_date('Y-m-d'); ?>',
word_count: <?php echo str_word_count(get_the_content()); ?>
});
</script>
<?php
}
});
Headless CMS
Include metadata in your frontend:
// Next.js example
export default function Article({ article }) {
useEffect(() => {
zenovay('track','article_viewed', {
article_id: article.id,
title: article.title,
author: article.author.name,
category: article.category.slug,
publish_date: article.publishedAt,
word_count: article.wordCount
});
}, [article]);
}
Best Practices
For Media Sites
-
Track article metadata
- Author, category, publish date
- Enables rich analysis
-
Monitor real-time
- React to trending content
- Manage capacity
-
Measure engagement, not just pageviews
- Time on page
- Scroll depth
- Recirculation
-
Segment by content type
- Different metrics for video vs text
- Category-specific benchmarks