Webhooks & Integraties

Verbind CreatorDesk met de tools die je toch al gebruikt.

17 events, HMAC-gesigneerd, zonder code via Zapier, Make of n8n — of via een eigen webhook-endpoint. Nieuwsbrief-sync, boekingsback-up, Slack-melding en meer.

Gratis test

Hoe het werkt

Drie stappen van een event in CreatorDesk naar een actie in het doeltool.

1

Webhook aanmaken

In het CreatorDesk-dashboard onder Integraties → Webhooks: doel-URL invoeren, events selecteren, AVV bevestigen.

2

Ontvanger instellen

Zapier, Make, n8n of een eigen backend — als de endpoint maar JSON kan ontvangen en HMAC kan verifiëren.

3

Actie wordt geactiveerd

Zodra een event plaatsvindt, stuurt CreatorDesk de payload. Jouw tool reageert automatisch — je hoeft niets meer te doen.

Technische documentatie

Alle events, headers, HMAC-verificatie, retry-gedrag en troubleshooting — dezelfde snippets die we ook aan onze bestaande gebruikers laten zien.

Stap-voor-stap-handleidingen

Concrete setup-paden voor de belangrijkste tools. Klik op een service om de handleiding te openen.

Aanbevolen event client.created
Aanbevolen platform Zapier (Make.com / n8n analoog)

Stap voor stap

  1. 1

    Webhook aanmaken in CreatorDesk

    Dashboard → Integraties → Webhooks → Nieuwe webhook. Kies event "client.created", laat de URL voorlopig leeg, bevestig de AVV en sla op.

  2. 2

    Nieuwe Zap aanmaken in Zapier

    Trigger: «Webhooks by Zapier» → «Catch Hook» → Continue. Zapier toont een unieke URL — kopieer deze.

  3. 3

    URL invoeren in de CreatorDesk-webhook

    Ga terug naar de webhook in CreatorDesk, plak de Zapier-URL en sla op.

  4. 4

    Test-webhook activeren

    Klik in CreatorDesk op «Test-webhook». Klik in Zapier op «Test Trigger» — de payload zou moeten binnenkomen.

  5. 5

    Action configureren: MailerLite → Create/Update Subscriber

    Account eenmalig verbinden via OAuth, daarna velden mappen (zie tabel hieronder).

  6. 6

    Test-Action uitvoeren + Publish

    In de Zapier-editor «Test Action» — controleer of alles correct aankomt in het doeltool. Daarna rechtsboven «Publish».

Field-Mapping

CreatorDesk-veld MailerLite-veld
client_email E-mail (verplicht)
client_first_name Naam
client_last_name Custom-field: achternaam
client_phone Custom-field: telefoon
(statisch) Tags: creatordesk

Tips

  • Zapier accepteert zonder HMAC-verificatie — de Catch-Hook-URL is al geheim.
  • Meerdere events synchroniseren? Maak een eigen webhook + eigen Zap per event aan.
  • Werkt op dezelfde manier met Make.com of n8n — de trigger is daar telkens een «Webhook» / «Generic Webhook», de action is MailerLite.

Variant B — via een publiek formulier

Newsletter-aanmelding rechtstreeks via een publiek formulier — geen CRM-aanmaak nodig.

Trigger-event form.submitted
Voordeel Formuliervelden rechtstreeks als data.*
CreatorDesk-veld MailerLite-veld
data.email E-mail (verplicht)
data.vorname Naam
(statisch) Tags: newsletter-signup
Aanbevolen event client.created
Aanbevolen platform Zapier (Make.com / n8n analoog)

