Overview

Sifflet webhook integration allows you to receive notifications on your endpoints in case of data quality issues on your datasets. This virtually allows you to integrate Sifflet with any notification and ticketing tool your team might use. Webhooks also enable you to trigger custom remediation workflows upon data quality issues detection.

Manage the Integration

Set up the Integration

  1. Go to your Sifflet application
  2. Hover the Settings entry of the navigation bar and click the Collaboration tools entry
  3. Look for the Webhookssection
  4. Give your webhook a name
  5. Enter your webhook URL
  6. Optionally, add a custom header to attach to the payload (for authentication or any other purposes)
  7. Click the Send test notification button. A payload such as the below one gets sent to your endpoint. A success toast notification shows up in Sifflet if a 2xx status code is returned by your endpoint.
{
  "eventType": "MONITOR_FAILURE",
  "eventDate": "2024-11-13 16:45 UTC",
  "monitor": {
    "id": "7c8ed50d-f887-40d7-b3e6-d4707d3e549b",
    "name": "Test Notification Sifflet Monitor 1",
    "link": "https://demo.siffletdata.com/monitors/rule/7c8ed50d-f887-40d7-b3e6-d4707d3e549b/overview",
    "description": "Monitor with impacted dashboards",
    "displayType": "Is an Email",
    "assets": [
      {
        "name": "Test Notification Dataset 1",
        "uri": "bigquery:project-id.dataset-id.Test Notification Dataset 1",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:fb8a475d-5ce5-4925-84e0-fd1faf3442f7/overview"
      },
      {
        "name": "Test Notification Dataset 2",
        "uri": "bigquery:project-id.dataset-id.Test Notification Dataset 2",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:41d96fba-28e5-4044-bf05-0a62f6f139be/overview"
      }
    ],
    "tags": [
      {
        "id": "8688f902-f5a5-441e-92d0-38b6f35736b8",
        "name": "Test Notification Classification 1",
        "description": "Classification 1 description",
        "kind": "CLASSIFICATION"
      },
      {
        "id": "9152ba0c-1038-4915-924c-401bc948b3ae",
        "name": "Test Notification Tag 1",
        "description": "Tag 1 description",
        "kind": "GENERIC"
      }
    ],
    "terms": [
      {
        "id": "a361bff5-43cd-4bfd-aef3-2128f497156f",
        "name": "Test Notification Term 1",
        "description": "Term 1 description"
      }
    ]
  },
  "monitorRun": {
    "id": "bd8c47f0-3500-4933-a4d8-15af938a6597",
    "runType": "MANUAL",
    "result": "This monitor run failed",
    "status": "FAILED",
    "date": "2024-11-13 16:45 UTC",
    "message": "Monitor message"
  },
  "isNewIncident": true,
  "incident": {
    "id": "0921f0d7-13ac-4ac3-bea6-db9cf9673c42",
    "link": "https://demo.siffletdata.com/incidents/issue/12345/overview",
    "name": "Test Notification Incident with Dashboards",
    "compromisedAssets": [
      {
        "name": "Test Notification Dashboard 1",
        "uri": "tableau://example.online.tableau.com/example/2a33ec68-d199-4121-923f-f80ea0f77c30",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:2a33ec68-d199-4121-923f-f80ea0f77c30/overview"
      },
      {
        "name": "Test Notification Dashboard 2",
        "uri": "tableau://example.online.tableau.com/example/2bedca4f-80f0-4e61-abd8-1b2ac6cf6d46",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:2bedca4f-80f0-4e61-abd8-1b2ac6cf6d46/overview"
      }
    ]
  }
}
  1. Click the Add webhook button.

Send a Webhook Test Notification

