Operator comparing several muted analytics charts on a widescreen monitor next to a printed weekly metrics sheet

Forums collect two families of numbers and then argue as if they were one. Traffic is what browsers did after they arrived — sessions, views, landings, the query that sent them. Health is whether a person came back, spoke, got a human reply, and whether staff drowned. This article is the products that produce the first family, and the honest line where they stop. It is a comparison of jobs. It is not a ranking and it is not a price list.

It is not the health-metrics article. That one already owns new-to-first-post, time to first human reply, topics-with-a-reply, DAU/MAU, lurkers, mod load, and solved. Read it. Then use this as the catalogue of where a count can live. It is also not the GA4 + Search Console integration — that piece already owns pasting a Measurement ID into Setup → Options → Statistics and metrics, submitting the XenForo sitemap, and linking the two Google products. Assume that path exists. Stay here for what each product is for.

The admin toolkit already said stats are a class. This is the drawer: XenForo’s own totals, that Measurement ID, Discourse’s admin dashboard, Discourse Data Explorer as a query product, Plausible, Matomo. If a vendor is not in that list, we will not invent a feature set for it.

Two questions, two families

Write this on the staff page before you add a tag.

Family Question Typical product Fake cousin
On-site totals Did this software record a registration, a post, an upload? XenForo ACP statistics; Discourse dashboard counts A GA4 event you named sign_up without proving it fires
Traffic What did a browser do after it arrived? GA4, Plausible, Matomo “Members” in a marketing screenshot
Discovery How did Google Search find the URL? Search Console Sessions
Cohort / SQL Of the people who confirmed this week, who posted? Spreadsheet; Discourse Data Explorer The totals row
Health Come back, speak, get answered, staff load The seven instruments — usually not these products Guest page views

If you only install a traffic product, you will know whether the homepage painted. You will not know whether a new account got a reply. If you only watch ACP totals, you will know cron is alive. You will not know which landing page bounced.

Official XenForo manuals indexed for this site do not print a custom-events map for “thread created” or “reply posted.” Official Discourse material names Data Explorer and dashboard stickiness; it does not publish a universal healthy DAU/MAU. Where a number is not in those sources, this article will not invent it.

XenForo: Statistics and metrics, then the ACP log

XenForo splits “analytics” into two things people mash together.

The option group: one Measurement ID

Setup → Options → Statistics and metrics is where 2.3 community ACP practice pastes a Google Analytics 4 Measurement ID in the G-XXXX form. Official XenForo manuals we used do not print a full “Google Analytics” chapter with that label. The community path is what boards actually use. Do not invent a second core field for a Universal Analytics UA- ID. UA is gone.

That is XenForo’s job in Google’s product: one string. You do not paste a Tag Manager container GTM- into that box. You do not paste the numeric property ID. You do not add a second gtag snippet in PAGE_CONTAINER “to be sure.” You will double-count.

What fires after you save is Google’s stream: page views, and whatever Enhanced measurement toggles you left on in the GA4 Admin UI (scrolls, outbound clicks, site search, file downloads — Google’s names, Google’s HTML guesses). Those are not official XenForo events called thread_view. Do not build a staff dashboard that assumes a reply is a GA4 key event unless you later add a named tag with a named owner. The integration article stops at “the page loaded and Google counted a view.” This comparison agrees.

The log: on-site totals

Separately, XenForo keeps daily counts in the ACP statistics / logs area: registrations, messages, attachments. Official logs chapter: those are on-site counts, not Google. Use them when:

  • You want to know whether cron wrote a row today.
  • GA4 looks drunk (a crawler, a preview bot, a staging host you forgot to exclude).
  • You do not want a third-party tag on a staff-only question.

Use them as totals, not as a cohort. The health article already said: the REST API exposes /api/stats for site-level stats; it will not replace a weekly cohort export. Custom member statistics blocks under Users are top-X leaderboards. They are not new-to-first-post.

What’s New as a human is still the emptiness check totals will not show you. A 4,000-post day that is one argument is a totals lie.

What XenForo will not do here

  • Time to first human reply is not an official ACP report in the materials we used. Sample twenty threads, or own a warehouse. Do not pretend Enhanced measurement is a reply clock.
  • Search Console is not a XenForo screen. Submit the sitemap XenForo already builds; link the Google products on Google’s side.
  • There is no official core “Plausible / Matomo” field next to the Measurement ID. If you run those, you add their snippet yourself (or an add-on you can name). That is your tag, not a XenForo taxonomy.

