Articoli su: Intelligenza artificiale (IA)
Questo articolo è disponibile anche in:

Webhook in uscita

I webhook ti permettono di connettere Fotostudio a strumenti esterni come Make, Zapier, n8n o il tuo backend. A ogni evento importante (nuovo contatto, fattura pagata, contratto firmato...), Fotostudio invia automaticamente i dati verso l'URL che hai scelto.



Configurare un webhook


I webhook sono un modulo da attivare, disponibile in tutte le formule. Vai in Moduli > Tutti i moduli, categoria Avanzate, e attiva il modulo Webhook. Se avevi già creato un webhook, il modulo è già attivato per te.


Vai poi in Moduli > Webhook in uscita e clicca su Aggiungi un webhook.


Compila i seguenti campi:


Campo

Descrizione

Etichetta (opzionale)

Un nome per riconoscerlo (es. "Make fatture")

URL di destinazione

L'URL HTTPS fornito dal tuo strumento (Make, Zapier...)

Eventi da sottoscrivere

Gli eventi da monitorare (puoi selezionarne più di uno)


Una Chiave segreta HMAC viene generata automaticamente alla creazione. Copiala subito: non verrà più mostrata in questo modo in seguito. Serve a verificare che le chiamate provengano da Fotostudio.



Eventi disponibili


Evento

Si attiva quando...

contact.created

Viene creato un nuovo contatto

contact.updated

Un contatto viene modificato (dati, info...)

project.created

Viene creato un nuovo servizio

project.status_changed

Lo stato di un servizio cambia

project.confirmed

Un servizio viene confermato

invoice.created

Viene creata una fattura

invoice.paid

Una fattura viene segnata come pagata

payment.created

Un pagamento viene registrato

estimate.accepted

Un preventivo viene accettato dal cliente

estimate.refused

Un preventivo viene rifiutato dal cliente

contract.signed

Un contratto viene firmato



Formato dei dati inviati


Ogni chiamata è un POST in JSON con la seguente struttura:


{
  "event": "invoice.paid",
  "timestamp": "2026-06-12T10:30:00Z",
  "data": {
    ...
  }
}


Header HTTP


Header

Valore

Content-Type

application/json

X-FS-Event

Nome dell'evento (es. invoice.paid)

X-FS-Signature

sha256=<hmac> (firma HMAC-SHA256 del body)

X-FS-Delivery-Id

Identificatore univoco della consegna


Verificare la firma


La firma in X-FS-Signature viene calcolata così:


HMAC-SHA256(secret, body_json)


In Node.js ad esempio:


const crypto = require('crypto')
const sig = 'sha256=' + crypto.createHmac('sha256', SECRET).update(rawBody).digest('hex')
if (sig !== req.headers['x-fs-signature']) throw new Error('Firma non valida')



Dettaglio dei dati per evento


contact.created / contact.updated


{
  "id": 123,
  "firstname": "Marie",
  "lastname": "Dupont",
  "email": "marie@example.com",
  "phone": "+33 6 12 34 56 78",
  "company": "Studio Photo",
  "street": "12 rue de la Paix",
  "zipcode": "75001",
  "city": "Paris",
  "country": "France",
  "created_at": "2026-01-15T09:00:00Z",
  "url": "https://www.fotostudio.io/app/contacts/123"
}


project.created / project.status_changed / project.confirmed


{
  "id": 456,
  "name": "Matrimonio Dupont",
  "start_time": "2026-07-20T14:00:00Z",
  "end_time": "2026-07-20T18:00:00Z",
  "project_type": "Matrimonio",
  "status": "Confermato",
  "validated": true,
  "location": "Château de Versailles",
  "contact_id": 123,
  "created_at": "2026-01-15T09:00:00Z",
  "url": "https://www.fotostudio.io/app/projects/456"
}


invoice.created / invoice.paid


