Du betrachtest gerade Zoho CRM, Forms und Books mit OpenAI API und OneFlow für Akquise- und Angebotsworkflows automatisieren

Zoho CRM, Forms und Books mit OpenAI API und OneFlow für Akquise- und Angebotsworkflows automatisieren

  • Beitrags-Autor:

Zoho als zentrales Nervensystem: Wie Du externe Tools per Webhook und KI nahtlos integrierst

In der modernen Unternehmens-IT geht es nicht mehr darum, die eine perfekte Software für alles zu finden. Der Schlüssel zum Erfolg liegt vielmehr darin, die besten Spezial-Tools für jede Aufgabe zu nutzen und sie intelligent miteinander zu vernetzen. Zoho bietet hierfür mit seiner riesigen App-Landschaft und den mächtigen Entwickler-Schnittstellen die ideale Basis. In diesem Artikel zeige ich Dir an einem konkreten Praxisbeispiel, wie Du Zoho als zentrales Nervensystem Deines Unternehmens etablierst. Wir automatisieren die Datenerfassung mit KI, orchestrieren komplexe Akquise-Prozesse und binden eine externe Angebots-Software nahtlos via Webhook an, um den Prozess von der Unterschrift bis zur Rechnungsstellung komplett zu automatisieren.

Die Herausforderung: Manuelle Prozesse und Datensilos im MICE-Sektor

Stell Dir vor, Du arbeitest für eine Agentur, die sich auf die Organisation von Firmen-Retreats und Events spezialisiert hat. Ein zentraler Bestandteil Deines Geschäfts ist eine umfangreiche Datenbank mit Hotelpartnern. Diese Daten sind entscheidend, um schnell auf Kundenanfragen reagieren zu können. Doch hier beginnen die Probleme:

  • Datenerfassung: Neue Hotels füllen einen langen Fragebogen in Zoho Forms aus. Die wirklich wichtigen Kennzahlen (z.B. maximale Gruppengröße unter verschiedenen Bedingungen) müssen manuell aus dem umfangreichen Formular-PDF extrahiert und ins Zoho CRM übertragen werden – ein zeitaufwändiger und fehleranfälliger Prozess.
  • Akquise: Neue Hotels müssen aktiv zur Teilnahme bewegt werden. Das bloße Versenden des Fragebogen-Links zeigt kaum Wirkung. Ein manueller, persönlicher Ansatz ist nicht skalierbar.
  • Vertragsabschluss: Angebote werden in einem professionellen externen Tool wie OneFlow erstellt und digital unterzeichnet. Nach der Unterschrift muss jedoch manuell eine Anzahlungsrechnung in Zoho Books erstellt und der Kontakt im CRM aktualisiert werden. Das schafft einen Medienbruch und verzögert den Prozess.

Unser Ziel ist es, diese drei Kernprozesse mithilfe von Zoho und gezielten Integrationen vollständig zu automatisieren und ein geschlossenes, effizientes System zu schaffen.

Schritt-für-Schritt zur automatisierten Lösung

Wir teilen die Lösung in drei logische Blöcke auf: Intelligente Datenerfassung, skalierbare Akquise und nahtlose Angebotsintegration.

1. KI-gestützte Extraktion von „Key Facts“ aus Zoho Forms

Anstatt die Rohdaten aus dem Formular manuell zu interpretieren, lassen wir eine KI die Arbeit für uns erledigen. Das Ziel: Aus dem gesamten Inhalt eines Zoho Forms Eintrags sollen berechnete Kennzahlen extrahiert und in dedizierte Felder im Lieferanten-Modul (Vendors) von Zoho CRM geschrieben werden.

Schritt 1: Felder im Zoho CRM anlegen

Zuerst schaffen wir im CRM (im Modul „Vendors“ oder „Lieferanten“) neue Felder, um die Ergebnisse zu speichern. In unserem Beispiel sind das berechnete Kennzahlen, die für die Eventplanung entscheidend sind:

  • Max. Gruppe (Einzelbelegung): Basierend auf der reinen Zimmeranzahl.
  • Max. Gruppe (Einzelbelegung, Restaurant-limitiert): Der kleinere Wert aus Zimmeranzahl und Restaurantkapazität.
  • Max. Gruppe (Einzelbelegung, Meeting-limitiert): Der kleinste Wert aus Zimmer-, Restaurant- und Meetingraum-Kapazität.
  • …und die gleichen drei Felder für eine Doppelbelegungs-Logik.

