PulseForUmbraco 1.0.0

dotnet add package PulseForUmbraco --version 1.0.0
                    
NuGet\Install-Package PulseForUmbraco -Version 1.0.0
                    
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="PulseForUmbraco" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PulseForUmbraco" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="PulseForUmbraco" />
                    
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 PulseForUmbraco --version 1.0.0
                    
#r "nuget: PulseForUmbraco, 1.0.0"
                    
#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 PulseForUmbraco@1.0.0
                    
#: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=PulseForUmbraco&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=PulseForUmbraco&version=1.0.0
                    
Install as a Cake Tool

Pulse for Umbraco

NuGet Umbraco Marketplace

Your Umbraco site's operational health monitor. Pulse scans your content, configuration, performance, and security — giving you an actionable health score and one-click remediation from inside the backoffice.


✨ Features

🏥 Health Scanning & Scoring

  • 40+ built-in rules across 5 categories — Content Health, Site Setup, Performance, Access & Security, and Content Quality
  • Overall health score (0–100) with per-category breakdowns
  • Severity levels — OK, Advisory, Attention, and Urgent — so you know what to fix first
  • Real-time scan progress — see which rule is being evaluated and track completion

🔧 One-Click Remediation

  • Empty recycle bins, disable stale users, delete unused document/data types — directly from the dashboard
  • Per-rule rescan to verify your fix worked
  • "How to Fix" guidance — contextual remediation steps in a sidebar for every rule

🎯 Custom Scans

  • Pick specific rules and run a targeted scan without affecting your persisted results
  • Save and manage presets — create named rule selections for repeatable scans
  • Results are read-only and do not trigger notifications or affect your score history

📊 History & Trend Analysis

  • Score sparkline tracks your site health over time
  • Trend alerts detect score drops, sustained declines, and new critical issues
  • Up to 90 historical scan snapshots

⏰ Scheduled Scans

  • Choose a preset (every 6h, 12h, daily, weekly) or set a custom interval
  • Configure preferred scan time and day of week
  • Manage the schedule from the backoffice Settings view — changes take effect immediately

🔔 Notifications

  • Email digests when your score drops below a threshold or new urgent issues appear
  • Weekly digest emails — automated summary of your site health delivered on schedule
  • Backoffice banner alerts — dismissible per-notification
  • Configurable cooldown to avoid inbox flooding
  • Test email endpoint to verify SMTP before relying on alerts

👤 Issue Assignments & Collaboration

  • Assign issues to backoffice users directly from the drilldown view
  • Email notifications sent to the assignee on assignment
  • Inline feedback panel — add comments and track progress per issue
  • To-do list — each user can view their open assignments
  • Comment editing and deletion with author/admin permissions

🚫 Suppressions

  • Suppress entire rules or individual items with an optional reason and expiry
  • Suppressed items are excluded from scoring — your score reflects what matters

🏆 Achievements

  • Earn badges by running scans, fixing issues, exporting reports, completing the tour, and more
  • Progress tracker with categorised achievement cards
  • Unlocked automatically as you use Pulse

🌐 Multi-Site Support

  • Site picker in the dashboard for installations with multiple root content nodes
  • Per-site scans run on demand and are scoped to the selected site

📈 Site Stats

  • At-a-glance content, media, and member statistics for your Umbraco installation
  • Useful context alongside your scan results

📥 CSV Export

  • Download a full scan report as CSV — share with your team or archive for compliance

🎓 Guided Tour

  • Built-in interactive tour walks new users through the dashboard on first visit

📋 Requirements

Requirement Version
Umbraco 17+
.NET 10+
Database SQL Server or SQLite

🚀 Installation

Install via NuGet:

dotnet add package PulseForUmbraco

Or via the Package Manager Console:

Install-Package PulseForUmbraco

Pulse automatically creates its database tables on first startup — no manual migration steps required.


⚙️ Configuration

Add the following section to your appsettings.json to customise Pulse's behaviour. All settings are optional — sensible defaults are applied.

{
  "Umbraco": {
    "Pulse": {
      "Enabled": true,
      "ScanIntervalHours": 24,
      "InitialDelaySeconds": 60,
      "BatchSize": 500,
      "LargeMediaThresholdMB": 5,
      "MaxContentDepth": 7,
      "MaxDocTypeProperties": 50,
      "StaleUserDays": 90,
      "StaleContentDays": 180,
      "ThinContentWordThreshold": 300,
      "ReadabilityMinScore": 30,
      "MetaDescriptionAliases": "metaDescription,seoMetaDescription,description",
      "ListViewContentThreshold": 50,
      "TrendAlertScoreDropThreshold": 10,
      "TrendAlertConsecutiveDeclines": 3,
      "TrendAlertSnapshotWindow": 10,
      "Schedule": {
        "Preset": "Daily",
        "CustomIntervalHours": 24,
        "PreferredHourUtc": 2,
        "PreferredDayOfWeek": "Sunday"
      },
      "Notifications": {
        "EmailEnabled": false,
        "EmailRecipients": "",
        "EmailFrom": "",
        "ScoreThreshold": 70,
        "NotifyOnNewCritical": true,
        "NotifyOnScoreDrop": true,
        "ScoreDropThreshold": 10,
        "BackofficeBannerEnabled": true,
        "CooldownHours": 24
      }
    }
  }
}

