GDPR Compliance

We use cookies to ensure you get the best experience on our website. By continuing to use our site, you accept our use of cookies, privacy policy and terms of service.

Using MsgGo with Grafana for SMS Alerts (and More)

Introduction

Grafana is an incredible tool for monitoring metrics and visualizing time-series data, and its alerting system is battle-tested. But while Grafana supports a variety of built-in notification channels—like Slack, Microsoft Teams, email, and webhooks—SMS is notably absent.

That gap gave me a good excuse to test MsgGO’s webhook setup with something practical: production alerts.

I wanted high-priority alerts (service downtime) to reach my phone instantly via SMS—something that’s surprisingly hard to do without spinning up a full SMS provider like Twilio. And since we already had MsgGO handling notifications in other parts of our infrastructure, connecting it to Grafana just made sense.

In this post, I’ll walk through how I wired up Grafana’s webhook system to send alerts through MsgGO—delivering them via SMS, Slack, and email, all from a single webhook.

Let’s break it down.

Why Use MsgGO with Grafana?

Before we dive into the how, here’s the why:

  • Grafana does not support SMS natively in Contact Points.
  • MsgGO lets you define multiple delivery targets per event, meaning one webhook can trigger notifications across multiple channels.
  • Setup takes only a few minutes, and once it’s done, you don’t have to touch Grafana again if your team’s preferred channels change.

This solved a real problem for me without adding yet another service to maintain. It also meant I could easily add a fallback channel like email if SMS fails or if I’m out of coverage.

How It Works

The integration uses Grafana’s Webhook contact point. Here’s the high-level flow:

  1. An alert is triggered in Grafana.
  2. Grafana sends a POST request to a MsgGO event endpoint.
  3. MsgGO matches that event to a configured definition.
  4. MsgGO sends out notifications to all delivery targets (e.g. SMS, Slack, Email).

Here’s how to implement it yourself.

Step-by-Step: Connect Grafana to MsgGO

Step 1: Create the Event in MsgGO

  • Log into MsgGO.
  • Go to Events > Add Event.
  • Name it something like Grafana alert.
  • (Optional) Add a group such as Monitoring or Infrastructure.

Step 2: Add Delivery Targets

Once the event is created, add your delivery definitions:

  • SMS: Add key recipients like lead DevOps engineers or system architects—people who need to be alerted first. Make sure their phone number is added and verified in their profile.
  • Slack: Choose your Slack workspace and target channel. For infrastructure alerts, I recommend a dedicated incident or monitoring channel—something like #oncall, #infrastracture-alerts, or #grafana-warnings.
  • Email: Pick team members who should be looped in.
  • You can define a message template using Twig to customize the content.

Example:

Alert: {{ data.title }}

Status: {{ data.status }}
Message: {{ data.message | default('No message provided.') }}

Step 3: Generate an API Key

To authenticate requests from Grafana, you'll need a private API key in MsgGO. I recommend generating a dedicated key just for Grafana, so you can revoke it independently without affecting other services.

Here's how to generate one safely and keep things manageable:

  • Navigate to API Keys in the MsgGO dashboard.
  • Click "New Private Key".
  • Give it a descriptive name like Grafana Alerts, so you know exactly where it's used.
  • Copy the key value and store it securely.

Private keys are meant to be used only in backend systems—perfect for a server-side tool like Grafana. They:

  • Have no domain restrictions
  • Are not rate-limited

Step 4: Configure Grafana

In Grafana:

Grafana’s default webhook payload includes keys like alerts, state, title, message, status, etc.

MsgGO will receive this data and pass it to the configured template.

From Setup to Impact

Testing the Integration

Before going live, it's a good idea to test your setup. Grafana allows you to do this directly from the alerting interface:

  • Go to your configured contact point in Grafana.
  • Click into the contact point edit view and then use the "Test" button at the top.

Grafana will send a sample payload to the specified endpoint. You can then verify in the MsgGO Inbox whether the event was received correctly.

This makes it easy to confirm that the webhook is working before relying on it for critical alerts.

Looking Ahead: Automatic Reporting

One nice side-effect of having these alerts routed through MsgGO is future compatibility. We're actively developing event reporting features that allow users to configure daily or weekly summaries for any type of event.

For example, if you're using MsgGO for alerts, you'll be able to generate a report showing which alerts fired during the day or week, and send that report to specific recipients—without changing your existing setup.

That means you won’t need to reconfigure anything. Once reports are live, your management team—or even your CEO—will be able to subscribe to incident summaries without additional setup.

If your alerts already flow through MsgGO, you’ll be ready on day one.

The real win here is flexibility. I can iterate on MsgGO's side—change templates, add recipients, switch delivery methods—and anyone on the team can do this, even without knowing the Grafana interface—no redeploying or Grafana reconfiguration required.

And yes, I’ve tested this during a real incident at night when Slack notifications were lost in a sea of dev chatter. The SMS came through and got my attention immediately.

Optional: Extend with Filters

If you want to selectively route only certain alerts (e.g., only state == "firing"), you can add matching rules in MsgGO’s event configuration.

You can even create multiple event definitions in MsgGO: one for critical alerts (with SMS), another for warnings (just Slack).

Wrap-up

Grafana’s webhook integration is powerful on its own—but when combined with MsgGO, it becomes multi-channel. It’s especially valuable if you need:

  • SMS alerts without managing your own SMS provider or any other tools
  • Centralized control over all delivery targets
  • The ability to update notification logic without touching monitoring systems

If you’re already using MsgGO elsewhere, this is a no-brainer. If you’re not—it’s one of the easiest ways to start.

Let me know if you try this or run into anything interesting!