
Get phone and SMS alerts fromelmah.io
elmah.io watches .NET applications from both sides: the exceptions they throw, and the uptime checks and heartbeats that say whether they are answering at all. Spike turns those messages into incidents and pages whoever is on call — by phone, SMS, Slack or email — escalating until someone picks it up.
Set up with AI
I use elmah.io for monitoring and Spike for on-call and incident management. Walk me through connecting them: create a elmah.io integration in Spike, copy its webhook URL, and add that webhook to elmah.io alert settings. Then help me send a test alert to confirm incidents show up in Spike.
What is elmah.io?
elmah.io is error logging and uptime monitoring built for .NET. It collects the exceptions an ASP.NET, Blazor or worker application throws — with the stack trace, the request behind them and the user they happened to — and groups repeats of one fault together instead of mailing out a copy each time. It also watches from the outside: uptime checks against your public endpoints, and heartbeats that expect a ping from every scheduled job, raising a message when one stops arriving.
Inside elmah.io those messages are a feed and, at best, an email into a mailbox nobody is reading at 3am. Pointed at Spike through a Logs → Rules webhook, the same message becomes a page: the on-call engineer is called and texted within seconds, and anything nobody acknowledges climbs the escalation policy until someone answers. The incident carries elmah.io’s own sentence about what is wrong — the exception message, or the “is down” line from a failing check — and on an error it adds the exception type and the application name, so whoever wakes up knows what broke and where before opening anything.
Severity is what separates a problem from its ending, because one elmah.io rule sends both. Fatal, Error and Warning messages open incidents; the Information message that follows a recovery closes them; Verbose and Debug never page anyone. Who gets woken, and how hard, is decided in Spike: alert routing rules read the application, severity and the rest of the payload each message arrives with, so a staging worker doesn’t wake the same people a checkout API does.
An uptime check or a heartbeat also carries the endpoint it is about, identical on the failure and on the recovery, so Spike matches the two to each other: repeated failures fold into the incident already open rather than paging the rotation again, and the recovery resolves it with no stale page left behind to close by hand in the morning. Application errors are matched on their title instead, which Spike keeps identical between occurrences, so every repeat of one exception joins one incident.
How to set up elmah.io alerts
Every Spike integration is a unique webhook URL. Paste it into elmah.io and alerts start flowing — no agents, no code.
Step 1: Create an elmah.io integration in Spike
In your Spike dashboard, open Integrations and choose elmah.io. Spike generates a unique webhook URL for this integration — copy it, and attach the integration to the service and escalation policy that should answer these messages.
Step 2: Add a rule in elmah.io
In elmah.io, open Logs → Rules and add a rule. Give it the query that selects the messages you want paged on — the built-in Uptime message filter for checks and heartbeats, a severity or application query for errors — and set its action to Send a HTTP request, with the Spike webhook URL as the endpoint. No authorization header is needed; the token in the URL is the credential, as with every other Spike integration.
Step 3: Fill in the request body
elmah.io sends whatever JSON you type, so the body is where you tell Spike what arrived. It takes an event_type you set yourself to Uptime, Heartbeat or Error, then elmah.io's own variables for the message title, detail and severity, the url the message is about, and — on an error rule — the exception type and the application it was logged from. Copy the variable names from the list elmah.io shows beside the body field, and keep the Spike field names exactly as documented.
Step 4: Watch a message become an incident
Severity decides what happens next. A Fatal, Error or Warning message opens an incident titled with elmah.io's own sentence about the fault, so the alert reads on a lock screen without opening elmah.io. The Information message elmah.io logs when a check goes healthy again resolves that incident, and Verbose and Debug messages are ignored, so the rotation is never woken by routine logging.
That's it — elmah.io alerts now page whoever is on call.


