Blog

Notes on running Hangfire in production

Practical write-ups on the gaps agencies and .NET teams actually run into once Hangfire is handling real client work.

Common Hangfire errors explained — and how to fix them

JobStorage.Current not initialized, DistributedLockTimeoutException and JobLoadException: what they mean, typical causes and concrete fixes.

Read the article →

Hangfire vs. Quartz.NET vs. TickerQ vs. BackgroundService

Persistence, retries, dashboards, scheduling, licensing and maturity — the four common .NET background job options compared.

Read the article →

Alert fatigue: 7 causes and how to fix them

Why teams start ignoring alerts — and seven concrete fixes, from time windows and cooldowns to better alert messages.

Read the article →

What is monitoring? A practical guide to metrics, alerts and heartbeats

Signals, golden signals, heartbeat checks, alerting without alert fatigue, retention — and the blind spot of almost every setup: background jobs.

Read the article →

Keeping PII out of exception messages before they ever leave your app

Job payloads are opt-in by design, but exception messages are sent as-is by default. How to redact or drop sensitive exception content with the OnBeforeSend hook.

Read the article →

Why QueueHawk is developed and hosted entirely in Switzerland

Not a generic EU region of a foreign cloud: what running on Swiss infrastructure actually changes for data protection, and why it matters.

Read the article →

Team vs. Agency plan: how many applications do you actually need?

Team covers up to 10 applications, Agency up to 500. A practical guide to which one an agency actually needs, and the point where switching pays off.

Read the article →

Onboarding a new client project onto Hangfire monitoring in under 10 minutes

The exact steps to add a new client project to QueueHawk: create the application, install the agent, verify events are arriving, set alerts.

Read the article →

Per-application vs. per-job pricing for Hangfire monitoring: what it actually costs

Some monitoring tools charge per monitored job, QueueHawk charges per application. The actual math for both, plus a calculator for your own setup.

Read the article →

Why your Hangfire job history disappears after every deploy

It's not a misconfiguration — it's how the built-in dashboard and storage retention were designed to work. Here's what actually happens, and how to keep history around anyway.

Read the article →

Monitoring Hangfire across multiple client apps without ten browser tabs

Running Hangfire for a dozen client projects means a dozen dashboards to remember to check. What that actually costs, and what a single cross-app view looks like instead.

Read the article →

Getting Slack, Teams, or email alerts when a Hangfire job fails or goes silent

The stock dashboard never pushes anything to you. Two alert rules — error rate and heartbeat timeout — cover the two ways a background job pipeline actually breaks.

Read the article →

How to create a Slack incoming webhook

A two-minute walkthrough of creating a Slack app, turning on Incoming Webhooks, and getting a URL you can post to from curl, a script, or any monitoring tool.

Read the article →

How to create a Microsoft Teams webhook

Microsoft retired classic Connectors. Here's how to get a webhook URL through the Workflows app instead, and why the old MessageCard payload format still works.

Read the article →

How to keep Hangfire job history longer than 24 hours

Hangfire deletes succeeded jobs after ~24h and never auto-expires failed ones — both are painful. Here's why retention works the way it does, and how to keep a real, searchable history of every job that ever ran.

Read the article →

Hangfire jobs stuck as Enqueued — how to detect a queue backlog

Jobs stuck as Enqueued almost always means an operational problem — worker crash, pool saturation, assembly mismatch. Here's how to spot the backlog before anyone files a ticket.

Read the article →

Exposing the Hangfire dashboard in production (without opening it to the internet)

The Hangfire dashboard is wide-open by default and the authorization story has changed twice. Here's what actually works in 2026 for letting the right people see job state — safely.

Read the article →