GA4 as a traffic product

Google Analytics 4 answers: what did people do after they arrived? It does not answer: did the room notice them?

The integration you already have:

  1. A GA4 property + web data stream whose URL matches Board URL.
  2. Measurement ID pasted into Statistics and metrics.
  3. A Search Console property, sitemap submitted, products linked if you want queries next to sessions.

Official Google facts that bite forums (from the integration article, not invented here): Search Console keeps 16 months of data; linked reports inherit that ceiling; Search Console data shows up in Analytics about 48 hours later. Do not debug “missing queries” at hour six.

What GA4 is good for on a board

  • Direction after a redesign. Guest homepage, a new landing page, a portal you pointed Index page route at. Sessions and views, annotated.
  • Landing pages. Which thread or page absorbed the Search click. Pair with Search Console, not instead of it.
  • Device and country at the traffic layer — useful when a region’s TTFB explodes, useless as a loyalty metric.
  • Realtime to confirm the tag fired after you pasted the ID.

What GA4 is a poor proxy for

You wanted GA4 actually saw Do this instead
DAU Sessions, including guests and sloppy bots Platform last-activity, or Discourse stickiness
New → first post A session_start and maybe a page view User list / CSV: confirm date + message count
Reply time Nothing, unless you built a custom event Twenty-thread sample or Data Explorer
Solved Nothing in core Question forums / Discourse Solved
Mod load Nothing Approval / review queue counts

Enhanced measurement is Google’s stream, not a XenForo events map. Site search is the toggle that looks forum-native. XenForo search URLs are not documented in the official manuals as a GA4 query parameter. If the toggle does not pick up /search/ results, leave it. Do not rewrite XenForo search to ?q= so a marketing blog’s recipe works.

Filter staging hosts. Filter known crawlers if you can do it without lying. If two sources disagree, believe the smaller number until you find the bug — crawlers in GA4 are the usual inflation.

We will not invent 2026 GA4 prices, quota tiers, or “GA4 is free so it is best.” It is a traffic product with a Google account that must live in the staff password manager. Losing Admin access to the property is how boards go dark in analytics after a founder leaves.

Discourse admin dashboard

Discourse ships counts on the admin dashboard. The useful one for operators is stickiness: DAU/MAU or WAU/MAU. That is a definition, not a target. The health article already said so. XenForo “users online” and notable-members are not the equivalent report.

What the dashboard is for:

  • Direction: is the logged-in room shrinking or not, on Discourse’s session-active definition.
  • A glance on the daily ACP surface — not a Monday meeting with a printed “healthy is 0.2.”
  • Review-queue volume as a cousin of mod load. Flags are work. They are not a toxicity score.

What the dashboard is not:

  • A cohort. “Users created this week who posted” is a query or a CSV, not a sparkline.
  • Guest health. A lot of a public Discourse is prerendered HTML for spiders — the SEO article owns that. Do not read bot fetches as members.
  • A reason to turn TL0 off because “engagement looks low.” Sandbox exists so the review queue does not become the product. The trust-level model is the lever, not a dashboard target.

Trust-level admin screens tell you who is sandboxed. They are not an “engagement score.”

Discourse Data Explorer (a query product)

Data Explorer is an official plugin for read-only SQL on the live database. Hosted listing in the materials we used: Business and Enterprise. Enable in site settings, then Admin → plugins → Data Explorer. Self-host can run the plugin; hosted Free / Pro may not have it. If you cannot run SQL, you do not have this product. A spreadsheet and a 20-thread sample are then the honest panel.

Notebook and Meta use-cases that are in sources:

  • Time to first response
  • Activity in hidden categories
  • Retention-style reports
  • Anonymous vs logged-in API requests
  • Progress toward TL3 requirements
  • Cohorts for bulk badge award (run query → CSV of emails → Bulk Award)

Seeded queries exist. You may write your own. This article will not invent a SQL schema. Copy a query from Meta’s “cool queries” topic only after you read it against your version.

Rules if you have it:

  • It is read-only. Do not treat it as a bulk-edit tool.
  • It is not a daily surface. It is how you answer one question the dashboard cannot.
  • Export a CSV and date it. The query you cannot find next quarter is not a process.