Stap voor stap

  1. 1

    Webhook aanmaken in CreatorDesk

    Dashboard → Integraties → Webhooks → Nieuwe webhook. Kies event "client.created", laat de URL voorlopig leeg, bevestig de AVV en sla op.

  2. 2

    Nieuwe Zap aanmaken in Zapier

    Trigger: «Webhooks by Zapier» → «Catch Hook» → Continue. Zapier toont een unieke URL — kopieer deze.

  3. 3

    URL invoeren in de CreatorDesk-webhook

    Ga terug naar de webhook in CreatorDesk, plak de Zapier-URL en sla op.

  4. 4

    Test-webhook activeren

    Klik in CreatorDesk op «Test-webhook». Klik in Zapier op «Test Trigger» — de payload zou moeten binnenkomen.

  5. 5

    Action configureren: Mailchimp → Add/Update Member to List

    Account eenmalig verbinden via OAuth, daarna velden mappen (zie tabel hieronder).

  6. 6

    Test-Action uitvoeren + Publish

    In de Zapier-editor «Test Action» — controleer of alles correct aankomt in het doeltool. Daarna rechtsboven «Publish».

Field-Mapping

CreatorDesk-veld Mailchimp-veld
client_email Email Address (verplicht)
client_first_name Merge-field FNAME
client_last_name Merge-field LNAME
(statisch) Tags: creatordesk

Tips

  • Mailchimp-actie vereist een audience-ID — eenmalig kiezen in de Zap-editor.
  • Dubbele aanmeldingen: Mailchimp dedupliceert automatisch op e-mailadres.
  • Werkt op dezelfde manier met Make.com of n8n — de trigger is daar telkens een «Webhook» / «Generic Webhook», de action is Mailchimp.
Aanbevolen event booking.confirmed
Aanbevolen platform Zapier (Make.com / n8n analoog)

Stap voor stap

  1. 1

    Webhook aanmaken in CreatorDesk

    Dashboard → Integraties → Webhooks → Nieuwe webhook. Kies event "booking.confirmed", laat de URL voorlopig leeg, bevestig de AVV en sla op.

  2. 2

    Nieuwe Zap aanmaken in Zapier

    Trigger: «Webhooks by Zapier» → «Catch Hook» → Continue. Zapier toont een unieke URL — kopieer deze.

  3. 3

    URL invoeren in de CreatorDesk-webhook

    Ga terug naar de webhook in CreatorDesk, plak de Zapier-URL en sla op.

  4. 4

    Test-webhook activeren

    Klik in CreatorDesk op «Test-webhook». Klik in Zapier op «Test Trigger» — de payload zou moeten binnenkomen.

  5. 5

    Action configureren: Brevo → Add or Update Contact

    Account eenmalig verbinden via OAuth, daarna velden mappen (zie tabel hieronder).

  6. 6

    Test-Action uitvoeren + Publish

    In de Zapier-editor «Test Action» — controleer of alles correct aankomt in het doeltool. Daarna rechtsboven «Publish».

Field-Mapping

CreatorDesk-veld Brevo-veld
client_email EMAIL (verplicht)
client_first_name FIRSTNAME
client_last_name LASTNAME
slot_date Custom-attribuut SHOOTING_DATE

Tips

  • Brevo-lijsten moeten vooraf in Brevo zijn aangemaakt — de Zap verwijst via lijst-ID.
  • Maak het custom-attribuut SHOOTING_DATE in Brevo aan als datumveld, anders wordt het opgeslagen als tekst.
  • Werkt op dezelfde manier met Make.com of n8n — de trigger is daar telkens een «Webhook» / «Generic Webhook», de action is Brevo.

Variant B — via een publiek formulier

Formulierinzendingen als Brevo-contacten met alle formuliervelden als aangepaste attributen.

Trigger-event form.submitted
Voordeel Formuliervelden rechtstreeks als data.*
CreatorDesk-veld Brevo-veld
data.email EMAIL (verplicht)
data.vorname FIRSTNAME
data.nachname LASTNAME
data.* (alle Felder) Aangepast attribuut per formuliervraag
Aanbevolen event booking.created
Aanbevolen platform Zapier (Make.com / n8n analoog)

