Documentation

User Guide

Everything you need to install, configure, and get the most out of Pulse for Umbraco.

Contents

  1. Installation
  2. Running Your First Scan
  3. Understanding the Health Score
  4. Severity Levels
  5. Scan Rules
  6. One-Click Remediation
  7. Custom Scans & Presets
  8. Suppressions
  9. History & Trend Analysis
  10. Scheduled Scans
  11. Notifications
  12. Issue Assignments & Collaboration
  13. Achievements
  14. Multi-Site Support
  15. CSV Export
  16. Configuration Reference

1. Installation

Pulse is distributed as a NuGet package. Add it to your Umbraco 17+ project:

terminal
$ dotnet add package PulseForUmbraco

Or via the Package Manager Console:

PM> Install-Package PulseForUmbraco

Pulse automatically creates the database tables it needs on first startup — no manual migration steps required. It supports both SQL Server and SQLite.

After installing, start your Umbraco site and log into the backoffice. You will see a new Pulse section in the left-hand navigation.

2. Running Your First Scan

Open the Pulse section from the backoffice sidebar and you will land on the Overview tab.

  1. Click the Scan button in the top-right corner.
  2. Watch as all 42 health rules are evaluated in real-time. A progress indicator shows which rule is currently running and the overall completion percentage.
  3. When the scan completes you will see your overall health score, per-category breakdowns, and a filterable list of results.
Tip: On first visit, Pulse offers an interactive Guided Tour that walks you through every area of the dashboard. Restart it any time from the Settings area.

3. Understanding the Health Score

After a scan, Pulse calculates an overall score from 0 to 100. The score is a weighted aggregate of the results across all five categories:

Content Health

Site Setup

Performance

Access & Security

Content Quality

Each category receives its own score, displayed as colour-coded cards on the Overview tab. A sparkline chart tracks how your score changes over time.

4. Severity Levels

Every rule result is assigned one of four severity levels so you can prioritise your work:

OK
No issues detected — the rule is passing.
Advisory
A minor improvement opportunity. No immediate risk.
Attention
A moderate issue that should be addressed soon.
Urgent
A critical issue that needs immediate action.

The severity bar on the Overview tab gives you an at-a-glance breakdown of how many rules fall into each level.

5. Scan Rules

Pulse ships with 42 built-in rules organised across five categories.

Content Health

RuleWhat it checks
Unused Document TypesDoc types with zero published content.
Orphaned MediaMedia items not referenced by any content.
Missing TemplatesDoc types configured without an assigned template.
Recycle Bin BuildupExcessive items in content or media recycle bins.
Deeply Nested ContentContent nodes nested deeper than the configured threshold.
Empty Published ContentPublished pages with no property values populated.
Unused Data TypesData types not used by any doc type.
Missing Alt TextMedia images without alt text.
Broken Internal LinksContent referencing deleted or unpublished pages.
Never Published ContentContent nodes that have never been published.
Previously Unpublished ContentPreviously published content that is now unpublished.
Unpublished ChangesPublished content with pending draft changes.
Empty Media FoldersMedia folders containing no items.

Site Setup

RuleWhat it checks
Environment & Debug ModeHosting environment is set to Development on a production server.
Hostname BindingNo hostnames are bound to the site.
Missing Mandatory CulturesVariant content missing one or more mandatory language cultures.
Custom 404 PageNo custom 404 error page configured or the configured page is missing.
SMTP Email DeliveryNo SMTP settings configured for outbound email.
HTTPS EnforcementHTTPS is not enforced or assigned domains use plain HTTP.
Log Retention PolicySerilog file-sink retention is not configured, risking unbounded log growth.

Performance

RuleWhat it checks
Oversized Media FilesMedia files exceeding the configured size threshold.
Content Version CleanupVersion cleanup is not enabled, causing database bloat.
Overloaded Document TypesDoc types with an excessive number of properties including compositions.
Duplicate Media FilesIdentical media files uploaded multiple times.
List View Not EnabledDoc types with many children but no list view configured.

Access & Security

RuleWhat it checks
Dormant User AccountsBack-office users inactive beyond the configured threshold.
Excessive Admin AccountsToo many users with full administrator privileges.
External Script AuditScript tags loading from external domains — a supply-chain attack vector.
Unsafe Upload ExtensionsAllowed file upload extensions that could enable remote code execution.
Content Security PolicyMissing or weak Content-Security-Policy header on the public site.
Security Response HeadersMissing OWASP-recommended HTTP security headers (HSTS, X-Content-Type-Options, X-Frame-Options, etc.).

Content Quality

RuleWhat it checks
Stale ContentPublished pages not updated within the configured threshold.
Thin ContentPages with very few words.
ReadabilityContent with poor Flesch-Kincaid readability scores.
Missing Meta DescriptionPages missing SEO meta description values.
Missing Open Graph TagsPages missing og:title, og:description, or og:image tags for social sharing.

6. One-Click Remediation

Several rules offer a Fix button directly in the results drilldown. Available actions include:

After performing a fix, click Rescan on that rule to verify the issue has been resolved. The updated result is reflected in your overall score immediately.

7. Custom Scans & Presets

The Custom Scan tab lets you pick a subset of rules and run a targeted scan.

  1. Navigate to the Custom Scan tab.
  2. Select the rules you want to evaluate using the checkbox list.
  3. Click Run Custom Scan.

Custom scan results are read-only — they do not overwrite your persisted score, trigger notifications, or affect your score history.

Saving Presets

If you run the same combination of rules frequently, save them as a preset:

  1. Select the rules you want.
  2. Click Save Preset and give it a name (e.g. "Pre-deployment check").
  3. Next time, load the preset from the dropdown to instantly select those rules.

8. Suppressions

Sometimes a rule result is a known exception you have decided to accept. Rather than letting it drag your score down, you can suppress it.

When creating a suppression you can optionally provide a reason and an expiry date. Expired suppressions are automatically removed and the items return to your score.

All active suppressions are listed on the Suppressions tab where they can be reviewed or removed.

9. History & Trend Analysis

Pulse stores up to 90 historical scan snapshots. The History tab displays:

Use this data to correlate score changes with deployments, content updates, or configuration changes.

10. Scheduled Scans

Automate your health monitoring by configuring a scan schedule from the Settings area:

PresetInterval
Every 6 HoursScan every 6 hours
Every 12 HoursScan every 12 hours
DailyOnce per day at your preferred hour
WeeklyOnce per week on your preferred day and hour
CustomSet any interval in hours
DisabledNo automatic scanning

You can also set your preferred time (UTC hour) and preferred day of week. Changes saved in the backoffice take effect immediately — no application restart required.

11. Notifications

Pulse can alert you when something needs your attention.

Email Digests

When enabled, Pulse sends email notifications when:

Configure recipient email addresses, the "from" address, and a cooldown period to prevent inbox flooding. Use the Test Email button to verify your SMTP settings.

Backoffice Banners

When enabled, a dismissible banner appears at the top of the Pulse dashboard when new issues are detected. Each notification can be dismissed individually or all at once.

12. Issue Assignments & Collaboration

Pulse turns scan results into actionable work items your team can track.

Assigning Issues

  1. Open a rule drilldown and click Assign on any flagged item.
  2. Select a backoffice user from the picker.
  3. The assignee receives an email notification with details of the issue.

Comments & Progress Tracking

To-Do List

Every user has a personal to-do list showing their open assignments across all rules. Access it from the dashboard to see what needs your attention.

13. Achievements

Pulse includes a gamification layer to keep your team engaged with site health:

14. Multi-Site Support

If your Umbraco installation has multiple root content nodes, Pulse provides a site picker at the top of the dashboard.

15. CSV Export

Download a full scan report as a CSV file from the dashboard:

  1. Run a scan or view existing results.
  2. Click the Export CSV button.
  3. The file includes every rule, its severity, category, result detail items, and timestamps.

Use CSV exports to share reports with stakeholders, attach to project documentation, or archive for compliance audits.

16. Configuration Reference

All configuration is optional. Add the Umbraco:Pulse section to your appsettings.json to override defaults:

appsettings.json
{
  "Umbraco": {
    "Pulse": {
      "Enabled": true,
      "ScanIntervalHours": 24,
      "InitialDelaySeconds": 60,
      "BatchSize": 500,
      "LargeMediaThresholdMB": 5,
      "MaxContentDepth": 7,
      "MaxDocTypeProperties": 50,
      "StaleUserDays": 90,
      "StaleContentDays": 180,
      "ThinContentWordThreshold": 300,
      "ReadabilityMinScore": 30,
      "ListViewContentThreshold": 50,
      "Schedule": {
        "Preset": "Daily",
        "CustomIntervalHours": 24,
        "PreferredHourUtc": 2,
        "PreferredDayOfWeek": "Sunday"
      },
      "Notifications": {
        "EmailEnabled": false,
        "ScoreThreshold": 70,
        "NotifyOnNewCritical": true,
        "NotifyOnScoreDrop": true,
        "ScoreDropThreshold": 10,
        "BackofficeBannerEnabled": true,
        "CooldownHours": 24
      }
    }
  }
}

Settings Quick Reference

SettingDefaultDescription
EnabledtrueEnable or disable the background scanner.
ScanIntervalHours24Fallback interval between scans.
InitialDelaySeconds60Delay before the first scan after startup.
BatchSize500Max content items processed per batch.
LargeMediaThresholdMB5Media files larger than this (MB) are flagged.
MaxContentDepth7Content nodes deeper than this are flagged.
MaxDocTypeProperties50Doc types with more properties are flagged.
StaleUserDays90Users inactive longer than this are flagged.
StaleContentDays180Published pages not updated within this are flagged.
ThinContentWordThreshold300Pages with fewer words are flagged as thin content.
ReadabilityMinScore30Flesch-Kincaid score below which content is flagged.
ListViewContentThreshold50Doc types with more children without list view are flagged.