{
  "id": 789,
  "numero": "F2026-042",
  "title": "Matrimonio Dupont",
  "invoice_date": "2026-06-01",
  "total_price": 1500.00,
  "amount_to_pay": 750.00,
  "paid": false,
  "draft": false,
  "contact_id": 123,
  "project_id": 456,
  "created_at": "2026-06-01T10:00:00Z",
  "url": "https://www.fotostudio.io/app/invoices/789"
}


amount_to_pay è il saldo restante da pagare (totale - pagamenti già ricevuti).


payment.created


{
  "id": 101,
  "amount": 750.00,
  "payment_date": "2026-06-10",
  "payment_type": "Bonifico",
  "invoice_id": 789,
  "contact_id": 123,
  "created_at": "2026-06-10T14:00:00Z"
}


estimate.accepted / estimate.refused


{
  "id": 202,
  "numero": "D2026-018",
  "title": "Matrimonio Dupont",
  "total_price": 1500.00,
  "accepted": true,
  "refused": false,
  "accepted_at": "2026-06-05T16:00:00Z",
  "contact_id": 123,
  "project_id": 456,
  "created_at": "2026-05-20T09:00:00Z",
  "url": "https://www.fotostudio.io/app/estimates/202"
}


contract.signed


{
  "id": 303,
  "title": "Contratto Matrimonio Dupont",
  "signed_at": "2026-06-08T11:30:00Z",
  "project_id": 456,
  "contact_id": 123,
  "created_at": "2026-05-25T10:00:00Z",
  "url": "https://www.fotostudio.io/app/contracts/303"
}



Cronologia delle consegne


Nell'elenco dei webhook, apri il menu Azioni di un webhook e poi Ultime consegne (50). Vedi la cronologia delle chiamate con:


  • data e ora
  • evento scatenante
  • stato (Consegnato, Fallito o In attesa)
  • numero di tentativi
  • codice HTTP di risposta
  • messaggio di errore in caso di fallimento


In caso di errore, Fotostudio riprova automaticamente fino a 3 volte con un ritardo esponenziale. Puoi anche rilanciare manualmente una chiamata con il pulsante Riprova.



Usare con Make


  1. In Make, crea un nuovo scenario e aggiungi un modulo Webhooks → Custom webhook
  2. Copia l'URL generato da Make
  3. In Fotostudio, crea un webhook con questo URL e seleziona gli eventi desiderati
  4. Scatena un evento di test da Fotostudio (crea un contatto, ad esempio)
  5. Make riceve i dati. Puoi poi costruire la tua automazione



Usare con Zapier


  1. In Zapier, crea un nuovo Zap e scegli Webhooks by Zapier → Catch Hook come trigger
  2. Copia l'URL fornito da Zapier
  3. In Fotostudio, crea un webhook con questo URL
  4. Scatena un evento di test. Zapier rileva automaticamente la struttura dei dati
  5. Configura la tua azione (Google Sheets, Notion, Slack...)



FAQ


Cosa succede se il mio server non è disponibile?
Fotostudio riprova 3 volte con un ritardo crescente. Dopo 3 tentativi, la consegna viene segnata come fallita ma rimane nella cronologia. Puoi rilanciarla manualmente.


Il mio webhook deve rispondere entro quanto tempo?
Il tuo endpoint deve rispondere entro 10 secondi. Oltre questo limite, la richiesta viene considerata fallita.


Posso avere più webhook?
Sì, puoi creare tutti i webhook che vuoi, ciascuno con i propri eventi e il proprio URL.


Come disattivare temporaneamente un webhook?
Nell'elenco, apri il menu Azioni del webhook e scegli Inattivo (o Attivo per riattivarlo): viene messo in pausa senza essere eliminato.


Cosa succede se disattivo il modulo Webhook?
I tuoi webhook vengono conservati, ma non viene più inviata nessuna chiamata e la voce Webhook in uscita scompare dal menu. Riattiva il modulo per riprendere gli invii.

Aggiornato il: 23/10/2026

È stato utile questo articolo?

Condividi il tuo feedback

Annulla

Grazie!