Stap voor stap

  1. 1

    Webhook aanmaken in CreatorDesk

    Dashboard → Integraties → Webhooks → Nieuwe webhook. Kies event "booking.created", laat de URL voorlopig leeg, bevestig de AVV en sla op.

  2. 2

    Nieuwe Zap aanmaken in Zapier

    Trigger: «Webhooks by Zapier» → «Catch Hook» → Continue. Zapier toont een unieke URL — kopieer deze.

  3. 3

    URL invoeren in de CreatorDesk-webhook

    Ga terug naar de webhook in CreatorDesk, plak de Zapier-URL en sla op.

  4. 4

    Test-webhook activeren

    Klik in CreatorDesk op «Test-webhook». Klik in Zapier op «Test Trigger» — de payload zou moeten binnenkomen.

  5. 5

    Action configureren: ActiveCampaign → Create/Update Contact + Add Tag

    Account eenmalig verbinden via OAuth, daarna velden mappen (zie tabel hieronder).

  6. 6

    Test-Action uitvoeren + Publish

    In de Zapier-editor «Test Action» — controleer of alles correct aankomt in het doeltool. Daarna rechtsboven «Publish».

Field-Mapping

CreatorDesk-veld ActiveCampaign-veld
email email (verplicht)
customer_name firstName + lastName (Split)
phone phone
(statisch) Tag: creatordesk-lead

Tips

  • Optioneel: 2e Zap-stap "Add Contact to Automation" start een welcome-funnel.
  • Voor een nette split: voeg in Zapier een Formatter-stap toe tussen de webhook en de ActiveCampaign-action.
  • Werkt op dezelfde manier met Make.com of n8n — de trigger is daar telkens een «Webhook» / «Generic Webhook», de action is ActiveCampaign.

Variant B — via een publiek formulier

Publiek formulier rechtstreeks als ActiveCampaign-lead — met formuliervelden als tags.

Trigger-event form.submitted
Voordeel Formuliervelden rechtstreeks als data.*
CreatorDesk-veld ActiveCampaign-veld
data.email email (verplicht)
data.interesse Tag per interesseveld
form.title Tag: form-<title>
Aanbevolen event invoice.paid
Aanbevolen platform Zapier (Make.com / n8n analoog)

Stap voor stap

  1. 1

    Webhook aanmaken in CreatorDesk

    Dashboard → Integraties → Webhooks → Nieuwe webhook. Kies event "invoice.paid", laat de URL voorlopig leeg, bevestig de AVV en sla op.

  2. 2

    Nieuwe Zap aanmaken in Zapier

    Trigger: «Webhooks by Zapier» → «Catch Hook» → Continue. Zapier toont een unieke URL — kopieer deze.

  3. 3

    URL invoeren in de CreatorDesk-webhook

    Ga terug naar de webhook in CreatorDesk, plak de Zapier-URL en sla op.

  4. 4

    Test-webhook activeren

    Klik in CreatorDesk op «Test-webhook». Klik in Zapier op «Test Trigger» — de payload zou moeten binnenkomen.

  5. 5

    Action configureren: Slack → Send Channel Message

    Account eenmalig verbinden via OAuth, daarna velden mappen (zie tabel hieronder).

  6. 6

    Test-Action uitvoeren + Publish

    In de Zapier-editor «Test Action» — controleer of alles correct aankomt in het doeltool. Daarna rechtsboven «Publish».

Field-Mapping

CreatorDesk-veld Slack-veld
invoice_number invoegen in de berichttekst
total Bedrag in de berichttekst
client.name Klantnaam in de berichttekst

Tips

  • Berichttemplate: 💰 Factuur #{invoice_number} ({total}€) betaald door {client.name}
  • Het kanaal wordt geselecteerd bij het koppelen van je Slack-account — één per Zap.
  • Werkt op dezelfde manier met Make.com of n8n — de trigger is daar telkens een «Webhook» / «Generic Webhook», de action is Slack.

Variant B — via een publiek formulier

«Nieuwe formulierinzending»-melding rechtstreeks in het kanaal — erg populair voor lead-capture.

Trigger-event form.submitted
Voordeel Formuliervelden rechtstreeks als data.*
CreatorDesk-veld Slack-veld
form.title Formuliernaam in de berichttekst
data.email Contact-e-mail in de berichttekst
submission_id Verwijzings-ID