Follow the below steps to send a test notification for a configured webhook:

  1. Go to your Sifflet application
  2. Hover the Settings entry of the navigation bar and click the Collaboration tools entry
  3. Look for the Webhookssection
  4. Find the webhook you want to delete in the list of Configured webhooks
  5. Hover over the configured webhook of interest and click the paper plane icon located at the far right end of the row. A payload such as the below one gets sent to your endpoint.
{
  "eventType": "MONITOR_FAILURE",
  "eventDate": "2024-11-13 16:45 UTC",
  "monitor": {
    "id": "7c8ed50d-f887-40d7-b3e6-d4707d3e549b",
    "name": "Test Notification Sifflet Monitor 1",
    "link": "https://demo.siffletdata.com/monitors/rule/7c8ed50d-f887-40d7-b3e6-d4707d3e549b/overview",
    "description": "Monitor with impacted dashboards",
    "displayType": "Is an Email",
    "assets": [
      {
        "name": "Test Notification Dataset 1",
        "uri": "bigquery:project-id.dataset-id.Test Notification Dataset 1",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:fb8a475d-5ce5-4925-84e0-fd1faf3442f7/overview"
      },
      {
        "name": "Test Notification Dataset 2",
        "uri": "bigquery:project-id.dataset-id.Test Notification Dataset 2",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:41d96fba-28e5-4044-bf05-0a62f6f139be/overview"
      }
    ],
    "tags": [
      {
        "id": "8688f902-f5a5-441e-92d0-38b6f35736b8",
        "name": "Test Notification Classification 1",
        "description": "Classification 1 description",
        "kind": "CLASSIFICATION"
      },
      {
        "id": "9152ba0c-1038-4915-924c-401bc948b3ae",
        "name": "Test Notification Tag 1",
        "description": "Tag 1 description",
        "kind": "GENERIC"
      }
    ],
    "terms": [
      {
        "id": "a361bff5-43cd-4bfd-aef3-2128f497156f",
        "name": "Test Notification Term 1",
        "description": "Term 1 description"
      }
    ]
  },
  "monitorRun": {
    "id": "bd8c47f0-3500-4933-a4d8-15af938a6597",
    "runType": "MANUAL",
    "result": "This monitor run failed",
    "status": "FAILED",
    "date": "2024-11-13 16:45 UTC",
    "message": "Monitor message"
  },
  "isNewIncident": true,
  "incident": {
    "id": "0921f0d7-13ac-4ac3-bea6-db9cf9673c42",
    "link": "https://demo.siffletdata.com/incidents/issue/12345/overview",
    "name": "Test Notification Incident with Dashboards",
    "compromisedAssets": [
      {
        "name": "Test Notification Dashboard 1",
        "uri": "tableau://example.online.tableau.com/example/2a33ec68-d199-4121-923f-f80ea0f77c30",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:2a33ec68-d199-4121-923f-f80ea0f77c30/overview"
      },
      {
        "name": "Test Notification Dashboard 2",
        "uri": "tableau://example.online.tableau.com/example/2bedca4f-80f0-4e61-abd8-1b2ac6cf6d46",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:2bedca4f-80f0-4e61-abd8-1b2ac6cf6d46/overview"
      }
    ]
  }
}

Delete a Webhook

Follow the below steps to delete a webhook:

  1. Go to your Sifflet application
  2. Hover the Settings entry of the navigation bar and click the Collaboration tools entry
  3. Look for the Webhookssection
  4. Find the webhook you want to delete in the list of Configured webhooks
  5. Hover over the configured webhook of interest and click the trash can icon located at the far right end of the row.

Send Webhook Notification on Monitor Failure

Follow the below steps to configure a monitor to send webhook notification on failure:

  1. Go to your Sifflet application
  2. Create a new monitor or edit an existing monitor
  3. Go to the Notification method section of your monitor wizard
  4. Toggle the Notify by Webhook button
  5. Click the Save button
  6. A payload containing details about your monitor failure (and about your incident if the Create incident when monitor fails button is toggled) is pushed to your endpoint at each monitor failure.

Payload Examples

There can be three different types of payload formats.

Monitor Failure, No Incident

{
  "eventType": "MONITOR_FAILURE",
  "eventDate": "2024-11-08 15:48 UTC",
  "monitor": {
    "id": "7cd1a2b4-d1f5-4b9e-87c3-36e7d2a9b5d1",
    "name": "SQL Monitor",
    "link": "https://demo.siffletdata.com/monitors/rule/7cd1a2b4-d1f5-4b9e-87c3-36e7d2a9b5d1/overview",
    "description": "Example SQL Monitor",
    "displayType": "SQL",
    "assets": [
      {
        "name": "Example Dataset",
        "uri": "bigquery:project-id.dataset-id.Example Dataset",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:8a4f0e29-3d32-4b4d-835b-c1d1bdf06f72/overview"
      }
    ],
		"tags": [
      {
        "id": "eb9e1c6a-57b7-4b68-9d4f-7dcbf5434bc2",
        "name": "Production",
        "description": "Example Tag",
        "kind": "GENERIC"
      }
    ],
    "terms": [
      {
        "id": "5d60a51e-e33a-4df7-944e-2b832e1b0c34",
        "name": "Revenue",
        "description": "Example Business Term"
      }
    ]
  },
  "monitorRun": {
    "id": "3d7e2c1e-2e46-48ea-8b6b-6a3a3e847a34",
    "runType": "MANUAL",
    "result": "Anomaly detected in 1 timeslot: [2024-11-08] Value = 1 Expected = [value < 0.0].",
    "status": "FAILED",
    "date": "2024-11-08 15:48 UTC",
    "message": "Example Message"
  },
  "isNewIncident": null,
  "incident": null
}

Monitor Failure, New Incident