If you are on hosted Free or Pro without Data Explorer, do not invent SQL you cannot run. The health sheet still works.

Plausible

Plausible is a privacy-first traffic product. It is not XenForo core. It is not Discourse core. It is a third-party (or self-hosted) script that counts page views without the same cookie/consent theatre GA4 usually implies. Official XenForo and Discourse notebooks we queried do not document a first-party Plausible field. If you run it, you added a snippet, a theme component, or an add-on you can name.

What it is good for

  • Simple traffic on a public community: pages, referrers, countries, devices, without building a GA4 property taxonomy.
  • Boards that already promised members a lighter third-party footprint. Say that in the privacy page you actually ship — XenForo Help already has Terms and Privacy pages; Discourse has the equivalent legal topic. Do not invent a 2026 statute here.
  • A second opinion when GA4 looks inflated — if you turn one of them off afterwards. Two tags forever is how you double-count.

What it will not do

  • It will not see XenForo registrations. Those are ACP totals.
  • It will not compute time to first reply.
  • It will not replace Search Console. Referrers that say google are not queries.
  • It will not give you Discourse stickiness. That is the admin dashboard.

We will not invent Plausible’s current pricing, pageview caps, or a “best for forums” badge. Check the vendor if you need the invoice. The comparison is the job: lightweight pageview analytics you inject yourself.

Installation honesty: a script in the header is a performance and CSP decision. The speed article already told you third-party JS is how INP dies. One small first-party or privacy-first tag is a choice. Three tags plus a live-chat pixel is a different product.

Matomo

Matomo is a first-party-analytics product you can self-host (or use as their cloud). Same honesty as Plausible: not a XenForo or Discourse core field. You own the snippet, the MySQL/MariaDB it writes to if you self-host, and the backup of that database.

What it is good for

  • Traffic you want to keep on a box you control. Useful when a parent organisation will not put member URLs in a Google property.
  • Funnels and goals you define, if you are willing to maintain them. Still not official reply_posted events unless you build that.
  • A path off GA4 that is still a real analytics suite, not a 12-number marketing page.

What it will not do

  • It will not become XenForo ACP statistics. You will still open the log for registrations.
  • It will not become Data Explorer. SQL on the forum database is a different server.
  • It will not be free of ops. Self-hosted Matomo is another PHP app, another database, another upgrade. Put it on the stack conversation if you go that way — it is not “a script,” it is a second site.

We will not invent Matomo Cloud prices, on-premise license rows, or a ranking against Plausible. The job is first-party traffic data with more knobs, at the cost of owning those knobs.

If you self-host it on the same 4 GB VPS as XenForo, Redis, and MySQL, you have just invented a new incident. Give it a slice or do not install it.

Products next to each other (jobs, not a podium)

Product You open it to learn You do not open it to learn How it lands on a forum
XF ACP statistics / logs Registrations, messages, attachments, “did cron write today” Guest journeys, queries, reply time Built in
XF Statistics and metrics (Measurement ID) Hook for GA4 page tags Search Console, cohorts One G- field
GA4 Sessions, views, landings, realtime tag test Health instruments, solved, mod load Official-adjacent XF field + Google Admin
Search Console Queries, index coverage What they did after the click Google only; sitemap from XF or Discourse
Discourse dashboard Stickiness, crude counts, queue volume Cohorts, guest SEO traffic quality Built in
Data Explorer A SQL question you can defend Writes; daily glance Plugin; hosted Business+ in sources
Plausible Lightweight pageviews you injected Forum totals, reply time Your snippet
Matomo First-party traffic you are willing to operate Forum SQL, “set and forget” Your snippet or your second app
Staff spreadsheet The seven health instruments A vanity screenshot for a sponsor Twenty minutes on Monday

There is no “best” row. There is a smallest set that answers the questions you actually ask.

A sane 2026 default:

  • XenForo public board: ACP totals + Measurement ID configured as in the GA4 article + Search Console + the health spreadsheet. Add Plausible or Matomo only if you have a reason GA4 cannot meet (privacy promise, or you are leaving Google). Not both, and not “plus GA4 to compare forever.”
  • Discourse: dashboard stickiness + review-queue volume + Search Console if SEO matters + Data Explorer if you have it and a real question + the same spreadsheet. A traffic tag is optional; prerendered spider HTML will confuse you if you are sloppy.

