Home
Prezzi
Piattaforma Blog Chi siamo Contatti FAQ
Accedi Inizia gratis
Webhooks

Qualsiasi alert, qualsiasi endpoint,
la tua integrazione.

Invia un payload JSON firmato a qualsiasi endpoint HTTPS quando un monitor scatta: campi personalizzabili, retry automatici con backoff esponenziale e log delle consegne per fare il debug di ogni evento.

Free tier included No credit card 2-minute setup
Site Qwality monitors list with status and sparklines

Costruisci qualsiasi integrazione sui Webhooks.

I Webhooks sono la primitiva di integrazione universale. Sia che tu stia instradando alert in uno strumento di gestione incidenti fatto in casa, creando ticket Jira o alimentando uno stream di eventi Datadog, l'endpoint webhook è dove Site Qwality cede il controllo ai tuoi sistemi.

Payload JSON su ogni evento

Ricevi un body JSON strutturato con ID monitor, stato, URL controllata, codice HTTP, motivo dell'errore e i tempi per fase su ogni evento di down e recupero.

Firme HMAC-SHA256

Ogni consegna include un header X-SiteQwality-Signature. È un HMAC-SHA256 sull'id della consegna, sul timestamp e sul body raw della richiesta, uniti da punti, con chiave il segreto di firma del tuo endpoint. Il timestamp è dentro la firma, quindi una consegna intercettata non può essere riprodotta contro di te.

Retry automatici con backoff

Una consegna fallita viene ritentata con backoff esponenziale, fino a cinque retry nell'arco di 30 minuti, prima di essere marcata come fallita. In totale sono sei consegne: il primo tentativo e cinque retry.

Campi del payload personalizzabili

Scegli quali campi compaiono nel payload, aggiungi metadati personalizzati o filtra gli eventi per gravità così il tuo ricevitore gestisce solo ciò di cui ha bisogno.

Log e ispettore delle consegne

Ogni consegna viene registrata con la richiesta che abbiamo inviato, il codice di stato della risposta, un estratto del body della risposta e quanto è durata. I record sono conservati per 30 giorni. Leggili e riproduci qualsiasi consegna tramite API.

Endpoint multipli per monitor

Invia lo stesso evento a più endpoint. Instrada un alert verso un webhook PagerDuty e un servizio di audit log personalizzato contemporaneamente.

Consegna affidabile

Retry per non perdere
mai un evento.

Se il tuo endpoint è irraggiungibile o restituisce un 5xx, Site Qwality ritenta a 10 secondi, 30 secondi, 2 minuti, 8 minuti e 30 minuti dal primo tentativo. Un 4xx non viene ritentato: se il tuo endpoint restituisce 404 te lo diciamo, invece di inviare la stessa richiesta altre cinque volte. Ogni tentativo viene registrato con lo stato HTTP.

  • Il primo tentativo, poi fino a cinque retry con backoff esponenziale
  • Ogni tentativo registrato con il codice di stato e un estratto del body della risposta
  • Riproduci qualsiasi consegna passata tramite API
app.siteqwality.com / webhooks / deliveries
POST /hooks/incident-tool DeliveredLIVE
TENTATIVI2
STATO FINALE200
FIRMATOno
attempt 1timeout
attempt 2200 OK
payload size1.2 KB
signaturenone sent
Payload completo dell'evento

Ogni campo di cui
la tua integrazione ha bisogno.

Il payload è il risultato del controllo stesso, sotto una chiave data: ID monitor, stato, URL controllata, codice HTTP, motivo dell'errore, timestamp e la suddivisione dei tempi per fase. Sufficiente per creare un ticket o instradare una chiamata di reperibilità senza ulteriori chiamate API.

  • ID monitor, stato, URL, codice HTTP e motivo dell'errore in un unico payload
  • Timestamp ISO-8601 e nomi di campo consistenti tra gli eventi
  • Metadati chiave-valore personalizzati definibili per ogni endpoint
example payload{
  "data": {
    "http_job_id": "8f1c3a92-5d47-4e1b-9c60-2ab7d5f80e31",
    "status": "failed",
    "request_uri": "https://api.acme.com/checkout",
    "response_http_code": 503,
    "failure_reason": "status",
    "check_region": "aws-us-east-1",
    "request_duration_ms": 184,
    "ttfb_ms": 171,
    "created_at": "2026-03-14T09:26:53Z"
  }
}
Verificare una consegna