Configuration reference

Setting Default Description
Enabled true Enable or disable the background scanner
ScanIntervalHours 24 Fallback interval between scans
InitialDelaySeconds 60 Delay before the first scan after startup
BatchSize 500 Max content items processed per batch
LargeMediaThresholdMB 5 Media files larger than this are flagged
MaxContentDepth 7 Content nodes deeper than this are flagged
MaxDocTypeProperties 50 Doc types with more properties are flagged
StaleUserDays 90 Users inactive longer than this are flagged
StaleContentDays 180 Published pages not updated within this are flagged
ThinContentWordThreshold 300 Pages with fewer words are flagged as thin content
ReadabilityMinScore 30.0 Flesch-Kincaid score below which content is flagged
ListViewContentThreshold 50 Doc types with more children without list view are flagged

Schedule presets

Preset Interval
Every6Hours Every 6 hours
Every12Hours Every 12 hours
Daily Once per day at the preferred hour
Weekly Once per week on the preferred day and hour
Custom Uses CustomIntervalHours
Disabled No automatic scanning

Tip: The schedule can also be managed from the Settings tab in the Pulse backoffice section — changes take effect immediately without restarting.


🏗️ Scan Rules

Content Health

Rule Description
Unused Document Types Doc types with zero published content
Orphaned Media Media items not referenced by any content
Missing Templates Doc types configured without an assigned template
Recycle Bin Bloat Excessive items in content/media recycle bins
Excessive Nesting Content nodes nested deeper than the configured threshold
Empty Content Nodes Published pages with no property values
Unused Data Types Data types not used by any doc type
Missing Alt Text Media images without alt text
Broken Internal Links Content referencing deleted or unpublished pages
Never Published Content Content nodes that have never been published
Unpublished Content Previously published content that is now unpublished
Unpublished Changes Published content with pending draft changes
Empty Media Folders Media folders containing no items
Unused Compositions Compositions not referenced by any document, media, or member type

Site Setup

Rule Description
Environment & Debug Mode Hosting environment is set to Development on a non-dev server
Hostname & Domain Bindings Root content nodes without hostnames or orphaned domain assignments
Missing Mandatory Cultures Variant content missing one or more mandatory language cultures
Custom 404 Page No custom 404 error page configured or referenced page is missing
SMTP Email Delivery No SMTP settings configured for outbound email
HTTPS Enforcement Site is not enforcing HTTPS via UseHttps or domains use HTTP scheme
Log Retention Policy Serilog file-sink log retention is not configured, risking unbounded disk growth

Performance

Rule Description
Oversized Media Files Media files exceeding the configured size threshold
Content Version Cleanup Version cleanup policy is not enabled or nodes have excessive versions
Overloaded Document Types Doc types whose property count exceeds the configured threshold
Duplicate Media Files Identical media files uploaded multiple times (filename + size match)
List View Not Enabled Content nodes with many children but no list view on their doc type
Page HTTP Status Codes Pages returning unexpected HTTP status codes (e.g., 404, 500)

Access & Security

Rule Description
User Password Policy Strength Back-office user password policy does not meet minimum requirements
Member Password Policy Strength Front-end member password policy does not meet minimum requirements
Unsafe Upload Extensions Allowed file upload extensions that could enable remote code execution
TLS Certificate Expiry TLS/SSL certificate for any configured hostname expiring within the configured threshold
Dormant User Accounts Back-office users inactive beyond the configured threshold
Sensitive File Exposure Sensitive files accessible via the web server
Security Response Headers Missing or weak HTTP security headers (HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, and more)
Outdated NuGet Packages NuGet packages with known vulnerabilities or outdated versions
External Script Audit Script tags loading from external domains — a supply-chain attack vector
Excessive Admin Accounts Too many users in the Administrators group
Cookie Security Attributes Missing or weak cookie security attributes (Secure, HttpOnly, SameSite)
Content Security Policy Missing or misconfigured Content-Security-Policy header and key CSP directives

Content Quality

Rule Description
Stale Content Published pages not updated within the configured threshold
Thin Content Pages with fewer words than the configured threshold
Readability Content with poor Flesch-Kincaid readability scores
Missing Meta Description Pages missing a meta description tag in rendered HTML
Missing Open Graph Tags Pages missing og:title, og:description, or og:image meta tags for social sharing

🖥️ Dashboard Tabs

Tab Description
Overview Health score ring, severity bar, category cards, filterable rules table, and trend sparkline
Content Health Focused view of content/structure rules
Site Setup Configuration and setup rules
Performance Performance-related rules
Access & Security User and access control rules
Content Quality Content freshness, readability, and SEO rules
Custom Scan Pick individual rules, run targeted scans, and save/load presets
Suppressions Manage all active rule/item suppressions
History & Trends Score history chart and trend degradation alerts
Settings Scan schedule and notification settings configuration

👥 Authors


Built with ❤️ for the Umbraco community

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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 41 3/16/2026