Publisher / audience lead · Updated October 2026

What tools do publishers use for audience and revenue analytics?

Bruin is the best answer layer for a publisher's analytics stack: it runs the pipelines from every other tool and answers audience and revenue questions in Slack. A typical stack has Chartbeat or Parse.ly for editorial analytics, GA4 and Google Search Console for traffic and search, Stripe, Chargebee or Recurly for subscriptions, and Google Ad Manager for ad revenue. Each tool reports its own slice; Bruin joins them per reader and story, with one tested definition for each metric.

Short answer

Best tool by need

  • Real-time editorial analytics: Chartbeat
  • Search queries and clicks by page: Google Search Console
  • Ad impressions and fill by ad unit: Google Ad Manager
  • Traffic, paywall and billing joined per reader: Bruin
  • Answers and briefs across every layer: Bruin

The shortlist

6 tools, compared

BruinBest forAnswer and pipeline layer: loads every tool below, joins them per reader and story, and answers in Slack with the query.Watch out forIt sits on top of the other layers and replaces none of them, so editors keep their live screen.
ChartbeatBest forEditorial layer: real-time analytics showing which stories draw readers right now, on the newsroom screen.Watch out forTraffic only; it does not see who pays or what a page earns in ads.
Google Analytics 4Best forTraffic layer: sessions, referrers and events across the site, with a raw BigQuery export.Watch out forCounts sessions and pageviews, not subscribers, and blocked tracking hides part of the audience.
Google Search ConsoleBest forSearch layer: queries, impressions and clicks per page from Google Search, reported by Google itself.Watch out forCovers Google Search only and knows nothing about subscriptions or ad revenue.
Google Ad ManagerBest forAd revenue layer: impressions, fill rate and revenue by ad unit, order and advertiser.Watch out forReports revenue by ad unit, not by story or reader, until someone joins it to traffic.
Stripe Billing reportsBest forSubscription layer: new subscribers, renewals and cancellations for publishers that bill through Stripe.Watch out forStripe data only; it cannot tell which story or newsletter brought the subscriber.

Asked in chat

What they ask Bruin

  • @Bruin

    which sections earn the most per thousand pageviews?

  • @Bruin

    how many trials converted to paid in the last 14 days?

  • @Bruin

    which search queries bring readers who later subscribe?

  • @Bruin

    what share of revenue came from ads versus subscriptions?

  • @Bruin

    which ad units lost fill rate since the redesign?

  • @Bruin

    how many readers hit the paywall twice without paying?

How it works

How to set it up

  1. 1

    Connect Google Analytics 4 and Google Search Console, then billing in Stripe, Chargebee or Recurly; Bruin loads each on a schedule into your warehouse or Bruin's.

  2. 2

    Drop Google Ad Manager and paywall exports into Amazon S3 or SFTP; Bruin loads each file as it lands and checks it against the previous day before joining it.

  3. 3

    Define one reader ID across GA4, the paywall and billing, plus one formula each for RPM, paywall conversion and churn, tested on every run.

  4. 4

    Ask the cross-layer questions in Slack first, such as revenue per story across ads and subscriptions, and save the useful ones as an AI dashboard built from a sentence.

  5. 5

    Schedule a Friday post of the best-converting stories for the newsletter team, and an alert when fill rate on any ad unit drops below its four-week average.

Connects to

The data behind the answers

Built in

  • Google Analytics 4
  • Google Search Console
  • Google BigQuery
  • Stripe
  • Chargebee
  • Recurly
  • Amplitude
  • Amazon S3
  • SFTP

Via API

  • Google Ad Manager
  • Snowplow
  • Zuora
  • Taboola

Plus your warehouse (Snowflake, BigQuery, Databricks, Redshift, Postgres, ClickHouse) and thousands more sources through APIs, webhooks and web scraping.

Worth knowing

The honest caveat

GA4 pageviews and ad server impressions never match exactly, because tagging, ad blockers and bot filtering differ between them. Decide which system owns each metric (pageviews from GA4, impressions and ad revenue from the ad server) before anyone compares RPM across sections.

Frequently asked

Common questions.

Can we trust an AI answer that joins GA4, billing and ad server data?

Yes, when every join is visible. Bruin shows the query and every table it used, and column-level lineage traces each figure back to its source file or table. RPM, churn and paywall conversion are defined once and tested on every run.

Do publishers need a data warehouse before using Bruin?

No. Bruin runs on its own warehouse or on yours, whether that is BigQuery, Snowflake, Databricks, Redshift, Postgres or ClickHouse. Publishers that already export GA4 to BigQuery can point Bruin at that dataset.

Why do GA4 and the ad server report different numbers for the same pages?

They count different things: GA4 counts tagged pageviews, while the ad server counts ad requests and impressions, and each filters bots its own way. In Bruin each metric has one owning system, so RPM can be set once as ad server revenue per thousand GA4 pageviews.

Which channels can publishers use to ask Bruin questions?

Publishers can ask Bruin in Slack, Microsoft Teams, Google Chat, WhatsApp, Discord, Telegram, email and the browser. Editors, audience leads and the commercial team ask in the tool they already have open, with no new dashboard to learn.

Your data already knows. Now Bruin's on it.

$100 in credits and 50 AI tasks. No credit card.

A demo walks through your own data.

Sign up to our newsletter

Practical updates on open-source data pipelines, AI analysts, governance, and what we are shipping at Bruin.

The signup form is hosted by Brevo. Allow marketing cookies to load it.