Vanity hits versus health metrics

This is the overlap people use to lie to themselves. Keep the instruments from #60 in one column and the product output in the other.

Health instrument Honest proxy Vanity cousin these products love
New → first post Confirmed accounts with ≥1 public post in 7 days Registrations (ACP); session_start (GA4)
Time to first human reply Median hours, sample or Data Explorer First like; auto-welcome; a GA4 “engagement” second
Topics with a reply Share of new topics with a non-author reply Total replies; total posts
DAU / MAU Platform stickiness or a labelled session-active definition Guest page views; “users” in GA4
Lurker ratio Session-active accounts with 0 public posts this window Everyone who never posted since 2019
Mod load Queue items per staff-hour (or per 100 public posts) Total warnings; total flags without a denominator
Solved Solved ÷ eligible question topics All topics, including memes

Total posts is a vanity number. Total members is a vanity number. “Healthy DAU/MAU is 0.2” is a blog sentence someone invented. The health article already refused a benchmark. This product article refuses it again.

How the vanity cousins sneak in:

  • A launch mail spikes GA4. You celebrate sessions. New → first post is flat. You rented attention.
  • ACP registrations jump. Confirmations are dead (mail). Valid humans did not move. You counted bots or a form that never finished.
  • Discourse stickiness dips after you split a category. You buy a traffic tool. The room is empty because you split the room — design structure is the lever.
  • Plausible shows a beautiful referrer chart. Reply time is 10 days. You have a magazine, not a community. Allowed if intentional. Not a win.

Annotate the week: patch day, AMA, outage, holiday, spam wave, staff vacation. The events article already told you to count rented spikes separately. A traffic product that cannot hold an annotation is a toy.

Combining sources without lying

Rules that belong on the sheet:

  1. Same source all month. Switching from XenForo last-activity to GA4 sessions starts a new baseline. Write it down.
  2. Staff split. If you do not exclude staff (and obvious alts), you will congratulate yourselves for answering your own threads.
  3. One tag. Two JavaScript analytics libraries is a performance bill and a double-count. Pick the job, then pick one product.
  4. Smaller number wins until you find the bug. Usual bugs: crawlers in GA4, RSS/API pings, a mobile keep-alive, deleted posts you still count, guests in DAU, prerender fetches on Discourse.
  5. Do not invent a join XenForo does not have. There is no official core report that says “this Search query became this first post.” You can eyeball landings versus the user list. That is honest. A fantasy funnel is not.

A worked Monday that does not fool you:

  1. ACP totals: registrations, messages. Compare to last four Mondays. Annotation if you shipped something.
  2. Health sheet: new → first post from a user export (or a 20-person sample if you are small).
  3. Traffic product: sessions on the guest homepage and one busy thread. Direction only.
  4. Search Console: queries and coverage — if you care about discovery this quarter. Forty-eight hours stale. Fine.
  5. Discourse: stickiness glance; Data Explorer only if you have a question written in a sentence first.
  6. Stop. Do not open a second traffic product to “confirm.”

Privacy, cookies, and what we will not pretend to be

A Measurement ID is a third-party tag. Plausible and a well-configured Matomo are usually lighter. None of that is legal advice. Official XenForo Help ships Terms and Privacy pages; forcing re-acceptance is under Terms and rules. Discourse has equivalent legal topics. Put the actual sentence — what you load, why — on those pages.

Do not:

  • Hide a second tag in PAGE_CONTAINER after you told members you only use Plausible.
  • Put analytics on a staff-only node and then wonder why a vendor graph shows “engagement.”
  • Use GA4 as a member-surveillance tool. Last-activity and a conversation log already exist inside the product for moderation. Different job, different policy.

IP logs, security lock, and “More users” on a XenForo profile are moderation tools. They are not analytics products. Keep them out of this comparison.

Guest traffic, member traffic, and prerender

A public forum is two audiences in one hostname.

Guests (Search, Discord unfurls, people who have not signed in) dominate page views on most public boards. GA4, Plausible, and Matomo will mostly describe them. That is useful after a landing-page change. It is a poor proxy for “is the room alive.”

Members are the health sheet. Last-activity, message count, Discourse stickiness, the review queue. A traffic product that cannot filter logged-in users will flatter you with guest hits the week you launched a portal and lie to you the week regulars went quiet.

