Your analytics and your CMS, wired both ways.
Next Stage Analytics puts per-article traffic inside wp-admin. WordPress sends the tracker the real author and category, so the leaderboards stop guessing. And when a story is worth moving, PageView.ro can publish it to a partner site or repost it to your own Facebook page — from the same row where you spotted it.
Measure, enrich, act.
Everything on this page is one of three things: PageView reading into WordPress over the public API, WordPress writing into PageView through the tracker, or PageView calling WordPress over a signed webhook. Nothing else crosses between the two.
Measure · PageView → WordPress
One per-site read key turns on six surfaces inside WordPress: a traffic column in the posts list, a counter in the admin bar, a dashboard widget, an editor metabox, badges on the social calendar and a public reader strip.
Enrich · WordPress → PageView
The plugin can inject the tracker itself, carrying the post's real author and primary category straight from WordPress. An optional marker also reveals which aggregators republish you.
Act · PageView → WordPress
HMAC-signed webhooks: automatic cross-publishing at a live-reader threshold, a manual publish from any article board, an optional AI rewrite on the receiving site, and a same-site repost to your Facebook pages.
Traffic where the editors already are.
A site admin mints one read key in Settings → API access and pastes it into the plugin, once. From then on every call to PageView.ro is made from PHP, server-side, behind short caches — the browser only ever talks to your own WordPress.
“Trafic” column in the posts list
Posts → All Posts gains a traffic column showing each published article's total pageviews over roughly the last 400 days. It fills asynchronously after the list renders, so the screen never waits on an external call; unpublished posts show a dash and trigger no call at all.
“Trafic azi” in the admin toolbar
Today's pageviews for your site's local day, in the right-hand corner of the admin bar — in wp-admin and on the front end for logged-in editors. One click opens your PageView.ro dashboard.
wp-admin dashboard widget
On the WordPress home screen: today's pageviews and visitors, the last 7 days as an inline SVG chart (no external chart library) and the week's top 5 articles, each linked to the post. It renders instantly as placeholders and fills from one composed request.
Post-editor metabox
A “Trafic articol” box in the editor sidebar — identical in Gutenberg and the classic editor — with views and visitors over 24 hours, 7 days and 30 days, plus the article's top traffic sources over the last week.
Badges on the social calendar
If you also run Next Stage Schedule, every published slot on its Social Schedule calendar gets an eye icon and that article's total pageviews. Schedule needed no modification: Analytics reads the markup Schedule already renders and matches each slot by its permalink.
The [pageview] reader strip
A public live strip you can place in an article: readers on the site right now, readers of this article today, visitors today and visitors this month. Labels in Romanian or English, any subset in any order — and if the plugin is not configured it renders nothing at all.
Where the key lives
- The read key is stored in WordPress options and used only from PHP. The browser talks to admin-ajax on your own domain — or, for the public strip, a lighter dedicated route — never to PageView.ro directly.
- The key resolves to exactly one site. There is no site parameter to pass, so it can never reach another site's data, and a site admin can rotate or revoke it from the dashboard at any time.
- The public tracker key is a separate setting, and the plugin rejects any value that is not a public key — the secret read key cannot be published into a page by mistake.
- Every surface is cached in WordPress with an anti-stampede guard written before the upstream call, and each call has a short timeout. A failed call is cached too, so a slow or unreachable API cannot tie up your PHP workers or re-fire on every screen.
WordPress knows the byline. Now the analytics do too.
Left alone, a tracker has to infer an article's author and category from whatever the theme happens to expose — an OpenGraph tag, a JSON-LD block, a body class. WordPress already knows the answer, so the plugin sends it instead of letting the tracker guess.
Tracker injection
One toggle plus your public tracker key, and the plugin emits the tracking tag into the page head on every public page — the actual analytics install, for sites whose theme does not already carry the snippet. If your theme does carry it, enabling this is harmless: the tracker initialises at most once per key.
Authoritative author and category
On a single post the tag also carries the post's real author and its primary category — Yoast's primary category when an editor set one, otherwise the first assigned category. The tracker prefers these over anything it could infer from the DOM, so author and category leaderboards stop shifting when you change theme or SEO plugin.
The syndication marker (optional)
An opt-in marker adds a hidden attribution note to published articles, together with a tracking tag that carries the article's canonical URL. On your own site it does nothing at all. When someone republishes the HTML on another host, it fires exactly one identity-free beacon and that republisher appears in the dashboard's Aggregators panel.
Author and category reports
Because the tracker receives real values, the dashboard's author and category leaderboards are reporting your newsroom's own taxonomy rather than a theme's approximation — pageviews, visitors, average engaged time and how many articles each byline or category carried.
Honest about the marker
Syndication detection is best-effort by construction. The marker rides the public tracker key, it is excluded from RSS feeds, and an aggregator that strips scripts is invisible to it. Treat it as detection, never as evidence.
The decision and the action, on the same row.
This is the only place where PageView.ro reaches into your site. Every call is an HTTPS webhook whose exact bytes are HMAC-signed; the plugin on the receiving end verifies the source, the timestamp and the signature before it does anything at all.
Cross-publish at a threshold
A detector runs on a short loop and evaluates the same query that draws your live board, so the number that fires a webhook and the number on your screen can never disagree. When an article passes the live-reader threshold you set for a partner site, it is republished there — with an exactly-once ledger, so an evergreen story never fires twice, and a path denylist for sections you never syndicate.
Publish it yourself
A + button on every article board opens your list of partner sites and publishes that one article on demand: the threshold is overridden, the exactly-once ledger is not. You get one result per target — delivered, already there, or the concrete failure.
Rewrite before publishing (optional)
Tick “rewrite on target” and, when the receiving site runs Next Stage Writer and it is ready, the import is held as a draft and rewritten — title and body — with that site's own prompts before it publishes. The AI never runs inside the webhook, and if the rewrite fails the original article publishes anyway.
Test before the first real story
Each target has a test button that sends a fully signed payload the plugin verifies end to end, then answers without importing anything. A green test means the URL, the shared secret and the plugin version on the far end are all correct.
You can see the story fading. The repost is one click away.
PageView.ro shows an article losing its readers in real time. If you decide it deserves another push, the button is on that same row: it takes the article already published on your site and posts it to your own Facebook pages — now, or in the next free slot of the publishing schedule your site already runs. As often as you want; there is no one-shot lockout, because an old story climbing again is the normal case.
- 01
Spot it
Watch live readers fall on the realtime board, the full live board, history, or the multi-site overview. The repost button sits on the article row itself.
- 02
Choose the timing
Post now, or queue it for the next free slot in the schedule your site already keeps. Two options, no third — and no invented “best time”.
- 03
Read the result
Posted, queued, article not found on the site, or the concrete error your site returned — inline, straight away, per repost.
What it does not do
This is the part most tools leave out. Reposting is genuinely useful because the decision and the action live in one place — not because anything here proves it worked.
- It is not attribution. Readers who come back arrive as ordinary Facebook referrals in your social bucket, indistinguishable from any other Facebook traffic. Nothing in the platform measures the outcome of a repost, and we will not pretend otherwise.
- It is not automatic. A person clicks. The automatic threshold detector is a different feature — it cross-publishes to partner sites, and it never sends the social signal.
- It is Facebook, by design: your own pages, over the connection your site already publishes with. No other network is targeted.
- It is not a duplicate. Nothing is imported, re-created or rewritten — the article that is already live is handed to your scheduler by id. Drafts, private and password-protected posts are refused.
- It is one attempt, not a delivery guarantee. One signed request with a short timeout and no retry; if it fails you are told, and you decide whether to click again.
- Duplicate protection is same-second only. Two clicks a second apart are two genuine Facebook posts. And “posted” means at least one of the selected pages accepted it.
- A queued repost goes out when your site's scheduler runs. If auto-publish is switched off in Next Stage Schedule, queued items wait for it.
- There is no repost history in the dashboard — deliberately. The durable record is the import log inside your own WordPress.
Four plugins, and exactly what each one adds.
These are the Next Stage plugins that actually exchange data with PageView.ro. The rest of the suite does not touch it, so it is not listed here.
| Plugin | Version | What it adds |
|---|---|---|
| Next Stage Analytics | 1.8.0 | The bridge. Reads the public API into six wp-admin and front-end surfaces, and optionally writes back — tracker injection carrying the real author and category, plus the syndication marker. |
| Next Stage Cross | 1.6.0 | Receives the signed webhooks: imports a cross-published article, or dispatches a same-site Facebook repost. It also serves the article to the partner site that is importing it. |
| Next Stage Schedule | 3.26.3 | Social scheduling. Hosts the Social Schedule calendar that Analytics badges with traffic, and exposes the guarded API that Cross calls to publish a post now or queue it for the next slot. |
| Next Stage Writer | 2.4.1 | Optional. Rewrites a cross-published article's title and body with the receiving site's own prompts, before it goes live there. |
Versions are the builds this page describes. Each plugin needs WordPress 5.6+ and PHP 7.4+, and they update from their own update server rather than the WordPress.org directory.
What it needs.
The whole list, including the parts that will stop you if you do not have them. Reading traffic is the easy half; publishing and reposting have real prerequisites.
To read traffic inside WordPress
- WordPress 5.6+ and PHP 7.4+, with Next Stage Analytics installed.
- A site API key from Settings → API access in the dashboard, plus the API base URL shown next to it.
- Next Stage Schedule only if you want traffic badges on its Social Schedule calendar.
- Nothing else — every reporting surface above works with Analytics alone.
To cross-publish to a partner site
- Next Stage Cross on the receiving site, with your site listed as a source: its domain plus a shared secret.
- An HTTPS endpoint. Loopback, private and link-local addresses are rejected — the same check runs on the dashboard and on the platform side.
- A live-reader threshold per target if you want it to fire automatically; otherwise the + button publishes on demand.
- Next Stage Writer on the receiving site, configured and within its quota, only if you want the rewrite. Without it the article simply imports as it is.
To repost to Facebook
- Next Stage Cross and Next Stage Schedule on the same site, with Facebook pages already connected to the way that site publishes.
- The site listed in its own Cross sources with the repost secret minted on the Crosspost page — a repost is your site calling itself.
- Only articles that are published and publicly visible; drafts, private and password-protected posts are refused, and the homepage is not repostable.
- If the site publishes through ContentStudio rather than a direct Facebook connection, the Facebook-only filter depends on that workspace's cached account list.
Permissions and platform
- Publishing and reposting are gated by an explicit crosspost permission granted per user, network-wide. Being a site admin is not enough on its own.
- Reading traffic has no such gate: anyone who can open those WordPress screens sees the numbers.
- These are recent platform features. If a workspace has not been updated for them yet, the dashboard says so plainly instead of failing quietly.
WordPress integration, answered.
The only thing it adds to a public page is the tracking tag, and only if you ask it to inject one — a deferred script that loads after your content. Every traffic figure is fetched server-side in PHP, cached, and rendered into wp-admin screens asynchronously, so a posts list or an editor screen never waits on an external call. The public [pageview] strip is the one front-end feature that reads data, and it serves cached values behind a short timeout; if PageView.ro is slow or unreachable it simply does not render.
Every metric is cached in WordPress transients — from about 15 seconds for the live reader count up to about 10 minutes for the dashboard widget — behind an anti-stampede guard that is written before the upstream call, so a burst of visitors produces one request rather than hundreds. Unpublished posts make no call at all, uncached per-article lookups on the public path are capped per minute, upstream calls use short timeouts, and a failed call is cached as well, so an outage does not turn into a retry storm.
Next Stage Analytics alone for everything you read inside WordPress. Next Stage Schedule if you want traffic badges on its social calendar or want to hand a published article to social. Next Stage Cross on any site that receives an article or a repost. Next Stage Writer only if you want cross-published articles rewritten before they publish. They are separate plugins, and nothing in the reporting depends on the publishing ones.
It is stored in WordPress options and used only from PHP — the browser talks to your own site, never to PageView.ro. The key resolves to exactly one site, so even if it leaked it could not reach another site's data, and a site admin can rotate or revoke it from Settings → API access at any time. The public tracker key is a separate field whose validation rejects anything that is not a public key, so the secret one cannot end up in a page.
Yes — that is the point. There is no ledger and no one-shot lockout, so an older article climbing the board again can be reposted again, days or weeks later. The caveat is that duplicate protection is same-second only: two clicks a second apart produce two genuine Facebook posts, and there is no confirmation dialog in between.
No. Every repost is a person clicking a button on an article row. The automatic feature in this area is a different one: it cross-publishes an article to partner sites when it passes a live-reader threshold you configured, and it is hard-wired never to send the social signal. Nothing measures what a repost brought back either — those readers return as ordinary Facebook referrals in the social bucket, like any other Facebook traffic.
Put the numbers where the work happens.
Access is invite-only while we scale. Request an invite and we will set up the site, the key and the plugins with you.