{
  "eventType": "MONITOR_FAILURE",
  "eventDate": "2024-11-08 13:01 UTC",
  "monitor": {
    "id": "7cd1a2b4-d1f5-4b9e-87c3-36e7d2a9b5d1",
    "name": "SQL Monitor",
    "link": "https://demo.siffletdata.com/monitors/rule/7cd1a2b4-d1f5-4b9e-87c3-36e7d2a9b5d1/overview",
    "description": "Example SQL Monitor",
    "displayType": "SQL",
    "assets": [
      {
        "name": "Example Dataset",
        "uri": "bigquery:project-id.dataset-id.Example Dataset",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:8a4f0e29-3d32-4b4d-835b-c1d1bdf06f72/overview"
      }
    ],
		"tags": [
      {
        "id": "eb9e1c6a-57b7-4b68-9d4f-7dcbf5434bc2",
        "name": "Production",
        "description": "Example Tag",
        "kind": "GENERIC"
      }
    ],
    "terms": [
      {
        "id": "5d60a51e-e33a-4df7-944e-2b832e1b0c34",
        "name": "Revenue",
        "description": "Example Business Term"
      }
    ]
  },
  "monitorRun": {
    "id": "3d7e2c1e-2e46-48ea-8b6b-6a3a3e847a34",
    "runType": "MANUAL",
    "result": "Anomaly detected in 1 timeslot: [2024-11-08] Value = 1 Expected = [value < 0.0].",
    "status": "FAILED",
    "date": "2024-11-08 13:01 UTC",
    "message": "Example Message"
  },
  "isNewIncident": true,
  "incident": {
    "id": "c4be7e8a-9f2c-4411-bd8e-091d7b3e1295",
    "link": "https://demo.siffletdata.com/incidents/issue/123/overview",
    "name": "SQL Monitor",
    "compromisedAssets": [
      {
        "name": "Dashboard Drink Orders Analysis:My New  Workbook:default",
        "uri": "tableau://dub01.online.tableau.com/demo/4f73d901-8b3d-4dd9-8392-c246715d2b93",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:9e8a0c34-f25a-48d7-9dbe-3c1c745dfb72/overview"
      },
      {
        "name": "Dashboard Food orders Analysis:My New  Workbook:default",
        "uri": "tableau://dub01.online.tableau.com/demo/ae56b3c2-174f-4a4e-9361-4f7a1e6e8b9d",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:1f87e9c3-6d3b-4a6e-b582-13b7f9a2c7e5/overview"
      }
    ]
  }
}

Monitor Failure, Existing Incident

{
  "eventType": "MONITOR_FAILURE",
  "eventDate": "2024-11-08 13:01 UTC",
  "monitor": {
    "id": "7cd1a2b4-d1f5-4b9e-87c3-36e7d2a9b5d1",
    "name": "SQL Monitor",
    "link": "https://demo.siffletdata.com/monitors/rule/7cd1a2b4-d1f5-4b9e-87c3-36e7d2a9b5d1/overview",
    "description": "Example SQL Monitor",
    "displayType": "SQL",
    "assets": [
      {
        "name": "Example Dataset",
        "uri": "bigquery:project-id.dataset-id.Example Dataset",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dataset:8a4f0e29-3d32-4b4d-835b-c1d1bdf06f72/overview"
      }
    ],
		"tags": [
      {
        "id": "eb9e1c6a-57b7-4b68-9d4f-7dcbf5434bc2",
        "name": "Production",
        "description": "Example Tag",
        "kind": "GENERIC"
      }
    ],
    "terms": [
      {
        "id": "5d60a51e-e33a-4df7-944e-2b832e1b0c34",
        "name": "Revenue",
        "description": "Example Business Term"
      }
    ]
  },
  "monitorRun": {
    "id": "3d7e2c1e-2e46-48ea-8b6b-6a3a3e847a34",
    "runType": "MANUAL",
    "result": "Anomaly detected in 1 timeslot: [2024-11-08] Value = 1 Expected = [value < 0.0].",
    "status": "FAILED",
    "date": "2024-11-08 13:01 UTC",
    "message": "Example Message"
  },
  "isNewIncident": false,
  "incident": {
    "id": "c4be7e8a-9f2c-4411-bd8e-091d7b3e1295",
    "link": "https://demo.siffletdata.com/incidents/issue/123/overview",
    "name": "SQL Monitor",
    "compromisedAssets": [
      {
        "name": "Dashboard Drink Orders Analysis:My New  Workbook:default",
        "uri": "tableau://dub01.online.tableau.com/demo/4f73d901-8b3d-4dd9-8392-c246715d2b93",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:9e8a0c34-f25a-48d7-9dbe-3c1c745dfb72/overview"
      },
      {
        "name": "Dashboard Food orders Analysis:My New  Workbook:default",
        "uri": "tableau://dub01.online.tableau.com/demo/ae56b3c2-174f-4a4e-9361-4f7a1e6e8b9d",
        "link": "https://demo.siffletdata.com/data-catalog/asset/dashboard:1f87e9c3-6d3b-4a6e-b582-13b7f9a2c7e5/overview"
      }
    ]
  }
}