Webhooks
Semonto allows you to use webhooks to notify your application when an incident happens on your websites, so it can trigger a response within your current workflow.

Each webhook will be a POST request with a JSON body containing information about the status of your websites. You can use webhooks when monitoring reachability, broken links, mixed content, or the execution of cron jobs.
How to add a webhook
You can start receiving webhook notifications using the steps in this section:
- Create a webhook endpoint: Create a webhook endpoint (URL) that can accept POST requests with JSON data.
- Enter the webhook URL: Go to the Notification settings in Semonto. Select the test for which you want to activate a webhook and scroll down to the Webhooks section. Enter your webhook endpoint URL in the dashboard and save your entry.
- Test the webhook: Once created, you can send a test message.
How to interpret the webhook data
You can expect the webhook to return data in the following format.
Webhook data for reachability notifications
- The ID of the monitor
- The type of test results: in this case, ‘reachability’.
- The status as a string in which 0 = OK, 1 = warning, 2= critic, and 3 > error.
- The name of the monitor.
- The test date.
- The tested URL.
- And for each test, the name, status and test info.
This is an example of what that could look like:
{
  "id": 2858,
  "type": "reachability",
  "status_str": "critic",
  "status": 2,
  "name": "semonto website",
  "test_date": 1678874679,
  "url": "https://semonto.com",
  "tests": [
    {
      "key": "ping",
      "status": "1",
      "info": "31.474849",
      "friendly_name": "HTTP Ping",
      "status_str": "Warning"
    }, {
      "key": "reachability",
      "status": "1",
      "info": "14.898855000000001",
      "friendly_name": "Reachability",
      "status_str": "Warning",
    }, {
      "key": "prtc:8080",
      "status": "1",
      "info": "15000.715171 - execution expired",
      "friendly_name": "Check port 8080",
      "status_str": "Warning"
    }
  ]
}TLS/SSL notifications
The webhook data for TLS/SSL certificate notifications contain the following data:
- The name of the monitor.
- The status as an integer and as a string. 0 means OK, 1 means warning, 2 means critical, and 3 or higher means error.
- The time the test was performed.
- The tested URL.
- The expiry date for the certificate as a UNIX timestamp.
- The number of days the certificate remains valid.
- Whether the certificate has expired.
- Whether the certificate expires soon.
- Any other errors encountered while validating the certificate.
This is an example of what that could look like:
{
  "id": 2858,
  "type": "tls_ssl_certificate",
  "status": 4,
  "status_str": "error",
  "name": "semonto website",
  "test_date": 1678874679,
  "url": "https://semonto.com",
  "expiry_date": 1678874679,
  "days_valid": 0,
  "expired": true,
  "expiring": false,
  "validation_error": NULL
}Broken links and mixed content notifications
These are the webhook data you can expect to receive for broken links and mixed content notifications:
- The name of the monitor
- The status as an integer and as a string. 0 means OK, and 1 means warning, broken links or mixed content found.
- The time the test was performed.
- The tested URL.
- The number of broken links/cases of mixed content and the number of broken links/cases of mixed content found in the previous test run.
Here is an example set of data:
{
  "id": 2858,
  "type": "broken_links",
  "status": 1,
  "status_str": "warning",
  "name": "semonto website",
  "test_date": "1678874679",
  "url": "https://semonto.com",
  "number_of_broken_links": "30",
  "previous_number_of_broken_links": "50",
}Cron job notifications
The data for cron job notifications contains:
- The name of the cron job monitor.
- The status as an integer and as a string. 0 means OK, and 3 means expired.
- The interval in seconds.
- The URL to call from your script.
- If the cron job expired, how long it has expired in seconds.
- The timestamp of the last pulse with the IP address.
This is an example of what the returned data could look like:
{
  "id": 2858,
  "type": "pulsecheck",
  "status": 0,
  "status_str": "ok",
  "name": "semonto DB backup",
  "interval": "60",
  "pulsecheck_url": "https://PulseCheck1.semonto.com/pulsecheck/?upid=51OCK09CEX",
  "time_expired": 70,
  "last_pulse": 1678874679,
  "ip_address": "81.204.186.6",
  "ip_hostname": "81-204-186-6.fixed.kpn.net"
}Need any help?
Don’t hesitate to reach out to our team if you need any help setting up your webhooks. We are happy to help!



