What MailChannels sends
When a monitor condition is met, MailChannels sends an HTTP POST to your endpoint with a JSON payload in the following structure:webhook payload
Verify webhook signatures
Every webhook we send is cryptographically signed, so your endpoint can confirm the alert genuinely came from us and was not altered or forged in transit. Verify the signature before you act on an alert, so a forged or tampered request cannot trigger an account suspension or password reset on your platform.Verification is optional. We recommend verifying so you can trust an alert before acting on it.
The
keyid in Signature-Input tells you which public key to verify against. The current key id is mcnotifykey.
Fetch the public key
Retrieve the public key by its id. The endpoint is public and needs no authentication:fetch the public key
public key response
Verify a request
1
Fetch and cache the public key
Read the
keyid from the Signature-Input header and fetch the matching public key. Cache it rather than fetching on every request, and refresh it periodically so you pick up a future key rotation.2
Check the Content-Digest
Recompute the SHA-256 digest of the raw request body and confirm it matches the
Content-Digest header. This proves the body was not modified.3
Verify the signature
Rebuild the RFC 9421 signature base from the covered
content-digest component and the signature parameters, then verify the Signature against it with the Ed25519 public key. Reject the request if verification fails.mcnotifykey key id.
Actions you can take
Your endpoint receives thesender_id and other identifying fields and can immediately take action. Common automated responses include:
- Scramble the password for the account associated with
originator, preventing the sender from authenticating further. - Block or suspend the account at the hosting control panel level.
- Disable the sending plugin (for example, a WordPress mail plugin) if the
originator_typeindicates a script. - Rate-limit the account at the mail server level to contain the damage while a human investigates.
- Create a support ticket or page an on-call engineer using the
sender_idandcondition_namefields.
Configure a webhook monitor
1
Log in to the Host Console
Go to console.mailchannels.net and sign in.
2
Navigate to Monitors
Go to Outbound > Activity > Monitors and click Add Monitor.
3
Select the alert type
Choose the condition you want to monitor from the dropdown menu, such as Sender ID is sending SPAM or Sender ID blocked due to FBL reports.
4
Set the alert interval
Choose how frequently you want alerts to fire. The interval ranges from 1 to 24 hours. For compromised account detection, a 1-hour interval gives you the fastest response.
5
Switch to webhook delivery
Change the alert type from the default Email to Webhook.
6
Enter your webhook URL
Paste the full URL of your endpoint into the text box. Use
https:// to ensure the payload is encrypted in transit. Your endpoint must be publicly reachable and able to return an HTTP 2xx response.7
Enable and save
Check the Enabled box to activate the monitor, then click the green check mark to save it.
Test your endpoint
Before relying on the webhook in production, verify that your endpoint handles the payload correctly. You can test it from the command line withcurl:
test webhook endpoint
Routing webhook alerts to Slack
MailChannels webhook payloads cannot be sent directly to a Slack incoming webhook URL because Slack requires a different JSON format. To route alerts to Slack, use an intermediary service such as Zapier:- Create a Zapier zap with a Webhooks by Zapier trigger (catch hook).
- Use the Zapier webhook URL as your MailChannels webhook destination.
- Add a Zapier action step that sends a formatted message to your Slack channel.
Webhooks require a Standard plan subscription or higher. If the Monitors section is not visible in your console, upgrade your subscription to unlock webhook notifications.