Schritt 2: Custom Function mit KI-Anbindung erstellen

Das Herzstück ist eine Custom Function in Zoho CRM, die bei jeder neuen Formular-Einreichung getriggert wird. Diese Funktion bündelt die relevanten Informationen aus dem Formular und sendet sie an eine KI-API (z.B. OpenAI’s GPT-Modelle) mit einer sehr spezifischen Anweisung (Prompt).

Hier ist ein beispielhaftes Deluge-Skript, das zeigt, wie ein solcher API-Aufruf aussehen könnte. Dieses Skript wird durch eine Workflow-Regel ausgelöst, die auf die Erstellung eines neuen Formular-Eintrags reagiert.


// Deluge Custom Function - ausgelöst bei Zoho Forms Einreichung
// Argumente: formContent (String), vendorId (Long)

// 1. Alle relevanten Formulardaten in einen Textblock packen
fullText = "Formular-Daten für Hotel:n" + formContent;

// 2. Den Prompt für die KI definieren
// Wichtig: Sei so spezifisch wie möglich!
prompt = "Analysiere den folgenden Text aus einem Hotel-Fragebogen. Extrahiere die Anzahl der Einzelzimmer, Doppelzimmer, Twin-Zimmer und Suiten. Extrahiere die Kapazität des größten Meetingraums und des Hauptrestaurants. Berechne basierend darauf die maximale Gruppengröße für die folgenden 6 Szenarien und gib das Ergebnis NUR als JSON-Objekt zurück:n1. max_sgl_rooms: Max. Personen bei Einzelbelegung (jedes Zimmer = 1 Person).n2. max_sgl_restaurant: Min(max_sgl_rooms, Restaurant-Kapazität).n3. max_sgl_meeting: Min(max_sgl_rooms, Restaurant-Kapazität, Meetingraum-Kapazität).n4. max_dbl_rooms: Max. Personen bei Doppelbelegung (Einzelzimmer=1, alles andere=2).n5. max_dbl_restaurant: Min(max_dbl_rooms, Restaurant-Kapazität).n6. max_dbl_meeting: Min(max_dbl_rooms, Restaurant-Kapazität, Meetingraum-Kapazität).nnText: " + fullText;

// 3. API-Aufruf an einen externen KI-Dienst (z.B. OpenAI)
apiKey = zoho.crm.getOrgVariable("openai.api_key"); // Sicher als Org Variable speichern!
headers = Map();
headers.put("Authorization", "Bearer " + apiKey);
headers.put("Content-Type", "application/json");

body = Map();
body.put("model", "gpt-4-turbo-preview");
messages = List();
messages.add({"role":"user", "content":prompt});
body.put("messages", messages);
body.put("response_format", {"type": "json_object"}); // Fordere JSON als Antwort an

// 4. Den API-Call durchführen
response = invokeurl
[
	url: "https://api.openai.com/v1/chat/completions"
	type: POST
	headers: headers
	parameters: body.toString()
];

// 5. Antwort parsen und CRM-Datensatz aktualisieren
if(response.get("choices") != null)
{
	jsonResponse = response.get("choices").get(0).get("message").get("content").toJSON();
	
	updateMap = Map();
	updateMap.put("Max_Gruppe_Einzelbelegung", jsonResponse.get("max_sgl_rooms"));
	updateMap.put("Max_Gruppe_Einzelbelegung_Restaurant_limitiert", jsonResponse.get("max_sgl_restaurant"));
	updateMap.put("Max_Gruppe_Einzelbelegung_Meeting_limitiert", jsonResponse.get("max_sgl_meeting"));
	updateMap.put("Max_Gruppe_Doppelbelegung", jsonResponse.get("max_dbl_rooms"));
	// ... etc. für die anderen Felder
	
	updateResponse = zoho.crm.updateRecord("Vendors", vendorId, updateMap);
	info updateResponse;
}