1. Overzicht

Bij elk geabonneerd event stuurt CreatorDesk een HTTP-POST naar de geconfigureerde doel-URL. De body is JSON, met een HMAC-SHA256-gesigneerde header. Bij tijdelijke fouten (5xx, timeout) wordt er met exponentiële backoff tot vijf keer opnieuw geprobeerd (1m, 5m, 30m, 2h, 12h).

Er zijn momenteel 17 eventtypen beschikbaar. Je abonneert je per webhook alleen op de typen die je nodig hebt — geen enkel is verplicht.

2. Request-headers

Elke POST wordt verstuurd met deze headers. Custom headers uit de webhook-configuratie worden gemerged, maar kunnen geen gereserveerde X-CreatorDesk-*-headers overschrijven.

Header Voorbeeld
Content-Typeapplication/json
X-CreatorDesk-Eventclient.created
X-CreatorDesk-Signaturesha256=a1b2c3...
X-CreatorDesk-Timestamp2026-05-12T09:30:00Z
X-CreatorDesk-Request-ID8d3f2e4a-1c5b-...
User-AgentCreatorDesk-Webhooks/1.0

3. HMAC-handtekening verifiëren

De gesigneerde string is {timestamp}.{raw_body}. Met het webhook-secret kun je verifiëren dat het bericht echt van CreatorDesk afkomstig is. Gebruik vergelijkingen met constante tijd (bijv. hmac.compare_digest), niet ==.

Python (Flask / Django)

import hmac, hashlib

WEBHOOK_SECRET = "dein_secret_aus_creatordesk"

def verify(request):
    timestamp = request.headers["X-CreatorDesk-Timestamp"]
    received = request.headers["X-CreatorDesk-Signature"]  # "sha256=..."
    body = request.get_data()  # raw bytes, NICHT request.json

    message = f"{timestamp}.".encode() + body
    expected = "sha256=" + hmac.new(
        WEBHOOK_SECRET.encode(), message, hashlib.sha256
    ).hexdigest()

    if not hmac.compare_digest(expected, received):
        return "invalid signature", 401

    # Replay-Schutz: Timestamp darf nicht aelter als 5 min sein
    # → return 401 bei zu altem Timestamp

    return "ok", 200

Node.js (Express)

const crypto = require("crypto");
const WEBHOOK_SECRET = process.env.WEBHOOK_SECRET;

// WICHTIG: raw body capturen, nicht JSON-parsen vor verify
app.post("/webhook",
  express.raw({ type: "application/json" }),
  (req, res) => {
    const ts = req.headers["x-creatordesk-timestamp"];
    const received = req.headers["x-creatordesk-signature"];
    const body = req.body;  // Buffer

    const message = Buffer.concat([Buffer.from(ts + "."), body]);
    const expected = "sha256=" + crypto
      .createHmac("sha256", WEBHOOK_SECRET)
      .update(message).digest("hex");

    if (!crypto.timingSafeEqual(
        Buffer.from(expected), Buffer.from(received))) {
      return res.status(401).send("invalid signature");
    }

    const payload = JSON.parse(body.toString());
    // ... verarbeiten
    res.send("ok");
});

PHP

<?php
$secret = getenv("WEBHOOK_SECRET");
$body = file_get_contents("php://input");  // raw bytes
$ts = $_SERVER["HTTP_X_CREATORDESK_TIMESTAMP"];
$received = $_SERVER["HTTP_X_CREATORDESK_SIGNATURE"];

$message = $ts . "." . $body;
$expected = "sha256=" . hash_hmac("sha256", $message, $secret);

if (!hash_equals($expected, $received)) {
    http_response_code(401);
    exit("invalid signature");
}

$payload = json_decode($body, true);
// ... verarbeiten
echo "ok";

4. Voorbeeld-payloads

Eén representatief voorbeeld per event-categorie. Velden verschillen licht per event — volledige referentie per event-type via dezelfde payload-builder, hier alleen uittreksels.

client.created — Nieuw contact in het CRM
{
  "id": 42,
  "uuid": "8d3f2e4a-1c5b-4d6e-9a8b-7c5d4e3f2a1b",
  "email": "[email protected]",
  "name": "Anna Beispiel",
  "first_name": "Anna",
  "last_name": "Beispiel",
  "company": null,
  "phone": "+49 123 456789",
  "tags": ["Hochzeit", "2026"],
  "project_count": 0,
  "source": "instagram",
  "client_number": "K-2026-0042",
  "created_at": "2026-05-12T09:30:00Z"
}
booking.confirmed — Afspraak bevestigd
{
  "id": 17,
  "customer_name": "Anna Beispiel",
  "email": "[email protected]",
  "phone": "+49 123 456789",
  "slot_date": "2026-08-14",
  "slot_time_start": "10:00:00",
  "project_id": 38,
  "quote_id": null,
  "booked_at": "2026-05-12T09:15:00Z",
  "confirmed_at": "2026-05-12T09:30:00Z"
}
invoice.paid — Factuur betaald
{
  "id": 89,
  "invoice_number": "R-2026-0089",
  "title": "Hochzeit Anna & Tobias",
  "status": "paid",
  "total": "1450.00",
  "subtotal": "1218.49",
  "issue_date": "2026-05-01",
  "due_date": "2026-05-31",
  "paid_at": "2026-05-12T09:30:00Z",
  "client": {
    "id": 42,
    "email": "[email protected]",
    "name": "Anna Beispiel",
    "first_name": "Anna",
    "last_name": "Beispiel"
  },
  "project_id": 38,
  "quote_id": 23
}
order.paid — Galerie-bestelling betaald
{
  "id": 156,
  "order_number": "GS-2026-00156",
  "gallery_id": 73,
  "customer_email": "[email protected]",
  "customer_name": "Anna Beispiel",
  "total": "199.00",
  "payment_method": "stripe",
  "status": "paid",
  "items": [
    {"id": 412, "product_type": "digital_image_package",
     "quantity": 1, "unit_price": "199.00"}
  ],
  "paid_at": "2026-05-12T09:30:00Z"
}
gallery.published — Galerij gepubliceerd
{
  "id": 73,
  "uuid": "f6146aa2-0335-4af2-8c0f-cfcbb0f7d3d0",
  "title": "Hochzeit Anna & Tobias",
  "status": "published",
  "distribution_mode": "shop",
  "project_id": 38,
  "image_count": 342,
  "allow_sale": true,
  "published_at": "2026-05-12T09:30:00Z"
}
Alle 17 eventtypen — volledige lijst
client.created Ein Kontakt wurde im CRM angelegt.
client.updated Felder eines Kontakts wurden geaendert.
client.deleted Ein Kontakt wurde geloescht (DSGVO-Loeschungsrecht — Empfaenger sollte lokale Kopie entfernen).
booking.created Ein Kunde hat ueber den Buchungs-Kalender eine Anfrage gestellt (noch nicht bestaetigt).
booking.confirmed Ein Termin wurde bestaetigt (SlotBooking.confirmed_at gesetzt).
project.created Ein neues Projekt wurde im CRM angelegt.
project.status_changed Der Status eines Projekts hat sich veraendert.
quote.created Ein neues Angebot wurde erstellt.
quote.accepted Der Kunde hat ein Angebot akzeptiert.
invoice.issued Eine Rechnung wurde an den Kunden geschickt.
invoice.paid Eine Rechnung wurde als bezahlt markiert.
contract.signed Ein Vertrag wurde vom Kunden unterschrieben.
gallery.published Eine Galerie hat den Status published erhalten.
gallery.delivered Galerie.delivered_at wurde gesetzt — Lieferschein ist raus.
order.paid Ein Endkunde hat eine Galerie-Bestellung bezahlt.
order.shipped Eine Galerie-Bestellung mit Druck-Artikeln wurde versandt.
form.submitted Ein Public-Formular wurde abgeschickt — Payload enthaelt alle Felder.

