Come collegare GitHub all'Shopify Flow
GitHub invia un Webhook ogni volta che si verifica un evento in un repository o in un’organizzazione: un push, un rilascio, un issue, una pull request, l’esecuzione di un Workflow. Workflow Webhooks trasforma tale chiamata in un Trigger di Shopify Flow, consentendo al Suo negozio di reagire di conseguenza: assegnare un Tag a un cliente, aggiungere una nota all’ordine, inviare un’e-mail interna, aggiornare un Metacampo… tutto ciò che Shopify Flow è in grado di fare.
La presente guida illustra l’intero processo - GitHub invia, Workflow Webhooks riceve e verifica, Shopify Flow esegue l’operazione - con la firma HMAC di GitHub verificata ad ogni richiesta, in modo che solo GitHub possa avviare il Suo workflow.
Cosa potete realizzare
- Si prega di inviare un’e-mail al proprio team di merchandising quando viene distribuito un aggiornamento che modifica i dati dei prodotti.
- Ad ogni rilascio, inserisca la versione corrente della build o del tema in un metacampo dello shop.
- Avvisare il personale in caso di fallimento dell'esecuzione di un workflow pianificato, utilizzando lo stesso workflow già impiegato per altri incidenti.
Eventi tipici da inviare: push, release (pubblicato), issues (aperto, chiuso), workflow_run (completato).
Prima di iniziare
- Workflow Webhooks installato sul Suo negozio Shopify.
- Shopify Flow installata, disponibile gratuitamente dall’App Store all’indirizzo Shopify.
- Un account su GitHub con l'autorizzazione a creare webhook.
Fase 1 - Creare il webhook all'indirizzo Workflow Webhooks
- Acceda a Workflow Webhooks -> Webhook -> Crea webhook e assegni al webhook un nome che potrà riconoscere in Shopify Flow, ad esempio
GitHub events. - Nella sezione "Autenticazione", selezionare HMAC.
- Nella sezione “Fornitore di firma”, selezioni GitHub. L’app inserisce automaticamente l’intestazione, l’algoritmo, il payload firmato e la finestra di replay; non è necessario configurare nient’altro.
- Per il momento lasci il campo "Segreto" vuoto e clicchi su "Salva". Copi l'URL del webhook visualizzato nella pagina.
Per ulteriori informazioni sulle altre modalità di autenticazione, consulti il sito Autenticazione; per scegliere quali campi inviare a Shopify Flow, consulti il sito Mappatura del payload e variabili di flusso.
Fase 2 - Aggiungere l'endpoint su GitHub
Nel repository (o nell'organizzazione), apra Impostazioni -> Webhook -> Aggiungi webhook, incolli l'URL come URL del payload, imposti il tipo di contenuto su application/json e inserisca il valore nel campo Segreto.
Come individuare il proprio segreto di firma su GitHub
Il segreto che ha impostato nel webhook di GitHub (Impostazioni -> Webhook -> Segreto).
La documentazione ufficiale di GitHub sulle firme dei webhook, disponibile all'indirizzo, riporta il testo esatto e le schermate relative al Suo account.
Inserisca tale segreto nel campo "Secret" del webhook all'indirizzo Workflow Webhooks e salvi. Da quel momento in poi, ogni consegna proveniente da GitHub verrà verificata prima di raggiungere Shopify Flow.
Cosa verifica questa operazione
| Cosa | Valore |
|---|---|
| Intestazione della firma | X-Hub-Signature-256 |
| Dove si trova la firma | Il valore dell'intestazione, dopo il prefisso sha256= |
| Cosa è stato firmato | {body} |
| Firma | HMAC-SHA256, codificato in esadecimale |
| Data e ora | Non utilizzato da questo mittente |
| Protezione contro la riproduzione | Nessuna - questo mittente non appone una firma sul timestamp, pertanto ogni firma valida rimane valida |
| Il segreto | Da utilizzare come testo semplice. Lo incolli esattamente come lo presenta il mittente |
Nel payload firmato, {body} rappresenta il corpo della richiesta non elaborato, byte per byte.
Una richiesta che non soddisfi uno qualsiasi di questi requisiti viene respinta con l'errore 401, viene registrata in Cronologia e risoluzione dei problemi e non avvia mai un workflow.
Fase 3 - Creazione del workflow Shopify Flow
- In "Shopify Flow", crei un workflow e selezioni il trigger "Workflow Webhooks".
- Clicchi su “Registra eventi”, quindi invii un evento di prova da GitHub (oppure utilizzi l’opzione “Invia prova” in Workflow Webhooks) affinché Shopify Flow apprenda la struttura dei Suoi dati.
- Ogni webhook di cui disponete attiva lo stesso trigger del flusso; pertanto, aggiungete una prima condizione relativa all'ID del webhook per limitare questo workflow esclusivamente a GitHub. L'ID è riportato nella pagina dedicata ai webhook.
- Aggiunga le Sue azioni: contrassegni un cliente, aggiunga una nota, invii un’e-mail interna, aggiorni un metacampo.



Fase 4 - Eseguire un test end-to-end
Attivare un evento reale su GitHub. In Workflow Webhooks -> Cronologia dovrebbe comparire la richiesta con lo stato “Successo”. Se la firma non era corretta, verrà invece visualizzata una voce con lo stato “Fallito” e il motivo corrispondente; all’indirizzo Verifica dei webhook firmati è disponibile lo strumento di verifica della firma che indica esattamente quale fase non è andata a buon fine.

La firma non corrisponde▾
In questo ordine: il segreto (la causa più comune: uno spazio in eccesso o una chiave proveniente da un ambiente errato), se il mittente sta utilizzando il segreto di un endpoint diverso e se qualcosa tra GitHub e l’app riscrive il corpo del messaggio. Le firme coprono i byte grezzi, pertanto un proxy che riformatta il JSON le invalida. Il tester di firme nella pagina dei webhook mostra il testo esatto che è stato firmato.
Ricevo un errore 401 ad ogni richiesta▾
Verifichi che l'autenticazione del webhook sia impostata su HMAC con il provider GitHub selezionato, che il segreto sia stato inserito e che GitHub invii i dati all'URL esattamente come indicato dall'app, compreso il codice alla fine.
Nella cronologia non compare nulla▾
La richiesta non è mai pervenuta. Verifichi nuovamente l’URL su GitHub e consulti il registro di consegna di GitHub per verificare la risposta ricevuta. Un errore del tipo 404 indica un webhook errato o eliminato, mentre un errore del tipo 429 significa che ha superato il limite di invocazioni previsto dal Suo piano; si veda Piani e utilizzo.
Il workflow viene eseguito per eventi non corretti▾
Ogni webhook del Suo negozio attiva lo stesso trigger di Shopify Flow. Aggiunga una condizione relativa all’ID del webhook come primo passo del workflow, oppure restringa la selezione degli eventi che invia da GitHub.
Correlati
- Verifica dei webhook firmati - ogni fornitore che verifichiamo e come descrivere quelli che non verifichiamo.
- Mappatura del payload e variabili di flusso - estrarre i campi corretti dal payload e inserirli in Shopify Flow.
- Protezione contro le consegne duplicate - cosa succede quando GitHub riprova a effettuare una consegna.
- Cronologia e risoluzione dei problemi - il registro di ogni richiesta, con la possibilità di riprodurla.