Mit dieser Methode hast Du eine strukturierte, durchsuch- und filterbare Datenbank, ohne dass jemand manuell Daten übertragen muss. Die Logik kann sogar auf alle bestehenden Formular-Einträge rückwirkend angewendet werden.

2. Automatisierte Akquise-Kadenz zur Steigerung der Rücklaufquote

Um die Zahl der ausgefüllten Fragebögen zu erhöhen, bauen wir eine automatisierte E-Mail-Sequenz (Kadenz) auf. Die Idee ist, eine echte Anfrage zu simulieren, um die Motivation des Hotels zur Teilnahme zu steigern.

Diesen Prozess kannst Du entweder mit Workflow-Regeln im Zoho CRM oder, für noch mehr Flexibilität, mit Zoho Marketing Automation umsetzen. Die Hotellisten für diese Kampagnen können mit KI-Scraping-Tools wie Manus.im generiert werden.

Die E-Mail-Kadenz im Detail:

  1. Tag 1, 09:00 Uhr: Eine glaubwürdige, aber fiktive Anfrage wird an das Hotel gesendet. („Hallo Hotel-Team, wir planen ein Management-Retreat für 50 Personen im Oktober…“).
  2. Tag 1, 11:00 Uhr: Eine Folge-E-Mail wird gesendet. („Bezüglich unserer Anfrage von vorhin: Könntet Ihr für unsere Datenbank bitte noch schnell diesen Fragebogen ausfüllen? Das würde den Prozess beschleunigen. Hier der Link: …“).
  3. Tag 3: Das System prüft, ob der Status des Formulars für dieses Hotel im CRM auf „Ausgefüllt“ steht. Falls nicht, wird ein erster Reminder gesendet.
  4. Tag 6: Erneute Prüfung und ggf. zweiter Reminder.
  5. Tag 10: Letzte Prüfung und ggf. dritter Reminder.

Der entscheidende Trick ist, dass das System nicht auf E-Mail-Antworten reagiert (was komplex wäre), sondern einfach den Status eines Feldes im CRM-Datensatz des Hotels prüft. Sobald das Formular übermittelt wird, stoppt die Kadenz für diesen Kontakt automatisch.

3. OneFlow-Integration: Vom Vertrag zur Rechnung in Millisekunden via Webhook

Dies ist der kritische Punkt, an dem ein externer Prozess (Vertragsunterzeichnung) direkt einen internen Finanzprozess auslösen soll. Statt auf teure und manchmal limitierte Konnektoren von Drittanbietern wie Zapier zu setzen, nutzen wir die native Webhook-Funktionalität von OneFlow.

Ein Webhook ist im Grunde eine automatisierte Benachrichtigung, die ein System an ein anderes sendet, wenn ein bestimmtes Ereignis eintritt. In unserem Fall ist das Ereignis: „Ein Kunde hat den Vertrag unterzeichnet“.

Schritt 1: Webhook-URL in Zoho erstellen

Wir benötigen einen Endpunkt in Zoho, der die Daten von OneFlow empfangen kann. Die beste Methode hierfür ist eine Deluge Custom Function, die als REST API agiert. Du erstellst die Funktion (z.B. in Zoho Creator oder direkt im CRM) und erhältst eine einzigartige URL.

Schritt 2: Webhook in OneFlow konfigurieren

In den OneFlow-Einstellungen hinterlegst Du diese Zoho-URL und wählst das Ereignis „Participant has signed the contract“ als Auslöser aus.

Schritt 3: Das Deluge-Skript zur Verarbeitung des Webhooks

Dieses Skript ist der Klebstoff, der alles zusammenhält. Es empfängt die Daten, prüft, ob der Kunde bereits existiert, und erstellt dann eine Anzahlungsrechnung in Zoho Books.


// Deluge Custom Function - agiert als Webhook-Empfänger
// Wichtig: Diese Funktion hat keine Argumente, da die Daten im 'payload' ankommen.

// 1. Empfange und parse die JSON-Daten von OneFlow
oneflowData = payload.toJSON();
info oneflowData;

// 2. Extrahiere die relevanten Informationen
customerEmail = oneflowData.get("participant").get("email");
customerName = oneflowData.get("participant").get("name");
contractValue = oneflowData.get("contract").get("value").toDecimal();
contractId = oneflowData.get("contract").get("id");

