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

Uitgaande webhooks

Webhooks


Webhooks stellen je in staat om Fotostudio te verbinden met externe tools zoals Make, Zapier, n8n of je eigen back-end. Bij elke belangrijke gebeurtenis (nieuw contact, betaalde factuur, getekend contract...) stuurt Fotostudio automatisch de gegevens naar de URL van jouw keuze.



Een webhook configureren


Ga naar Modules → Uitgaande webhooks en klik op Webhook toevoegen.


Vul de volgende velden in:


Veld

Beschrijving

Label

Een naam om het gemakkelijk terug te vinden (bv: "Make – facturen")

Bestemmings-URL

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

Gebeurtenissen

De gebeurtenissen om te monitoren (je kunt er meerdere aanvinken)


Een geheim wordt automatisch gegenereerd bij het aanmaken. Kopieer het meteen: het wordt daarna niet meer getoond. Het dient om te verifiëren dat de aanroepen wel degelijk van Fotostudio komen.



Beschikbare gebeurtenissen


Gebeurtenis

Geactiveerd wanneer...

contact.created

Een nieuw contact wordt aangemaakt

contact.updated

Een contact wordt gewijzigd (coördinaten, 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


In de fiche van elke webhook toont het tabblad Logs de geschiedenis van de aanroepen met:


  • de datum en tijd
  • de geactiveerde gebeurtenis
  • de status (succes / mislukt)
  • de HTTP-responscode
  • de foutmelding bij mislukking


Bij mislukking probeert Fotostudio automatisch tot 3 keer opnieuw met een exponentiële vertraging. Je kunt ook handmatig een aanroep opnieuw starten vanuit de logs.



Gebruiken met Make


  1. Maak in Make een nieuw scenario aan en voeg een module Webhooks → Custom webhook toe
  2. Kopieer de door Make gegenereerde URL
  3. Maak in Fotostudio een webhook aan met deze URL en selecteer de gewenste gebeurtenissen
  4. Activeer een testgebeurtenis vanuit Fotostudio (bijvoorbeeld: maak een contactpersoon aan)
  5. Make ontvangt de gegevens. Vervolgens kun je je automatisering opzetten



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 deze URL
  4. Start een testgebeurtenis. Zapier herkent automatisch de gegevensstructuur
  5. Stel je actie in (Google Sheets, Notion, Slack...)



FAQ



Wat gebeurt er als mijn server niet beschikbaar is?
Fotostudio probeert het drie keer met een steeds langere wachttijd. Na drie pogingen wordt de verzending als mislukt gemarkeerd, maar blijft deze wel in de logbestanden staan. Je kunt de verzending handmatig opnieuw starten.


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


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


Hoe schakel ik een webhook tijdelijk uit?
Gebruik in de lijst de schakelaar om een webhook in of uit te schakelen zonder deze te verwijderen.

Bijgewerkt op: 29/06/2026

Was dit artikel nuttig?

Deel uw feedback

Annuleer

Dankuwel!