5. Zapier / Make / n8n — Quickstart

Zapier

  1. Nieuwe Zap → Trigger: Webhooks by Zapier
  2. Event: Catch Hook → Continue
  3. Gegenereerde URL kopiëren
  4. Nieuwe webhook aanmaken in CreatorDesk met deze URL
  5. Test-event vanuit CreatorDesk versturen, Zap-test activeren
Officiële documentatie →

Make (Integromat)

  1. Nieuw Scenario → Webhook-module
  2. Custom Webhook → Add → Save
  3. Webhook-URL kopiëren
  4. Nieuwe webhook aanmaken in CreatorDesk met deze URL
  5. Make wacht op eerste test-POST — stuur een test-event
Officiële documentatie →

n8n

  1. Nieuwe Workflow → Webhook-Trigger-Node
  2. Method: POST, pad naar eigen keuze
  3. Test-URL kopiëren (of productie-URL na activering)
  4. Nieuwe webhook aanmaken in CreatorDesk met deze URL
  5. Test-event activeren
Officiële documentatie →
Tip: Zapier/Make/n8n verifiëren de HMAC-handtekening niet automatisch. Voor productiegebruik moet je een eigen filter- of function-stap inbouwen die de handtekening controleert — anders kan iedereen met de URL nep-events versturen.

6. Retry-gedrag

Response Gedrag
2xxSucces, failure_count = 0
4xx (außer 408)Permanente fout, geen retry — controleer de receiver-configuratie
5xx / 408 / TimeoutExponential Backoff: 1m → 5m → 30m → 2h → 12h (max. 5 pogingen)
5 opeenvolgende foutenWebhook wordt automatisch gedeactiveerd

HTTP-timeout per poging: 10 seconden. Zorg dat je receiver-endpoint binnen 10s een 2xx teruggeeft — en zware verwerking asynchroon afhandelt (queue, background-worker).

7. Probleemoplossing

Webhook komt niet aan
  • Controleren: is de webhook actief? (detailweergave toont statusindicator)
  • Controleren: is het relevante event geabonneerd?
  • In het delivery-log: is er überhaupt een vermelding voor het event?
  • Zo niet: misschien heeft je bestaande code de save die het event activeert niet uitgevoerd (bijv. .update() in plaats van .save()).
Delivery-status toont 'failed'
  • Klik op het item in het delivery-log → het fragment van de response-body toont de fout
  • 401 van de receiver: HMAC-verificatie klopt niet — secret onjuist of body werd geparsed in plaats van raw geverifieerd
  • 404: Doel-URL niet bereikbaar of pad onjuist
  • 5xx van de receiver: je endpoint crasht — controleer de receiver-logs
  • Handmatige re-trigger via de knop «Opnieuw proberen» in de detailweergave
Webhook is automatisch gedeactiveerd

Na 5 opeenvolgende fouten wordt de webhook automatisch gedeactiveerd, zodat defecte receivers niet eindeloos opnieuw worden geprobeerd. Los de fout op en activeer de webhook daarna opnieuw via «Activeren» in de detailweergave — failure_count wordt daarbij teruggezet op 0.

Dubbele events

Eigenlijk niet mogelijk — bij status-overgangen sturen we alleen een event bij een echte overgang (oud != nieuw). Mocht het toch voorkomen: controleer of meerdere webhooks hetzelfde event naar dezelfde URL sturen.

Idempotentie aan de receiver-kant: gebruik de X-CreatorDesk-Request-ID-header als dedup-sleutel. Bij een handmatige re-trigger wordt een NIEUWE Request-ID aangemaakt; dat is bewust — je wilt immers echt opnieuw leveren.

8. GDPR

Outbound-webhooks sturen klantgegevens (naam, e-mail, eventueel telefoonnummer) door naar een externe ontvanger. Als fotograaf ben jij verantwoordelijk voor het afsluiten van een verwerkersovereenkomst (VOK) met de ontvanger — of de ontvanger moet je eigen systeem zijn.

