Anfragen & CRM

Anfragen & CRM

›

Anfragen erfassen

Kontaktformular per Webhook ans CRM anbinden (für Webentwickler)

Kontaktformular per Webhook ans CRM anbinden (für Webentwickler)

Kontaktformular per Webhook ans CRM anbinden (für Webentwickler)

Was du in diesem Artikel lernst

Wie euer Webentwickler oder eure Agentur das Kontaktformular eurer Website Schritt für Schritt an TREELAX Partner anbindet: Adresse, Aufbau der Daten, alle Felder, Bilder, Antworten, Fehlerfälle und der Test vor dem Start.

Wann dir das hilft

Bei euch kommen die Formularanfragen von der Website bisher als E-Mail an, und jemand tippt sie morgens ins CRM ab: Name, Telefonnummer, Adresse, dazu die Fotos vom Baum einzeln aus dem Anhang. Das kostet jeden Tag ein paar Minuten und geht schief, wenn die Hausnummer im Fließtext untergeht. Mit dem Webhook schickt euer Formular die Angaben direkt und strukturiert ins System. Bei jeder Absendung entsteht automatisch eine Anfrage mit Kontakt, Adresse, gewünschter Leistung und Fotos.

Programmieren musst du dafür nicht. Gib diesen Artikel an eure Agentur oder an die Person weiter, die eure Website betreut. Den Überblick für dich findest du in Anfragen per Website-Formular automatisch empfangen.

So läuft ein Aufruf ab

  1. Jemand schickt das Formular auf eurer Website ab.

  2. Der Server eurer Website schickt die Angaben als JSON per POST an eure Webhook-Adresse.

  3. TREELAX Partner legt die Anfrage an. Gibt es noch keinen Kontakt mit dieser E-Mail-Adresse, entsteht dabei auch ein neuer Kontakt.

  4. Die Antwort enthält die Nummer der neuen Anfrage (crm_lead_id). Die Fotos lädt das System kurz danach im Hintergrund herunter und hängt sie an die Anfrage.

Schritt 1: Webhook-Adresse anfordern

Jede Instanz hat eine eigene Adresse nach dem Muster https://eure-instanz.treelax-partner.de/web/hook/. Der Schlüssel am Ende ist für euch individuell. Die vollständige Adresse bekommt ihr von uns über den Support.

Behandelt die Adresse wie ein Passwort: Wer sie kennt, kann in eurem System Anfragen anlegen. Sie gehört in die Server-Konfiguration eurer Website und nicht in JavaScript-Code, den jeder Besucher im Browser sehen kann.

Schritt 2: Den Aufruf aufbauen

  • Methode: POST

  • Header: Content-Type: application/json

  • Body: ein JSON-Objekt, Aufbau siehe Schritt 3

  • Anmeldung: keine weitere. Der Schlüssel steckt in der Adresse. Benutzername, Passwort, API-Schlüssel oder Datenbankname braucht es nicht.

Schickt die Daten als JSON. Formulardaten (multipart/form-data oder application/x-www-form-urlencoded) kommen leer an. Es entsteht dann keine Anfrage, und die Antwort enthält keine crm_lead_id.

Der Aufruf muss vom Server eurer Website kommen, zum Beispiel aus dem Formular-Plugin, einer Serverfunktion oder einem Automatisierungsdienst. Ein Aufruf direkt aus dem Browser des Besuchers würde die Adresse offenlegen.

Schritt 3: Die Felder

Diese Felder wertet TREELAX Partner aus. Kein Feld ist technisch Pflicht. Für eine brauchbare Anfrage sollten aber mindestens contact.name und contact.email oder contact.phone mitkommen. Felder, die euer Formular nicht hat, lasst ihr einfach weg.

  • contact.name (Text): Vor- und Nachname des Interessenten. Daraus wird der Titel der Anfrage und der Name des neuen Kontakts. Habt ihr getrennte Felder, schickt stattdessen contact.first_name und contact.last_name. Das System setzt beides zusammen.

  • contact.email (Text): E-Mail-Adresse des Interessenten. Daran erkennt TREELAX Partner, ob es den Kontakt schon gibt.

  • contact.phone (Text): Telefonnummer.

  • address.street (Straße mit Hausnummer), address.postal_code und address.city (Texte): Adresse des Grundstücks. Sie wird am Kontakt gespeichert und erscheint so auch in der Anfrage.

  • name (Text): Titel der Anfrage, wenn kein Name des Interessenten mitkommt. Ist contact.name gefüllt, steht der Name des Interessenten als Titel auf der Anfrage-Kachel.

  • subjects (Liste von Texten): Stichwörter an der Anfrage, zum Beispiel die gewünschte Leistung („Baumfällung“) oder die Quelle („Landingpage Sturmschaden“). Stichwörter, die es noch nicht gibt, legt das System an. Ein einzelner Text statt einer Liste geht auch.

  • message (Text): der Freitext aus dem Formular. Er steht im Feld Notizen der Anfrage, Zeilenumbrüche bleiben erhalten.

  • greeting (Text): Anrede, zum Beispiel „Frau“ oder „Herr“. Sie wird am neuen Kontakt hinterlegt.

  • appointment_request (Objekt): Terminwunsch mit enabled (true), date (Format JJJJ-MM-TT) und time (Format HH:MM). Er landet im Feld Terminwunsch der Anfrage, aber nur, wenn alle drei Angaben gesetzt sind.

  • images (Liste von Bild-Adressen): Fotos zur Anfrage, Details im nächsten Abschnitt.

