Measure content performance to understand what resonates with your audience and inform editorial decisions.
Zenovay gives you the per-page building blocks out of the box — pageviews, unique visitors, average time on page, and scroll depth. The editorial dimensions media teams care about (author, category, content type, headline variant) aren't separate dashboards; you attach them to your pageviews as custom event metadata, then segment and compare. This guide shows both halves: the metrics you already have, and the patterns to capture the rest.
Content Performance Metrics
Key Content Metrics
| Metric | Definition | Where to find it |
|---|---|---|
| Pageviews | Total loads | Analytics tab (Pages view) |
| Unique Visitors | Distinct readers | Analytics tab |
| Avg Time on Page | Time spent reading | Analytics tab (Pages view) |
| Scroll Depth | % of article seen | Analytics tab / scroll heatmaps |
| Exit Rate | Left from this page | Analytics tab (Pages view) |
| Shares / clicks | Off-site amplification | Custom events (you send these) |
Pageviews, time on page, scroll depth, and exit/entry behaviour are all visible per URL on the Analytics tab of a website's dashboard. Anything that happens off-page — a social share, a newsletter signup, a paywall click — isn't measured automatically; you capture it with a custom event (covered below).
A Simple Content Score
There's no built-in "content score" in Zenovay, but a weighted score is a useful way to rank your own articles once you've exported or queried the underlying metrics. Adjust the weights to match your editorial goals:
// A content score you compute from your own exported metrics.
// Not a Zenovay-provided number — define the weights yourself.
function calculateContentScore(article) {
const weightedScore =
(article.pageviews / avgPageviews) * 0.2 +
(article.timeOnPage / avgTimeOnPage) * 0.3 +
(article.scrollDepth / 100) * 0.25 +
(article.shares / avgShares) * 0.15 +
(article.comments / avgComments) * 0.10;
return Math.min(100, weightedScore * 20);
}
Info
On Scale, Query Studio (the SQL tab) lets you compute rankings like this directly against your data instead of exporting first.
Analyzing Top Content
Per-Page Metrics
Open a website's dashboard and go to the Analytics tab. The Pages view ranks your URLs by pageviews, with time on page, scroll depth, and entry/exit behaviour alongside each one. This is the closest thing to a "top articles" report, and it works for any site without extra tagging.
| Page | Views | Time | Scroll |
|---|---|---|---|
| Major Event Coverage | 45K | 5:20 | 82% |
| Expert Analysis | 32K | 6:45 | 88% |
| Photo Gallery | 28K | 3:10 | 45% |
| Quick News | 55K | 1:20 | 35% |
Filter by Time Period
Use the date-range selector at the top of the dashboard to compare performance:
- Today vs yesterday
- This week vs last week
- This month vs last month
- Custom date ranges
The Daily Movers tab also surfaces the pages that gained or lost the most traffic versus the previous period — useful for spotting what's heating up or cooling down.
Sort by Different Metrics
Not all content goals are the same. In the Pages view you can rank by:
- Reach: pageviews
- Engagement: time on page
- Quality: scroll depth
For virality (shares), you'll need the custom-event approach below — Zenovay can't see what happens on social platforms.
Content Lifecycle Analysis
The Content Curve
Track how content performs over time using the date-range comparisons above. A typical breaking-news curve concentrates most views in the first hours:
| Time Since Publish | % of Total Views |
|---|---|
| Hour 1 | 15% |
| Hours 2-6 | 30% |
| Hours 6-24 | 25% |
| Days 2-7 | 20% |
| Week 2+ | 10% |
Evergreen vs Breaking
Breaking News Pattern:
Views peak in hours, decay quickly
Day 1: 80% of all views
Day 7: 2% of all views
Evergreen Pattern:
Steady views over time
Day 1: 10% of all views
Month 6: Still getting views
Tag Content Age With a Custom Event
To slice performance by content age or evergreen status, send a custom event on article load that includes those attributes. You can then filter or group by them later:
// Send extra metadata about the article when it loads
window.zenovay('track', 'article_viewed', {
article_id: 'art_12345',
days_since_publish: 45,
is_evergreen: true,
category: 'analysis'
});
Category and Author Performance
Zenovay doesn't ship pre-built category or author leaderboards. The reliable way to measure them is to attach category and author to a custom event on every article view, then segment your data by those properties.
// Attach editorial dimensions to each article view
window.zenovay('track', 'article_viewed', {
article_id: 'art_12345',
category: 'analysis',
author: 'sarah-chen',
word_count: 1850
});
Once these events are flowing, you can compare cohorts like the examples below. (These are illustrative — the real numbers come from your own event data, exported or queried via Query Studio on Scale.)
By category:
| Category | Avg Views | Avg Time | Notes |
|---|---|---|---|
| Breaking | 15K | 1:45 | High volume, lower engagement |
| Analysis | 8K | 5:30 | Lower volume, higher engagement |
| Opinion | 5K | 4:20 | Polarizing |
| Lifestyle | 6K | 3:00 | Steady performer |
By author:
| Author | Articles | Total Views | Best Article |
|---|---|---|---|
| Sarah Chen | 24 | 320K | Expert Analysis |
| Mike Johnson | 35 | 280K | Event Coverage |
| Lisa Park | 18 | 190K | Deep Dive |
Content Type Analysis
Capture the format on each view (content_type) and you can compare how long-form, short news, listicles, video, and galleries perform:
window.zenovay('track', 'article_viewed', {
article_id: 'art_12345',
content_type: 'long_form'
});
| Type | Avg Views | Avg Time | Scroll |
|---|---|---|---|
| Long-form | 8K | 6:00 | 75% |
| Short news | 15K | 1:30 | 40% |
| Listicle | 12K | 2:30 | 55% |
| Video | 6K | 4:00 | N/A |
| Gallery | 10K | 3:00 | N/A |
Format Optimization
Different formats for different goals:
- Traffic: short news, listicles
- Engagement: long-form, video
- Social: listicles, galleries
- Subscriptions: analysis, exclusives
Headline Testing
If you serve more than one headline for the same article, record which variant a reader saw as a custom event, then compare click-through and downstream engagement.
// Record which headline variant was shown
window.zenovay('track', 'headline_variant', {
article_id: 'art_12345',
variant: 'B',
headline: "You Won't Believe What Happened Next"
});
Info
For structured A/B tests with automatic variant assignment, use Zenovay's experiment helper instead: window.zenovay('experiment', 'headline-art-12345', ['informative', 'curiosity']). Results show up in the Experiments tab. See the A/B testing docs for details.
A typical comparison once both variants have run:
| Variant | Impressions | Clicks | CTR | Time on Page |
|---|---|---|---|---|
| A: Informative | 50K | 3.5K | 7.0% | 4:30 |
| B: Curiosity | 50K | 4.8K | 9.6% | 2:45 |
Insight: Curiosity headlines often get more clicks but lower engagement.
Content Recirculation
To understand how readers move between articles, send an event when someone clicks an internal link (related articles, category links, recommendation widgets):
// Track how readers move between articles
window.zenovay('track', 'recirculation', {
from_article: 'art_12345',
to_article: 'art_67890',
method: 'related_articles',
position: 2
});
The Journeys tab also visualizes how visitors flow between pages on your site, without any custom tagging — a good first stop before you build dedicated recirculation events.
Content Decay Analysis
Use date-range comparisons in the Pages view (or the Daily Movers tab) to spot articles whose traffic is falling. For evergreen pieces that are decaying, that's a signal to refresh and republish.
| Article | Age | Current Views | Peak Views | Action |
|---|---|---|---|---|
| Guide to X | 180d | 20/day | 500/day | Refresh |
| Best Y | 365d | 5/day | 1000/day | Update |
| How to Z | 90d | 100/day | 200/day | Monitor |
If you want this tracked automatically, send a custom event from a scheduled job that compares current vs historical performance:
// Flag decaying evergreen content from a scheduled job
window.zenovay('track', 'content_decay', {
article_id: 'art_12345',
views_30d_ago: 500,
views_current: 50,
is_evergreen: true,
needs_refresh: true
});
Content Attribution
The Analytics tab breaks traffic down by referrer and source, so you can see which channels send readers to which content. Combined with the per-page metrics, this tells you where each type of content performs best.
| Source | Top Content Type | Engagement |
|---|---|---|
| Google Search | Evergreen guides | High |
| Google News | Breaking stories | Medium |
| Lifestyle, visual | Low | |
| Twitter/X | Breaking, opinion | Medium |
| Curated picks | Highest |
For deeper search-traffic analysis (ranking keywords, SERP position, click-through rate), connect Google Search Console — see the SEO guides.
Content Goals
You can turn any of the metrics above into a tracked goal. Open a website's dashboard, go to the Journeys tab, and use the Goals section to create a goal. Goals can fire on a pageview, a custom event, or a destination URL.
| Goal | Based on | Example target |
|---|---|---|
| Reach | Pageviews | 10K/article |
| Engagement | Avg time | 3+ minutes |
| Quality | Scroll 75%+ | 40% of readers |
| Virality | share custom event | 100/article |
Content Reporting
On Scale, you can schedule recurring reports and export data for a weekly or monthly content review. A typical review covers:
- Top pages by views, time, and scroll depth
- Category and author breakdowns (from your custom events)
- Traffic sources
- Decaying content flagged for refresh
Editorial Insights
Data-Driven Decisions
Use the data to inform:
- What to cover: topics that resonate
- How to cover: optimal format/length
- When to publish: peak engagement times
- Who should write: author–topic fit
Best Practices
Content Measurement
-
Define success per content type
- News: speed, reach
- Analysis: engagement, shares
- Guides: evergreen traffic
-
Track the full lifecycle
- Publish to peak
- Peak to decline
- Refresh opportunities
-
Connect to business goals
- Subscriptions driven
- Ad revenue generated
- Audience growth
Avoid Vanity Metrics
- Pageviews alone aren't success
- Consider quality metrics like scroll depth and time on page
- Balance reach and engagement