Che cosa sono le notifiche di eventi o webhook?

Le notifiche di eventi (in inglese “webhook”) sono un modo semplice in cui i tuoi account online possono “parlarsi” tra loro e scambiarsi informazioni quando ha luogo un evento prestabilito. Questo avviene avvalendosi di applicativi forniti da terze parti.

In presenza di una notifica, che va creata di volta in volta, le app possono inviarsi messaggi e informazioni in modo automatico e in tempo reale. Va da sé che, se il tuo obiettivo è trasferire dati da un’app all’altra, devi sapere come si utilizzano le notifiche.

Facciamo degli esempi. Il webhook (o notifica) è il modo in cui:

  • PayPal comunica alla tua app di contabilità quando i tuoi clienti ti pagano;
  • un modulo di WordPress invia le informazioni inserite direttamente dentro al tuo CRM;
  • WooCommerce può avvisarti quando qualcuno mette un prodotto nel carrello all’interno del tuo ecommerce.

IFTTT e Zapier sono altre due aziende che permettono di sfruttare agevolmente le notifiche per interconnettere servizi per smartphone, telecamere di videosorveglianza e altre tecnologie. IFTTT, in particolare, è accessibile anche a utenti senza le competenze tecniche di uno sviluppatore.

Impariamo a conoscere le notifiche e facciamo parlare le tue app preferite (vai alla pagina con la documentazione webhook email di turboSMTP).

Introduzione alle notifiche

Abbiamo detto che le notifiche sono comunicazioni automatiche inviate dalle app quando succede qualcosa. Contengono un messaggio (payload) e vengono inviate a un url univoco, generalmente l’indirizzo dell’app.

Infatti devi innanzitutto dire alla prima app – il tuo negozio di ecommerce, per esempio – l’url della notifica dell’app che necessita dei dati. In questo caso potrebbe trattarsi della compilazione automatica dell’ordine di acquisto.

Supponi di voler fare una fattura per un nuovo ordine. Devi prima aprire l’app per le fatture, creare un modello e copiare l’url della notifica. Quindi apri l’app del tuo negozio ecommerce e aggiungi l’indirizzo alle impostazioni della notifica. Se un’altra app esegue il ping di questo url (o se lo inserisci nella barra degli indirizzi del browser), la prima app ne prenderà nota.

Differenze tra notifiche (webhook) e API

La differenza principale tra webhook e API è sottile, poiché entrambi i servizi servono a spostare i dati tra le tue app. Con le API ottieni i dati dal provider, mentre le notifiche consentono al provider di inviarti i dati.

Il vantaggio delle notifiche rispetto alle API sta proprio qui. Gli aggiornamenti vengono comunicati in tempo reale attraverso il provider, senza che sia necessario passare da una richiesta al fornitore del servizio.

La tempestività degli aggiornamenti è un fattore rilevante perché le nostre app sono sempre più integrate con i servizi di terze parti. La possibilità di prendere decisioni è quindi strettamente legata alla disponibilità di dati aggiornati.

Invio dei dati

Il primo passo per utilizzare una notifica è fornire al provider una url a cui inviare le richieste. Ciò viene spesso eseguito tramite un pannello back end o un’API. Ciò significa che devi anche impostare un url nella tua app che sia direttamente accessibile dal web.

La maggior parte delle notifiche ti invierà i dati in formato JSON. Il tuo provider ti dirà come questo viene consegnato o addirittura ti darà la possibilità di scegliere. Possono esserci infatti ulteriori metodi a disposizione (es. file XML), ma sono comunque abbastanza facili da gestire e la maggior parte dei framework farà il lavoro per te.

Debug di una notifica o webhook

Il debug di una notifica, ossia la correzione di eventuali errori, è un affare complesso che può essere facilitato da alcuni strumenti:

  • usa RequestBin per verificare le richieste HTTP in arrivo da qualunque fonte e ispezionare header e payload;
  • simula le richieste usando piattaforme come curl o Postman;
  • testa il codice sulla tua macchina usando uno strumento come ngrok;
  • visualizza l’intero processo usando con Runscope.

Sicurezza delle notifiche webhook

Le notifiche (o webhook) forniscono dati di url accessibili al pubblico. Ciò significa che chiunque sia su internet può inviare richieste HTTP al proprio endpoint. Fortunatamente, esistono diversi modi per proteggere dati ed endpoint:

  • usa il criptaggio HTTPS. I dati così inviati e ricevuti vengono crittografati prima di essere inviati su internet e de-crittografati solo dalla parte ricevente. Nessuno in mezzo al processo può curiosare su ciò che stai inviando;
  • scegli un segreto. La maggior parte dei provider di notifiche, Github per esempio, consente di trasmettere un “segreto”. Potrebbe trattarsi di un campo del payload JSON da inserire, oppure un token per ogni richiesta di webhook;
  • Accetta solo richieste firmate. Se utilizzi un firewall per accedere all’endpoint o sei in grado di limitare il traffico HTTP da indirizzi IP specifici, puoi anche filtrare gli IP che possono inviare i dati dell’endpoint. Questa soluzione è però piuttosto complessa.

Limiti dell’uso delle notifiche

La velocità e praticità delle notifiche non dovrebbe convincerti a ignorare le API. Se la tua app ha un certo livello di complessità, infatti, ti conviene usare entrambe le soluzioni. Le notifiche scontano alcuni limiti intrinseci alle proprie funzionalità:

  • le notifiche non sono previste da tutti i servizi sul web;
  • se le statistiche generali ti interessano più dei singoli eventi, una sola richiesta all’API della tua app è la cosa più semplice;
  • se vuoi impostare un’azione automatica a seguito di una notifica ricevuta, hai bisogno di un’API;
  • le notifiche consistono in messaggi brevi, per esempio “l’utente X ha fatto l’azione Y”, ma privi di metadati riguardo all’utente o all’azione che ha intrapreso. Per esempio, vorresti sapere se l’utente che ha aggiunto un oggetto nel carrello ha già impostato un metodo di pagamento valido; questo puoi saperlo attraverso un’API.