La stringa firmata,
e come verificarla.

La firma copre {delivery_id}.{timestamp}.{body raw della richiesta}, non il body da solo. Id e timestamp arrivano come header e sono entrambi dentro il MAC: l'id perché è la tua chiave di deduplicazione, il timestamp perché una firma senza di esso resterebbe riproducibile per sempre. Verifica la freschezza prima di verificare il MAC, e confronta in tempo costante.

  • Firma esattamente i byte che abbiamo inviato, prima di qualsiasi parsing JSON
  • Usa il segreto testualmente: nessun decode base64, nessuna rimozione di prefisso
  • Aspettati due voci separate da spazio per 24 ore dopo una rotazione del segreto
verify.js// rawBody deve essere esattamente i byte che abbiamo inviato, prima di JSON.parse.
const id   = req.headers['x-siteqwality-delivery'];
const ts   = req.headers['x-siteqwality-timestamp'];
const sigs = req.headers['x-siteqwality-signature'].split(' ');

// Rifiuta una consegna stantia PRIMA di verificare il MAC.
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return reject();

const expected = 'v1=' + crypto
  .createHmac('sha256', secret)
  .update(`${id}.${ts}.${rawBody}`)
  .digest('hex');

// Due voci per 24h dopo una rotazione. Tempo costante.
const ok = sigs.some(s => s.length === expected.length &&
  crypto.timingSafeEqual(Buffer.from(s), Buffer.from(expected)));
5

retry prima che una consegna venga marcata fallita

$0

webhook su tutti i piani, incluso il piano gratuito

30d

ogni consegna registrata con la richiesta completa e un estratto della risposta

15s

timeout della richiesta per ogni tentativo di consegna, oltre il quale il tentativo fallisce

FAQ

La stringa firmata è {delivery_id}.{timestamp}.{body raw della richiesta}, unita da punti, e il valore dell'header è v1= seguito dall'HMAC-SHA256 esadecimale di quella stringa con il segreto di firma del tuo endpoint. Il segreto si usa esattamente come ti viene mostrato, senza decode base64 e senza rimozione di prefisso. Id della consegna e timestamp arrivano in X-SiteQwality-Delivery e X-SiteQwality-Timestamp, ed entrambi sono dentro il MAC. Firmare solo il body lascerebbe una consegna intercettata riproducibile: per questo la frase che stava qui era sbagliata e avrebbe prodotto un verificatore che non corrisponde mai. Verifica che il timestamp rientri in cinque minuti prima di verificare il MAC, e aspettati più voci v1= separate da spazio per 24 ore dopo una rotazione del segreto. Lo snippet sopra questa FAQ fa tutto questo.

Scattano sette eventi: monitor.down, monitor.recover, incident.created, incident.resolved, tls.expiring, dns.expiring e page_speed.degraded. Tutti e sette sono attivi per impostazione predefinita e puoi filtrarli per endpoint, per evento o per gravità, così un ricevitore gestisce solo ciò di cui ha bisogno.

Site Qwality ritenta a 10 secondi, 30 secondi, 2 minuti, 8 minuti e 30 minuti dal primo tentativo. Leggi questi numeri come scarti dal primo tentativo, non come pause fra un retry e l'altro: l'ultimo cade esattamente a 30 minuti. Sono al massimo sei consegne, il primo tentativo più cinque retry, e una consegna che non è riuscita 30 minuti dopo il primo tentativo viene marcata come fallita. Da lì puoi riprodurla dal log delle consegne.

Sì, tramite API. Il log delle consegne conserva ogni tentativo con la richiesta che abbiamo inviato, il codice di stato della risposta, un estratto del body della risposta e quanto è durata, per 30 giorni. Un replay è una nuova consegna con un nuovo id, un timestamp fresco e una firma fresca con il tuo segreto attuale: reinvia ciò che è stato inviato, non ciò che produrrebbero le impostazioni di oggi.

Sì. I webhook sono inclusi in tutti i piani, incluso il piano gratuito. Sui piani a pagamento non c'è limite al numero di endpoint o di consegne.

Inizia gratis. Nessuna carta di credito.

Uptime, cron, synthetic, log, RUM, incidenti e pagine di stato. Piano gratuito su ogni prodotto.