Artikel über: Künstliche Intelligenz (KI)
Dieser Artikel ist auch verfügbar in:

Ausgehende Webhooks

Webhooks


Webhooks ermöglichen es dir, Fotostudio mit externen Tools wie Make, Zapier, n8n oder deinem eigenen Backend zu verbinden. Bei jedem wichtigen Ereignis (neuer Kontakt, bezahlte Rechnung, unterzeichneter Vertrag...) sendet Fotostudio automatisch die Daten an die URL deiner Wahl.



Einen Webhook konfigurieren


Gehe zu Module → Ausgehende Webhooks und klicke auf Neuer Webhook.


Fülle die folgenden Felder aus:


Feld

Beschreibung

Label

Ein Name zur Orientierung (z.B. "Make – Rechnungen")

Ziel-URL

Die HTTPS-URL von deinem Tool (Make, Zapier...)

Ereignisse

Die zu überwachenden Ereignisse (du kannst mehrere auswählen)


Ein Geheimnis wird automatisch bei der Erstellung generiert. Kopiere es sofort: Es wird danach nicht mehr angezeigt. Es dient zur Überprüfung, dass die Aufrufe tatsächlich von Fotostudio kommen.



Verfügbare Ereignisse


Ereignis

Ausgelöst wenn...

contact.created

Ein neuer Kontakt wird erstellt

contact.updated

Ein Kontakt wird geändert (Kontaktdaten, Infos...)

project.created

Eine neue Sitzung wird erstellt

project.status_changed

Der Status einer Sitzung ändert sich

project.confirmed

Eine Sitzung wird bestätigt

invoice.created

Eine Rechnung wird erstellt

invoice.paid

Eine Rechnung wird als bezahlt markiert

payment.created

Eine Zahlung wird erfasst

estimate.accepted

Ein Angebot wird vom Kunden angenommen

estimate.refused

Ein Angebot wird vom Kunden abgelehnt

contract.signed

Ein Vertrag wird unterschrieben



Format der gesendeten Daten


Jeder Aufruf ist ein POST in JSON mit folgender Struktur:


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


HTTP-Header


Header

Wert

Content-Type

application/json

X-FS-Event

Name des Ereignisses (z.B. invoice.paid)

X-FS-Signature

sha256=<hmac> (HMAC-SHA256-Signatur des Body)

X-FS-Delivery-Id

Eindeutige Kennung der Zustellung


Die Signatur überprüfen


Die Signatur in X-FS-Signature wird wie folgt berechnet:


HMAC-SHA256(secret, body_json)


In Node.js zum Beispiel:


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('Ungültige Signatur')



Details der Daten pro Ereignis


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": "Hochzeit Dupont",
"start_time": "2026-07-20T14:00:00Z",
"end_time": "2026-07-20T18:00:00Z",
"project_type": "Hochzeit",
"status": "Bestätigt",
"validated": true,
"location": "Schloss 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": "Hochzeit 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 ist der noch zu zahlende Restbetrag (Gesamt - bereits erhaltene Zahlungen).


payment.created


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


estimate.accepted / estimate.refused


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



Zustellungsverlauf


Im Reiter Logs jedes Webhooks findest du den Verlauf aller Aufrufe mit:


  • Datum und Uhrzeit
  • dem ausgelösten Ereignis
  • dem Status (erfolgreich / fehlgeschlagen)
  • dem HTTP-Antwortcode
  • der Fehlermeldung im Fehlerfall


Schlägt ein Aufruf fehl, versucht Fotostudio die Zustellung automatisch bis zu 3-mal erneut mit exponentiell ansteigendem Zeitabstand. Du kannst einen Aufruf auch jederzeit manuell über die Logs erneut ausführen.



Verwendung mit Make


  1. Erstelle in Make ein neues Szenario und füge das Modul Webhooks → Custom webhook hinzu.
  2. Kopiere die von Make generierte URL.
  3. Erstelle in Fotostudio einen Webhook mit dieser URL und wähle die gewünschten Ereignisse aus.
  4. Löse in Fotostudio ein Testereignis aus (z. B. indem du einen Kontakt erstellst).
  5. Make empfängt die Daten. Anschließend kannst du deine Automatisierung erstellen.



Verwendung mit Zapier


  1. Erstelle in Zapier einen neuen Zap und wähle Webhooks by Zapier → Catch Hook als Trigger aus.
  2. Kopiere die von Zapier bereitgestellte URL.
  3. Erstelle in Fotostudio einen Webhook mit dieser URL.
  4. Löse ein Testereignis aus. Zapier erkennt die Datenstruktur automatisch.
  5. Konfiguriere deine gewünschte Aktion (Google Sheets, Notion, Slack usw.).



FAQ


Was passiert, wenn mein Server nicht erreichbar ist?
Fotostudio versucht die Zustellung bis zu 3-mal mit zunehmend längeren Wartezeiten erneut. Nach dem dritten Versuch wird die Zustellung als fehlgeschlagen markiert, bleibt jedoch in den Logs erhalten. Du kannst sie jederzeit manuell erneut ausführen.


Wie schnell muss mein Webhook antworten?
Dein Endpoint muss innerhalb von 10 Sekunden antworten. Danach wird die Anfrage als fehlgeschlagen betrachtet.


Kann ich mehrere Webhooks erstellen?
Ja, du kannst beliebig viele Webhooks erstellen – jeder mit eigenen Ereignissen und einer eigenen URL.


Wie kann ich einen Webhook vorübergehend deaktivieren?
Nutze in der Liste den Schalter, um einen Webhook zu aktivieren oder zu deaktivieren, ohne ihn zu löschen.

Aktualisiert am: 30/06/2026

War dieser Beitrag hilfreich?

Teilen Sie Ihr Feedback mit

Stornieren

Danke!