// 3. Prüfe, ob der Kontakt im CRM existiert
searchResponse = zoho.crm.searchRecords("Contacts", "(Email:equals:" + customerEmail + ")");
contactId = null;

if(searchResponse.size() > 0)
{
	contactId = searchResponse.get(0).get("id");
}
else
{
	// Erstelle einen neuen Kontakt, falls nicht vorhanden
	newContact = Map();
	newContact.put("Last_Name", customerName);
	newContact.put("Email", customerEmail);
	createResponse = zoho.crm.createRecord("Contacts", newContact);
	contactId = createResponse.get("id");
}

// 4. Erstelle die Anzahlungsrechnung in Zoho Books
if(contactId != null)
{
	// Finde die Zoho Books Customer ID basierend auf der CRM Contact ID
	booksCustomer = zoho.books.getRecords("Contacts", "YOUR_BOOKS_ORGANIZATION_ID", {"crm_contact_id":contactId});
	if(booksCustomer.get("code") == 0 && booksCustomer.get("contacts").size() > 0)
	{
		booksCustomerId = booksCustomer.get("contacts").get(0).get("contact_id");
	
		// Berechne 30% Anzahlung
		downPayment = contractValue * 0.3;
	
		invoiceMap = Map();
		invoiceMap.put("customer_id", booksCustomerId);
		
		lineItems = List();
		item = Map();
		item.put("name", "Anzahlung für Vertrag #" + contractId);
		item.put("description", "30% Anzahlung gemäß unterzeichnetem Vertrag.");
		item.put("rate", downPayment);
		item.put("quantity", 1);
		lineItems.add(item);
		invoiceMap.put("line_items", lineItems);
		
		// Erstelle die Rechnung in Zoho Books
		createInvoice = zoho.books.createRecord("Invoices", "YOUR_BOOKS_ORGANIZATION_ID", invoiceMap);
		info createInvoice;

        // Optional: Sende eine Benachrichtigung an das Team in Zoho Cliq
        zoho.cliq.postToChannel("finanzen", "Neue Anzahlungsrechnung für " + customerName + " wurde automatisch erstellt: " + createInvoice.get("invoice").get("invoice_url"));
	}
}

Tipps und Best Practices

  • Sicherheit zuerst: Speichere API-Schlüssel und andere sensible Daten niemals direkt im Code. Nutze stattdessen die Organisationsvariablen im CRM oder Zoho Vault.
  • Fehlerbehandlung: Baue in Deine Skripte immer eine Fehlerbehandlung ein. Was passiert, wenn eine API nicht erreichbar ist? Logge Fehler und richte Benachrichtigungen ein.
  • Alternative zu Deluge: Für visuell orientierte Nutzer oder sehr komplexe Workflows mit vielen verschiedenen Apps kann Zoho Flow eine hervorragende, Low-Code-Alternative zur reinen Deluge-Programmierung sein.
  • Datenqualität überwachen: Bei der automatisierten Akquise ist die Qualität der E-Mail-Adressen entscheidend. Nutze Tools wie ZeroBounce zur Validierung und behalte die Bounce-Raten in Deinen Kampagnen im Auge.

Fazit: Die Macht der vernetzten Systeme

Dieses Praxisbeispiel zeigt eindrucksvoll, wie Zoho weit mehr als nur eine Sammlung einzelner Apps ist. Durch den strategischen Einsatz von Custom Functions, APIs und Webhooks wird es zur zentralen Datendrehscheibe, die spezialisierte externe Tools nahtlos integriert und ganze Prozessketten automatisiert. Der manuelle Aufwand wird drastisch reduziert, die Datenqualität steigt und Dein Team kann sich auf wertschöpfende Aufgaben konzentrieren, anstatt Daten von A nach B zu kopieren.

Die Investition in die Konzeption und Umsetzung solcher Integrationen zahlt sich durch enorme Effizienzgewinne und eine skalierbare Systemlandschaft schnell aus. Es ist der entscheidende Schritt, um das volle Potenzial Deiner Zoho-Umgebung auszuschöpfen.


Verwendete Zoho Apps in diesem Szenario: