Flowcourier.Umbraco.Analytics.Core 17.5.0-alpha.2

This is a prerelease version of Flowcourier.Umbraco.Analytics.Core.
dotnet add package Flowcourier.Umbraco.Analytics.Core --version 17.5.0-alpha.2
                    
NuGet\Install-Package Flowcourier.Umbraco.Analytics.Core -Version 17.5.0-alpha.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Flowcourier.Umbraco.Analytics.Core" Version="17.5.0-alpha.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Flowcourier.Umbraco.Analytics.Core" Version="17.5.0-alpha.2" />
                    
Directory.Packages.props
<PackageReference Include="Flowcourier.Umbraco.Analytics.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Flowcourier.Umbraco.Analytics.Core --version 17.5.0-alpha.2
                    
#r "nuget: Flowcourier.Umbraco.Analytics.Core, 17.5.0-alpha.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Flowcourier.Umbraco.Analytics.Core@17.5.0-alpha.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Flowcourier.Umbraco.Analytics.Core&version=17.5.0-alpha.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Flowcourier.Umbraco.Analytics.Core&version=17.5.0-alpha.2&prerelease
                    
Install as a Cake Tool

Flowcourier.Umbraco.Analytics.Core

The shared base of Flowcourier's analytics packages for Umbraco. It adds an Analytics section to the backoffice, and fills the shared Analytics tab on every document (Foundation's — the SEO Agent's and AEO's per-page views appear there too, as further sub-tabs) with this package's panels. The same dashboards render whatever the traffic source:

  • An Overview dashboard, the section's landing page: human traffic and AI-agent traffic side by side over the same range, with the agent half read from Flowcourier.Umbraco.AEO when it is installed. It renders whichever halves the site has and names the package that would supply the rest, so it is useful before anything is set up.
  • Realtime, Visitors, Behaviour, Acquisition and Technology dashboards, plus a per-page traffic view — fed by a provider package. Install Flowcourier.Umbraco.Matomo for Matomo or Flowcourier.Umbraco.GoogleAnalytics for Google Analytics 4 — one of the two, never both.
  • A "Google Search" sub-tab on documents, holding both of Google's views of the page because an editor reads them as one question — does Google have it, and is it fast when it gets there? It appears when either feature below is enabled and renders whichever half the install can serve.
  • Optional Google Search Console: the index status from the URL Inspection API with what to do about it, and the page's clicks, impressions, CTR, position, queries, countries and devices — plus a site-wide "Search queries" dashboard.
  • Optional Google PageSpeed Insights: the Lighthouse category scores and real-user (CrUX) data for mobile or desktop, in the same sub-tab. It shows the last analysis the server holds and waits for a click before running a new one — a run takes 20–60 s and spends PageSpeed quota. Lighthouse's own detail (lab metrics, opportunities, failing audits) is one link away in Google's tool.
  • A live visitor badge on the Analytics section in the top bar; it pulses briefly when the number changes.
  • Findings on the document tab (Foundation's strip): traffic down vs the previous 28 days with the channel that fell most, no visits on an old page, a landing page bouncing well above the site median, a mid-funnel page where visitors stop, no internal page leading here, site searches right after the page, server time far above the site's — and "not indexed" from the last Search Console inspection. Thresholds under Flowcourier:Analytics:Findings.
  • Feeds Foundation's page detection: a node whose URL has pageviews is a page (so the document tab shows) and the tracked site URL is where the front end is probed for the rest.
  • A Visits dashboard and a page flow, when the installed provider answers per visit — see below.

Configured entirely from appsettings. No database tables unless you turn Search Console index tracking on — that one feature stores the last known index status per page in FcAnalyticsIndexStatus, created on the next start after you enable it. You normally install a provider package, which brings this one in; install this package alone if you only want PageSpeed Insights and Search Console.

Visitor journeys

Two surfaces, both optional:

  • A Visits dashboard: the visits of a date range, newest first, and the ordered path of whichever one you open — entry page, each pageview with the time spent on it, the last one marked as the exit, and any events, goals, site searches, downloads and outlinks shown on the step they happened on. Earlier visits by the same visitor open in the same panel. The Realtime dashboard's rows open it too, from data that report already carries.
  • The page flow on a document's Analytics → Traffic tab: where visitors to this page came from and where they went next, as one picture — previous pages and external referrers on one side, next pages, outlinks, downloads, the visits that came back to the page and the ones that left the site on the other. Each side shows its top 8 plus one aggregated "other" row, and a toggle swaps the graph for the numbers.

It needs a provider that answers per visit. Matomo does; Google Analytics cannot (GA4's API has no per-visit data), so on a GA install these surfaces simply do not appear. Nothing here is stored in Umbraco — every request goes to the analytics host and the answer is rendered, never persisted.

Matomo prerequisites

What Why
enable_visitor_log = 1 Matomo's visits log. With it off, Matomo serves no per-visit data and the feature reports itself as unavailable, naming this setting.
enable_visit_profile = 1 Needed for Matomo's own profile view; this package reads the visits log directly, so it is not required here — but it is the neighbouring switch and worth knowing about.
Transitions plugin The page flow. Without it the Traffic tab keeps everything else and the flow area shows its empty state.
enableHeartBeatTimer() in the site's own tracking code Time spent on the last page of a visit. Matomo cannot know how long someone stayed on the page they left from unless the tracker keeps pinging. These packages only read Matomo's Reporting API — they do not emit tracking code — so without it the exit step shows "—" rather than a misleading "0s".

Access and the kill switch

Journey endpoints are checked server-side for Analytics section access — every authenticated backoffice user can reach the API (editors need the document tab), so the client-side section gate is not the control. The same check now covers the realtime report, which also lists individual visits. A user without the section gets the error envelope with status 403, and the status endpoint reports the feature as not ready for them, so no surface is offered in the first place.

Set Flowcourier:Analytics:VisitorJourney:Enabled to false to switch the whole thing off: no dashboard is registered, the endpoints answer 409, and no request for individual-visitor data reaches the provider.

A note on privacy

Some sites run Matomo precisely to avoid individual-level tracking. This feature surfaces data Matomo is already collecting and that the Realtime dashboard already shows — it does not change what is tracked, and it stores nothing. If that is not wanted in the backoffice at all, the switch above is the answer; if it is not wanted anywhere, Matomo's own enable_visitor_log is.

Configure

{
  "Flowcourier": {
    "Analytics": {
      "SiteUrl": "https://www.example.com",
      "PageSpeed": { "Enabled": true, "ApiKey": "<google api key>" },
      "SearchConsole": { "Enabled": true, "Property": "sc-domain:example.com" },
      "Google": { "ServiceAccountJson": "<service-account key json>" }
    }
  }
}
Setting Default Description
SiteUrl provider's tracked URL Public base URL used to build page URLs for PageSpeed and Search Console.
GrantAdminSectionAccess true Add the Analytics section to the Administrators group on startup.
RealtimeBadge:Enabled true Live visitor count on the section tab.
RealtimeBadge:PollSeconds 60 Badge refresh interval.
PageSpeed:Enabled false Turn on the Page speed section of the document "Google Search" sub-tab.
PageSpeed:ApiKey — Google API key with the PageSpeed Insights API enabled (recommended; anonymous quota is tiny).
PageSpeed:Referer the page's origin HTTP referrer sent to Google, so a key restricted to your site's referrers works from the server.
PageSpeed:DefaultStrategy mobile Strategy analysed first.
PageSpeed:CacheHours 24 Keep an analysis this long before asking Google again.
SearchConsole:Enabled false Turn on the "Search queries" dashboard and the Search Console half of the document "Google Search" sub-tab.
SearchConsole:Property SiteUrl + / URL-prefix (https://www.example.com/) or domain (sc-domain:example.com) property.
SearchConsole:PendingDays 14 A page younger than this that Google has not indexed yet is "pending", not a warning.
Findings:MinPageviews 50 Below this many pageviews in the window no traffic rule fires.
Findings:TrafficDropPercent 30 Visits down by at least this much vs the previous window.
Findings:BounceAboveMedianFactor / ExitAboveMedianFactor 1.5 Landing-page bounce / mid-funnel exit at or above the site median × factor.
Findings:SearchAfterPercent 10 Site searches right after the page, as a share of its pageviews.
Findings:ServerTimeFactor / ServerTimeMinMs 2 / 300 Page server time vs the site's, with a floor.
Findings:NewPageDays 14 Pages younger than this are not reported for having no traffic.
Google:ServiceAccountJson — Service-account key JSON (inline). Add the account's e-mail as a user of the Search Console property.
Google:ServiceAccountJsonPath — …or a path to the key file.

Effective values (secrets masked) are shown under Settings → Flowcourier → Analytics.

Requirements

Umbraco 17.5 or later (net10.0). Google features need outbound HTTPS to googleapis.com / searchconsole.googleapis.com.

License

Free to use, including commercially — not open source. See the LICENSE.md packed with this package. Paid Pro features and consulting are available from Flowcourier ApS.

© 2026 Flowcourier ApS. All rights reserved.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Flowcourier.Umbraco.Analytics.Core:

Package Downloads
Flowcourier.Umbraco.Analytics.AI

Makes the Flowcourier Analytics data answerable in the Umbraco AI Copilot: tools for a page's traffic, its flow, search queries, index status, AI crawler activity and findings, plus an "Explain and suggest" action that turns a page's findings into three prioritised edits. Every tool returns aggregates only — never individual visitors, visitor ids or IP addresses. Needs Flowcourier.Umbraco.Analytics.Core, a provider package and the Umbraco AI Copilot. Also AI Visibility (Analytics Pro): your prompt set sampled through your own Umbraco AI chat profiles with web search, and what the answers cite, beside AEO's real AI-crawler fetches.

Flowcourier.Umbraco.Matomo

Matomo analytics inside the Umbraco backoffice. Adds an "Analytics" section with Realtime, Visitors, Behaviour, Acquisition and Technology dashboards, and an "Analytics" tab on every document showing that page's traffic, referrers, previous/next pages, locations and devices — all read live from your own Matomo (self-hosted or cloud) through its Reporting API. Editors get the numbers where they work, without a Matomo login. Optional Google PageSpeed Insights and Search Console tabs come with the shared Flowcourier.Umbraco.Analytics.Core package. Configured from appsettings (endpoint, token, site id); no database schema; the token never leaves the server.

Flowcourier.Umbraco.GoogleAnalytics

Google Analytics 4 inside the Umbraco backoffice. Adds an "Analytics" section with Realtime, Visitors, Behaviour, Acquisition and Technology dashboards, and an "Analytics" tab on every document showing that page's traffic, referrers, previous/next pages, locations and devices — all read live from your GA4 property through the Google Analytics Data API. Editors get the numbers where they work, without a Google login. Optional Google PageSpeed Insights and Search Console tabs come with the shared Flowcourier.Umbraco.Analytics.Core package. Configured from appsettings (property id + a service-account key shared with Search Console); no database schema; no Google SDK; the key never leaves the server. Successor to the legacy Flowcourier.Umbraco.Analytics package.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
17.5.0-alpha.2 57 9/28/2026
17.5.0-alpha.1 67 9/24/2026