Alle weiteren Felder gehen nicht verloren. Sie stehen als Zeilen „Feldname: Wert“ im Feld Notizen der Anfrage, zum Beispiel "Baumart": "Linde". So könnt ihr zusätzliche Formularfelder mitschicken, ohne dass wir etwas einstellen müssen.

Euer Formular-Werkzeug kann nur flache Felder senden? Das geht auch. TREELAX Partner erkennt unter anderem diese Feldnamen: Name, Vorname, Nachname, E-Mail oder email, Telefon oder phone, Straße + Hausnummer, Postleitzahl, Ort oder city, Anrede, Message und Massnahme oder Anfrage für (wird zum Stichwort). Felder, deren Name „image“, „bild“, „foto“, „photo“ oder „upload“ enthält und deren Wert eine Web-Adresse ist, behandelt das System als Bild.

Bilder mitschicken

  • Jede Bild-Adresse muss öffentlich mit http oder https erreichbar sein und direkt auf die Datei zeigen. Weiterleitungen folgt das System nicht.

  • Der Server, auf dem das Bild liegt, muss es als Bild ausliefern (Content-Type: image/…). Ein Bild darf höchstens 15 MB groß sein, übernommen werden bis zu 10 Bilder je Anfrage.

  • Die Bilder lädt das System kurz nach dem Anlegen der Anfrage herunter. Die Adressen müssen also noch ein paar Minuten gültig bleiben. Vorsicht bei Upload-Links, die nach kurzer Zeit ablaufen.

  • Klappt ein Bild nicht, entsteht die Anfrage trotzdem. In ihrem Verlauf steht dann eine Notiz „Bild nicht übernommen“ mit dem Grund, zum Beispiel „Datei ist kein Bild“ oder „Datei größer als 15 MB“.

Schritt 4: Beispiel

So sieht ein vollständiger Aufruf aus. Den Body speichert ihr für den Test zum Beispiel als Datei anfrage.json.

curl -X POST "https://eure-instanz.treelax-partner.de/web/hook/EUER-SCHLUESSEL" \
  -H "Content-Type: application/json" \
  -d

curl -X POST "https://eure-instanz.treelax-partner.de/web/hook/EUER-SCHLUESSEL" \
  -H "Content-Type: application/json" \
  -d

curl -X POST "https://eure-instanz.treelax-partner.de/web/hook/EUER-SCHLUESSEL" \
  -H "Content-Type: application/json" \
  -d

