As well as sending alerts via email, Slack, and HipChat; SpeedCurve also supports sending alerts to any webhook. Follow the steps below to set up alerts to your webhooks.
- In the "Alerts" section of your SpeedCurve settings, click the Add Webhook button and enter the URL of your webhook.
- For each performance budget, make sure that you have the "Send alerts for this budget" checkbox checked.
That's it! Your webhook will receive a POST request for each performance budget alert.
Webhook payload details
Each performance budget alert will be sent as a separate payload to your webhook. The payload will be a HTTP POST request, where the request body is a JSON-encoded string. See below for the JSON schema.
{
// Information about the budget that is alerting
"budget": {
"metric": "SpeedIndex",
"threshold": "1.8 seconds",
"threshold_absolute": 1.8,
"threshold_relative": 10
},
// Information about the chart that the budget is set on
"chart": {
"title": "Start Render, SpeedIndex | Wildly Inaccurate | Home | AVG",
"chart_type": "timeseries",
"metric": [
"SYN|render",
"SYN|speedindex"
],
"correlation_metrics": [],
"correlation_stat": null,
"stat": "50",
"site_ids": [
"41774"
],
"label": [
"home"
],
"region": [
"all"
],
"test_profile_name": [
"all"
],
"customer_data": []
},
// An array of crossing objects, each describing a data series
// that crossed the budget threshold
"crossings": [
{
// Whether the series went over or under the budget
// threshold
"type": "under",
// The value of the threshold that this series crossed
"threshold": 1.8,
// The type of threshold that this series crossed
// (absolute or relative)
"threshold_type": "absolute",
// Upper and lower bounds that were used for relative // thresholds
"threshold_lower": null,
"threshold_upper": null,
// By how much the threshold was crossed
"difference_from_threshold": 0.36111111111111116,
// The value in the series that triggered this alert
"latest_value": "1.15",
"series": {
// The name that this series has in the chart
"name": "SpeedIndex (Syn), BBC News, Home",
// Information about the metric
"metrictype": "time",
"metricName": "SpeedIndex",
"metricQualified": "SYN|speedindex",
// An array of data points that were evaluated
// against the budget
"data": [
{
// A timestamp for this data point,
// expressed in milliseconds
"x": "1545658800000",
// The value of the metric at this point
"y": "1.12",
// For synthetic data, how many tests made
// up this data point
"num": "16",
// For synthetic median and 95th percentile
// queries, the test ID for this data point
"test": "181224_4Q_ab33515a52212727a28cd0cae080220c"
},
{
// More data points
},
]
}
}
],
// A copy of the crossing object with the largest
// difference_from_threshold value
"largest_crossing": {
// ...
},
// A URL to an image of the chart series at the time of
// the alert
"chart_image_url": "https:\/\/alerts.speedcurve.com\/n.php?hash=...",
// A public ("share") URL to the Favorites dashboard containing
// the chart
"chart_web_url": "https:\/\/speedcurve.com\/my-account\/favorite\/...",
// Used by some services like VictorOps
"message_type": "INFO"
}