Bij het aanmaken van een webhook in het CRM bevestig je dit via een checkbox. Zonder bevestiging van de verwerkersovereenkomst kan de webhook niet worden geactiveerd.

Dataminimalisatie: payloads bevatten alleen het strikt noodzakelijke per event. Adresgegevens en telefoonnummers worden bewust niet doorgegeven tenzij ze expliciet onderdeel zijn van het event.

Recht op verwijdering voor eindklanten: bij Client.delete sturen we automatisch client.deleted met het e-mailadres naar alle actieve webhooks — zodat de ontvanger zijn lokale kopie kan verwijderen.

FAQ

Wat gebeurt er als mijn endpoint even offline is?

CreatorDesk herprobeert bij tijdelijke fouten (5xx, timeout) met exponential backoff: 1 minuut → 5 minuten → 30 minuten → 2 uur → 12 uur. Na 5 opeenvolgende mislukte pogingen wordt de webhook automatisch gedeactiveerd, zodat je het opmerkt.

Hoe weet ik zeker dat een webhook echt van CreatorDesk komt?

Elk request is HMAC-SHA256-gesigneerd. Je verifieert de handtekening met jouw webhook-secret — we leveren code-snippets voor Python, Node.js en PHP hierboven. Zapier/Make verifiëren niet automatisch; daar voeg je een filter-stap in.

Welk plan heb ik nodig?

Webhooks zijn inbegrepen in elk plan — ook in het gratis abonnement. Geen extra add-ons nodig.

Kan ik ook gegevens uit CreatorDesk OPHALEN in plaats van alleen push?

Momenteel is de integratie push-only (webhooks). Een pull-REST-API is in ontwikkeling — als je die concreet nodig hebt, laat het ons weten, dan geven we het prioriteit.

Welke 17 events zijn beschikbaar?
client.created — Ein Kontakt wurde im CRM angelegt.
client.updated — Felder eines Kontakts wurden geaendert.
client.deleted — Ein Kontakt wurde geloescht (DSGVO-Loeschungsrecht — Empfaenger sollte lokale Kopie entfernen).
booking.created — Ein Kunde hat ueber den Buchungs-Kalender eine Anfrage gestellt (noch nicht bestaetigt).
booking.confirmed — Ein Termin wurde bestaetigt (SlotBooking.confirmed_at gesetzt).
project.created — Ein neues Projekt wurde im CRM angelegt.
project.status_changed — Der Status eines Projekts hat sich veraendert.
quote.created — Ein neues Angebot wurde erstellt.
quote.accepted — Der Kunde hat ein Angebot akzeptiert.
invoice.issued — Eine Rechnung wurde an den Kunden geschickt.
invoice.paid — Eine Rechnung wurde als bezahlt markiert.
contract.signed — Ein Vertrag wurde vom Kunden unterschrieben.
gallery.published — Eine Galerie hat den Status published erhalten.
gallery.delivered — Galerie.delivered_at wurde gesetzt — Lieferschein ist raus.
order.paid — Ein Endkunde hat eine Galerie-Bestellung bezahlt.
order.shipped — Eine Galerie-Bestellung mit Druck-Artikeln wurde versandt.
form.submitted — Ein Public-Formular wurde abgeschickt — Payload enthaelt alle Felder.
Is dit AVG-conform?

Als fotograaf ben jij verantwoordelijk voor het afsluiten van een verwerkersovereenkomst (AVV) met de ontvanger van de webhook — of de ontvanger is jouw eigen systeem. Bij het aanmaken van een webhook bevestig je dit via een checkbox. Bij het verwijderen van contacten sturen we automatisch een client.deleted-event, zodat de ontvanger zijn kopie kan verwijderen.

In 5 minuten ingesteld

Webhook aanmaken, events abonneren, actie koppelen in Zapier/Make/n8n — klaar. Je hebt geen advies nodig, de documentatie is voldoende.