Skip to main content
Pro Plan15 minutesIntermediate

Media & Publishing Analytics

Set up comprehensive analytics for media sites, blogs, and digital publications. Learn about media in this industry guide.

mediapublishingcontentanalyticspageviews
Last updated:

Set up analytics tailored for media sites, news publications, blogs, and content platforms.

Media Analytics Overview

Key Media Metrics

MetricDefinitionWhy It Matters
PageviewsContent consumptionVolume
Unique VisitorsAudience sizeReach
Time on PageEngagement depthQuality
Scroll DepthContent consumptionEngagement
RecirculationPages/sessionStickiness
Return VisitorsLoyaltyAudience building

Media-Specific Challenges

  1. High traffic volumes - Need efficient tracking
  2. Content decay - Articles lose relevance
  3. Real-time events - Breaking news spikes
  4. Multiple content types - Articles, video, podcasts
  5. 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 and scroll depth are tracked automatically by the snippet — no extra configuration is required. For everything beyond pageviews (article metadata, video plays, paywall hits), send custom events with the zenovay('track', ...) call shown below.

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
});

Analyzing Author Performance

Zenovay doesn't ship a dedicated "Authors" dashboard, but once you attach author_id / author_name to your article events you can break down performance by author yourself:

  • Filter the Analytics tab of your website's dashboard (/domains/{id}?tab=analytics) using the event-property filters to isolate a single author.
  • On Scale, use Query Studio (the SQL tab in Configure & Explore) to run ad-hoc reports across authors — for example, total views and average time on page grouped by author_name.

A typical author breakdown looks like this:

AuthorArticlesViewsAvg TimeEngagement
Jane Smith45125K4:3078%
John Doe3898K3:1565%
Sarah Chen52180K5:1082%

Category Analytics

Track Categories

// Category hierarchy
zenovay('track','article_viewed', {
  category: 'technology',
  subcategory: 'startups',
  topic: 'funding'
});

Category Performance

CategoryPageviewsShareTrend
News450K35%+5%
Sports320K25%+2%
Opinion180K14%-3%
Tech150K12%+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 View

Open your website's dashboard and select the Live View tab (under Audience, /domains/{id}?tab=live-view) to watch activity as it happens:

  • Current visitors on the site
  • The pages they're viewing right now
  • Where they came from
  • Geographic distribution

The Globe tab (under Behavior) gives the same real-time picture on a 3D map. Live View is available on Pro and above.

Traffic Alerts

Open your website's Settings and go to the Automation tab to create action rules that notify you when traffic moves. Available triggers include:

  • Traffic spike — fires when traffic exceeds a multiplier of the normal baseline (e.g. 3×)
  • Traffic drop — fires when traffic falls by a chosen percentage

Each rule can send an email, post to Slack, or call a webhook so your team can react to breaking-news surges in real time.

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

// Scroll depth is tracked automatically by the snippet — nothing to enable.

// You can also send your own scroll milestone events:
zenovay('track','scroll_milestone', {
  article_id: 'art_12345',
  milestone: 75, // percent
  word_count_read: 940
});

Scroll Depth Report

Depth% ReadersInsight
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

SegmentEngagement% TrafficFocus
Deep Readers80-10015%Subscription target
Engaged50-7935%Newsletter signup
Scanners25-4930%Content format
Bouncers0-2420%Reduce

Traffic Source Analysis

Media-Specific Sources

SourceVisitorsEngagedNotes
Google News180K42%Algorithm-driven
Google Search150K55%Intent-driven
Facebook120K25%Social discovery
Twitter/X80K35%Breaking news
Apple News60K48%Curated
Direct90K68%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

  1. Free reader
  2. Registered (email)
  3. Hitting paywall
  4. 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

  1. Track article metadata

    • Author, category, publish date
    • Enables rich analysis
  2. Monitor real-time

    • React to trending content
    • Manage capacity
  3. Measure engagement, not just pageviews

    • Time on page
    • Scroll depth
    • Recirculation
  4. Segment by content type

    • Different metrics for video vs text
    • Category-specific benchmarks

Next Steps

Was this article helpful?