{
  "name": "Website-Anfrage",
  "greeting": "Frau",
  "contact": {
    "name": "Erika Musterfrau",
    "email": "erika.musterfrau@example.com",
    "phone": "+49 40 1234567"
  },
  "address": {
    "street": "Musterweg 12",
    "postal_code": "22395",
    "city": "Hamburg"
  },
  "subjects": ["Kontaktformular", "Baumfällung"],
  "message": "Eine Birke im Vorgarten neigt sich Richtung Haus.\nZufahrt über die Garage.",
  "appointment_request": {"enabled": true, "date": "2026-11-04", "time": "10:00"},
  "images": ["https://www.eure-website.de/uploads/birke-1.jpg"],
  "Baumart": "Birke"
}
{
  "name": "Website-Anfrage",
  "greeting": "Frau",
  "contact": {
    "name": "Erika Musterfrau",
    "email": "erika.musterfrau@example.com",
    "phone": "+49 40 1234567"
  },
  "address": {
    "street": "Musterweg 12",
    "postal_code": "22395",
    "city": "Hamburg"
  },
  "subjects": ["Kontaktformular", "Baumfällung"],
  "message": "Eine Birke im Vorgarten neigt sich Richtung Haus.\nZufahrt über die Garage.",
  "appointment_request": {"enabled": true, "date": "2026-11-04", "time": "10:00"},
  "images": ["https://www.eure-website.de/uploads/birke-1.jpg"],
  "Baumart": "Birke"
}
{
  "name": "Website-Anfrage",
  "greeting": "Frau",
  "contact": {
    "name": "Erika Musterfrau",
    "email": "erika.musterfrau@example.com",
    "phone": "+49 40 1234567"
  },
  "address": {
    "street": "Musterweg 12",
    "postal_code": "22395",
    "city": "Hamburg"
  },
  "subjects": ["Kontaktformular", "Baumfällung"],
  "message": "Eine Birke im Vorgarten neigt sich Richtung Haus.\nZufahrt über die Garage.",
  "appointment_request": {"enabled": true, "date": "2026-11-04", "time": "10:00"},
  "images": ["https://www.eure-website.de/uploads/birke-1.jpg"],
  "Baumart": "Birke"
}

Die Antwort bei Erfolg:

{"crm_lead_id": 1234, "status": "ok"}
{"crm_lead_id": 1234, "status": "ok"}
{"crm_lead_id": 1234, "status": "ok"}

Antworten und Fehlerfälle

  • HTTP 200 mit "status": "ok" und crm_lead_id: Die Anfrage ist angelegt. crm_lead_id ist ihre Nummer.

  • HTTP 200 mit "status": "duplicate": Innerhalb der letzten zehn Minuten kam an dieselbe Adresse schon eine Absendung mit derselben E-Mail-Adresse (ohne E-Mail: mit demselben Namen und derselben Telefonnummer). Es entsteht keine zweite Anfrage. crm_lead_id zeigt auf die bestehende, neue Bilder und abweichende Angaben landen dort als Notiz. Typischer Grund: Das Formular-Werkzeug schickt jede Absendung doppelt.

  • HTTP 200 ohne crm_lead_id: Der Body war leer oder kam nicht als JSON an. Es entsteht nichts. Prüft Header und Body.

  • HTTP 500: Bei der Verarbeitung ist ein Fehler aufgetreten. Es entsteht weder Anfrage noch Kontakt. Schickt die Absendung später erneut und meldet euch beim Support, wenn der Fehler bleibt.

  • HTTP 404: Die Adresse stimmt nicht oder ist nicht mehr aktiv. Fragt beim Support die aktuelle Adresse an.

Baut die Erfolgsprüfung eurer Integration auf crm_lead_id auf und nicht auf den Statuscode allein. HTTP 200 heißt nur, dass der Aufruf angekommen ist. Fehlgeschlagene Aufrufe fasst TREELAX Partner außerdem einmal täglich in einer E-Mail an die Teamleiter im CRM zusammen.

Schritt 5: Vor dem Start testen

  1. Schickt einen Testdatensatz mit einer Test-E-Mail-Adresse an die Adresse, zum Beispiel mit dem Beispiel aus Schritt 4.

  2. Prüft die Antwort. Erfolgreich ist der Test nur, wenn sie eine crm_lead_id enthält.

  3. Öffnet in TREELAX Partner das Modul Anfragen und kontrolliert die neue Anfrage: Titel, Kontakt, Adresse, Stichwörter und Notizen. Die Fotos erscheinen nach kurzer Zeit als Anhang an der Büroklammer.

  4. Schickt denselben Datensatz innerhalb von zehn Minuten noch einmal. Die Antwort meldet jetzt "status": "duplicate", und es entsteht keine zweite Anfrage.

  5. Schickt zum Schluss einmal das echte Formular auf eurer Website ab und prüft auch diese Anfrage.

  6. Löscht danach die Testanfragen und den Testkontakt, damit sie nicht in euren Auswertungen auftauchen.

Gut zu wissen

Gibt es schon einen Kontakt mit der mitgeschickten E-Mail-Adresse, ordnet TREELAX Partner die Anfrage diesem Kontakt zu, auch wenn er archiviert ist. Ein neuer Kontakt entsteht dann nicht.

Steht die Anbindung noch nicht oder habt ihr keine eigene Website? Stellt die Empfängeradresse eures Formulars einfach auf eure Anfragen-Mailadresse um. Das funktioniert sofort, nur eben ohne strukturierte Felder.

Weiterführende Artikel

Hat dir dieser Artikel geholfen?