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

Ausgehende Webhooks

Mit Webhooks verbindest du Fotostudio mit externen Tools wie Make, Zapier, n8n oder deinem eigenen Backend. Bei jedem wichtigen Ereignis (neuer Kontakt, bezahlte Rechnung, unterschriebener Vertrag...) schickt Fotostudio die Daten automatisch an die URL deiner Wahl.



Einen Webhook einrichten


Webhooks sind ein Modul, das du aktivierst, und in allen Tarifen verfügbar. Gehe zu Module > Alle Module, Kategorie Erweitert, und aktiviere das Modul Webhooks. Hattest du bereits einen Webhook angelegt, ist das Modul für dich schon aktiviert.


Gehe dann zu Module > Ausgehende Webhooks und klicke auf Webhook hinzufügen.


Fülle diese Felder aus:


Feld

Beschreibung

Bezeichnung (optional)

Ein Name zur Orientierung (z. B. „Make Rechnungen“)

Ziel-URL

Die HTTPS-URL, die dein Tool (Make, Zapier...) dir gibt

Zu abonnierende Ereignisse

Die Ereignisse, die gesendet werden sollen (du kannst mehrere auswählen)


Beim Anlegen wird automatisch ein HMAC-Geheimschlüssel erzeugt. Kopiere ihn sofort: Er wird danach nicht mehr so angezeigt. Mit ihm prüfst du, dass die Aufrufe wirklich von Fotostudio kommen.



Verfügbare Ereignisse


Ereignis

Ausgelöst, wenn...

contact.created

ein neuer Kontakt angelegt wird

contact.updated

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

project.created

ein neues Shooting angelegt wird

project.status_changed

sich der Status eines Shootings ändert

project.confirmed

ein Shooting bestätigt wird

invoice.created

eine Rechnung erstellt wird

invoice.paid

eine Rechnung als bezahlt markiert wird

payment.created

eine Zahlung erfasst wird

estimate.accepted

ein Angebot vom Kunden angenommen wird

estimate.refused

ein Angebot vom Kunden abgelehnt wird

contract.signed

ein Vertrag unterschrieben wird



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 prüfen


Die Signatur in X-FS-Signature wird so berechnet:


HMAC-SHA256(secret, body_json)


Zum Beispiel in Node.js:


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')



Die Daten je 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 offene Betrag (Gesamtbetrag minus 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"
}



Verlauf der Zustellungen


Öffne in der Liste der Webhooks das Menü Aktionen eines Webhooks und dann Letzte Lieferungen (50). Dort siehst du den Verlauf der Aufrufe mit:


  • Datum und Uhrzeit
  • dem ausgelösten Ereignis
  • dem Status (Zugestellt, Fehlgeschlagen oder Ausstehend)
  • der Anzahl der Versuche
  • dem HTTP-Antwortcode
  • der Fehlermeldung bei einem Fehlschlag


Schlägt ein Aufruf fehl, versucht Fotostudio es automatisch bis zu 3-mal erneut, mit exponentiell wachsendem Abstand. Du kannst einen Aufruf auch selbst mit dem Button Erneut versuchen neu auslösen.



Mit Make verwenden


  1. Erstelle in Make ein neues Szenario und füge das Modul Webhooks → Custom webhook hinzu.
  2. Kopiere die von Make erzeugte URL.
  3. Lege in Fotostudio einen Webhook mit dieser URL an und wähle die gewünschten Ereignisse.
  4. Löse in Fotostudio ein Testereignis aus (lege zum Beispiel einen Kontakt an).
  5. Make empfängt die Daten. Danach kannst du deine Automatisierung aufbauen.



Mit Zapier verwenden


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



Häufige Fragen


Was passiert, wenn mein Server nicht erreichbar ist?
Fotostudio versucht es 3-mal mit wachsendem Abstand erneut. Nach 3 Versuchen wird die Zustellung als fehlgeschlagen markiert, bleibt aber im Verlauf. Du kannst sie von Hand erneut auslösen.


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


Kann ich mehrere Webhooks haben?
Ja, du kannst so viele Webhooks anlegen, wie du möchtest, jeden mit eigenen Ereignissen und eigener URL.


Wie deaktiviere ich einen Webhook vorübergehend?
Öffne in der Liste das Menü Aktionen des Webhooks und wähle Inaktiv (oder Aktiv, um ihn wieder einzuschalten): Er wird pausiert, ohne gelöscht zu werden.


Was passiert, wenn ich das Modul Webhooks deaktiviere?
Deine Webhooks bleiben erhalten, aber es werden keine Aufrufe mehr verschickt, und der Eintrag Ausgehende Webhooks verschwindet aus dem Menü. Aktiviere das Modul wieder, um die Zustellungen fortzusetzen.

Aktualisiert am: 23/10/2026

War dieser Beitrag hilfreich?

Teilen Sie Ihr Feedback mit

Stornieren

Danke!