Discourse prerender. Official SEO material: spiders often receive prerendered HTML. Your traffic tag may or may not run in that path the way it runs for Chrome. Do not debug “Googlebot sessions” in GA4 as if they were members. Search Console coverage is the discovery product. The Discourse SEO article owns sitemaps, IndexNow, and /t/ URLs. This comparison only warns: prerender fetches will confuse a sloppy traffic dashboard.

XenForo guest page cache (or LSCache) serves finished HTML. A tag in the cached footer still fires in the browser. A server-side “we counted a view in PHP” will not run. That is fine for GA4/Plausible/Matomo (they are browser tags). It is a reason not to invent a PHP counter and call it analytics.

A decision tree (still not a podium)

Start at the top. Stop at the first yes.

  1. Do you know whether cron wrote registrations and posts today?
    XenForo ACP daily log, or Discourse dashboard counts. If you cannot answer this, do not buy a tag.

  2. Do you care how people find public threads in Google?
    Search Console. Sitemap. The GA4 integration already submitted XenForo’s. Discourse has a core sitemap — the SEO article. There is no forum field labelled Search Console.

  3. Did you change the first screen and need direction on guests?
    One traffic product. On XenForo, the Measurement ID is the official-adjacent hook. On Discourse, an injected tag is optional. Annotate the week.

  4. Must the traffic data stay off Google?
    Plausible or Matomo, instead of GA4. Write that sentence on the privacy page. Do not keep GA4 “just in case.”

  5. Do you need “of this week’s confirms, who posted?”
    Spreadsheet or Data Explorer. Not a traffic product. Not ACP totals.

  6. Do you need reply time, lurkers, solved, mod load?
    Health instruments. Full stop.

If you are at step 6 and still shopping for Plausible and Matomo, you are avoiding the sheet.

When you should not add another product

  • You have not filled the health sheet for four weeks. A new dashboard will not start the habit.
  • You do not have Search Console on a XenForo board you claim to care about in Google. Add the free Google-side property before you pay for a third traffic toy.
  • Guest LCP is already hurting and you want a 40 KB analytics bundle. Fix speed first.
  • You are about to migrate. Stay or migrate is not an analytics ticket. Export what you need (user list, a dated sheet) and do not build a warehouse on a platform you are leaving.

Checklist

  • You can say, in one sentence, whether today’s question is totals, traffic, discovery, SQL, or health
  • XenForo: Measurement ID is a G- string in Statistics and metrics, or you have documented why it is empty
  • XenForo: ACP daily log is what you use for registrations / messages, not a GA4 guess
  • Search Console is a Google property, sitemap submitted, not a missing XenForo field
  • Discourse: stickiness is a glance, not a target copied from a vendor deck
  • Data Explorer is on only if the plan or plugin actually provides it
  • At most one injected traffic tag (GA4 or Plausible or Matomo)
  • Matomo self-host has its own backup and is not starving the forum box
  • Health sheet uses the seven instruments; vanity cousins are labelled as cousins
  • Same source all month; annotations on rented spikes
  • Staff / alts excluded from “we are growing”
  • Privacy page names the tag you actually load

What this article will not do

It will not publish a 2026 price for Plausible, Matomo Cloud, or GA4 360. It will not call a winner. It will not invent official XenForo events named after forum verbs. It will not invent a Discourse “healthy stickiness” number.

It will not replace the toolkit overview. Uptime, the password manager, and the calendar are not analytics. It will not replace automated moderation. Queue volume is a health input, not a reason to buy another graph.

Takeaways

  • Totals, traffic, discovery, SQL, and health are five jobs. One product almost never does all five.
  • XenForo core gives you ACP counts plus one Measurement ID. Search Console is Google. Custom reply events are not core.
  • GA4 is a traffic product. It is a bad DAU, a bad reply clock, and a bad solved report.
  • Discourse’s dashboard stickiness is a definition. Data Explorer is read-only SQL on plans / installs that actually have it.
  • Plausible and Matomo are injected traffic products. Neither is stock XF or stock Discourse. Matomo self-host is a second app.
  • Health metrics stay on a sheet you fill. Guest hits are the vanity cousin.
  • One tag. Smaller number wins. Annotate the week. Do not buy a podium.

Count what the question needs. Leave the rest on the floor.