Artikelen over: Kunstmatige intelligentie (AI)
Dit artikel is ook beschikbaar in:

Uitgaande webhooks

Met webhooks verbind je Fotostudio met externe tools zoals Make, Zapier, n8n of je eigen back-end. Bij elke belangrijke gebeurtenis (nieuw contact, betaalde factuur, ondertekend contract...) stuurt Fotostudio de gegevens automatisch naar de URL van jouw keuze.



Een webhook instellen


Webhooks zijn een module die je moet activeren, beschikbaar in alle formules. Ga naar Modules > Alle modules, categorie Geavanceerd, en activeer de module Webhooks. Had je al een webhook aangemaakt, dan is de module al voor je geactiveerd.


Ga daarna naar Modules > Uitgaande webhooks en klik op Webhook toevoegen.


Vul de volgende velden in:


Veld

Beschrijving

Label (optioneel)

Een naam om je webhook terug te vinden (bv. "Make facturen")

Doel-URL

De HTTPS-URL die je tool (Make, Zapier...) je geeft

Gebeurtenissen om op te abonneren

De gebeurtenissen die je wilt volgen (je kunt er meerdere aanvinken)


Bij het aanmaken wordt automatisch een HMAC geheime sleutel gegenereerd. Kopieer hem meteen: hij wordt daarna niet meer zo getoond. Hij dient om te controleren dat de oproepen echt van Fotostudio komen.



Beschikbare gebeurtenissen


Gebeurtenis

Uitgelokt wanneer...

contact.created

Een nieuw contact wordt aangemaakt

contact.updated

Een contact wordt gewijzigd (contactgegevens, info...)

project.created

Een nieuwe fotoshoot wordt aangemaakt

project.status_changed

De status van een fotoshoot verandert

project.confirmed

Een fotoshoot wordt bevestigd

invoice.created

Een factuur wordt aangemaakt

invoice.paid

Een factuur wordt als betaald gemarkeerd

payment.created

Een betaling wordt geregistreerd

estimate.accepted

Een offerte wordt door de klant geaccepteerd

estimate.refused

Een offerte wordt door de klant geweigerd

contract.signed

Een contract wordt getekend



Formaat van de verzonden gegevens


Elke aanroep is een POST in JSON met de volgende structuur:


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


HTTP-headers


Header

Waarde

Content-Type

application/json

X-FS-Event

Naam van de gebeurtenis (bv: invoice.paid)

X-FS-Signature

sha256=<hmac> (HMAC-SHA256 handtekening van de body)

X-FS-Delivery-Id

Unieke identificatie van de levering


De handtekening verifiëren


De handtekening in X-FS-Signature wordt als volgt berekend:


HMAC-SHA256(secret, body_json)


In Node.js bijvoorbeeld:


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('Ongeldige handtekening')



Detail van de gegevens per gebeurtenis


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": "Huwelijk Dupont",
  "start_time": "2026-07-20T14:00:00Z",
  "end_time": "2026-07-20T18:00:00Z",
  "project_type": "Huwelijk",
  "status": "Bevestigd",
  "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": "Huwelijk 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 is het resterende te betalen saldo (totaal - reeds ontvangen betalingen).


payment.created


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


estimate.accepted / estimate.refused


{
  "id": 202,
  "numero": "D2026-018",
  "title": "Huwelijk 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": "Contract Huwelijk 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"
}



Geschiedenis van de leveringen


Open in de lijst met webhooks het menu Acties van een webhook en daarna Laatste leveringen (50). Daar zie je de geschiedenis van de oproepen met:


  • de datum en het uur
  • de gebeurtenis die de oproep uitlokte
  • de status (Afgeleverd, Mislukt of In behandeling)
  • het aantal pogingen
  • de HTTP-responscode
  • de foutmelding bij een mislukking


Bij een mislukking probeert Fotostudio het automatisch tot 3 keer opnieuw, met een exponentieel oplopende wachttijd. Je kunt een oproep ook zelf opnieuw versturen met de knop Opnieuw proberen.



Gebruiken met Make


  1. Maak in Make een nieuw scenario aan en voeg een module Webhooks → Custom webhook toe
  2. Kopieer de URL die Make genereert
  3. Maak in Fotostudio een webhook aan met die URL en kies de gewenste gebeurtenissen
  4. Lok in Fotostudio een testgebeurtenis uit (maak bijvoorbeeld een contact aan)
  5. Make ontvangt de gegevens. Daarna kun je je automatisering opbouwen



Gebruiken met Zapier


  1. Maak in Zapier een nieuwe Zap aan en kies Webhooks by Zapier → Catch Hook als trigger
  2. Kopieer de URL die Zapier je geeft
  3. Maak in Fotostudio een webhook aan met die URL
  4. Lok een testgebeurtenis uit. Zapier herkent de structuur van de gegevens automatisch
  5. Stel je actie in (Google Sheets, Notion, Slack...)



FAQ


Wat gebeurt er als mijn server niet bereikbaar is?
Fotostudio probeert het 3 keer opnieuw, met een steeds langere wachttijd. Na 3 pogingen wordt de levering als mislukt gemarkeerd, maar ze blijft in de geschiedenis staan. Je kunt ze zelf opnieuw versturen.


Binnen hoeveel tijd moet mijn webhook antwoorden?
Je endpoint moet binnen 10 seconden antwoorden. Daarna wordt het verzoek als mislukt beschouwd.


Kan ik meerdere webhooks hebben?
Ja, je kunt zoveel webhooks aanmaken als je wilt, elk met eigen gebeurtenissen en een eigen URL.


Hoe schakel ik een webhook tijdelijk uit?
Open in de lijst het menu Acties van de webhook en kies Inactief (of Actief om hem weer aan te zetten): hij wordt gepauzeerd zonder verwijderd te worden.


Wat gebeurt er als ik de module Webhooks deactiveer?
Je webhooks blijven bewaard, maar er worden geen oproepen meer verstuurd en het menu-item Uitgaande webhooks verdwijnt uit het menu. Activeer de module opnieuw om de verzendingen te hervatten.

Bijgewerkt op: 23/10/2026

Was dit artikel nuttig?

Deel uw feedback

Annuleer

Dankuwel!