Zoho CRM, Zoho Flow, Typeform und Airtable für Lead-Management automatisieren – Tutorial

  • Beitrags-Autor:

Smarte Lead-Automatisierung: Dein Zoho CRM als Datendrehscheibe mit Typeform und Airtable

In schnell wachsenden Unternehmen entstehen oft Insellösungen: Das Marketing-Team liebt ein Tool wie Typeform für die Lead-Erfassung, der Vertrieb arbeitet in einer agilen Umgebung wie Airtable, und das Management möchte alle Kerndaten zentral im Zoho CRM sehen. Die manuelle Übertragung von Daten zwischen diesen Systemen ist nicht nur fehleranfällig, sondern auch ein echter Bremsklotz für Deine Prozesse. Wenn Leads nicht in Echtzeit dort ankommen, wo sie hingehören, verlierst Du wertvolle Zeit und potenzielle Kunden. In diesem Fachartikel zeigen wir Dir, wie Du eine robuste und intelligente Brücke zwischen diesen Welten baust, um Deine Lead-Prozesse vollständig zu automatisieren und Dein Zoho-Ökosystem zur zentralen Schaltstelle Deiner Vertriebsaktivitäten zu machen.

Das Praxisbeispiel: Von Insellösungen zur zentralen Datenplattform

Stell Dir ein Unternehmen im Sektor der erneuerbaren Energien vor. Leads werden über verschiedene Kanäle generiert: Einerseits über Performance-Marketing-Kampagnen und andererseits über direkte Anfragen („Eigen-Leads“) oder auf Messen. Die Herausforderung: Alle Leads landen initial in einem Typeform-Formular. Von dort aus sollen sie in Echtzeit im Zoho CRM verarbeitet und gleichzeitig in einer spezifischen Ansicht in Airtable für das Vertriebsteam sichtbar gemacht werden.

Die Probleme in der alten Konfiguration waren vielfältig:

  • Verschiedene Lead-Typen: Eigen-Leads erfordern einen anderen, schnelleren Prozess als Marketing-Leads, die möglicherweise erst qualifiziert werden müssen. Sie wurden aber im selben Workflow behandelt.
  • Umgang mit Duplikaten: Was passiert, wenn ein Interessent, der bereits als Kontakt im CRM existiert, ein neues Formular ausfüllt? Diese Leads blieben stecken oder wurden ignoriert, ohne dass der zuständige Vertriebler davon erfuhr.
  • Datensynchronisation: Die manuelle oder halbautomatische Synchronisation zwischen Zoho CRM und Airtable war lückenhaft und führte zu inkonsistenten Daten.

Ziel war es, einen vollautomatischen, resilienten Prozess zu schaffen, der diese Probleme löst und Zoho CRM als die „Single Source of Truth“ etabliert.

Schritt-für-Schritt: Die technische Umsetzung im Detail

Um diese Herausforderungen zu meistern, bauen wir eine Architektur, die auf Webhooks, Zoho Flow und intelligenten Custom Functions innerhalb von Zoho CRM setzt.

Schritt 1: Die Architektur – Zoho CRM als Herzstück

Die Grundentscheidung ist, dass jeder neue Lead zuerst an Zoho gesendet und dort verarbeitet wird. Zoho entscheidet dann, was mit den Daten passiert – ob ein neuer Lead erstellt, ein bestehender Kontakt aktualisiert oder eine Benachrichtigung versendet wird. Von Zoho aus werden die relevanten Informationen dann an externe Systeme wie Airtable weitergegeben. Als Werkzeug für die Orchestrierung nutzen wir Zoho Flow, das als Vermittler zwischen den APIs dient.

Schritt 2: Typeform-Integration via Webhook

Der erste Schritt ist, die Daten aus Typeform herauszubekommen. Typeform bietet hierfür eine hervorragende Webhook-Funktion. Ein Webhook ist im Grunde eine automatisierte Benachrichtigung, die von einer Anwendung an eine andere gesendet wird, sobald ein bestimmtes Ereignis eintritt – in unserem Fall das Absenden eines Formulars.

  1. Erstelle in Zoho Flow einen neuen Flow und wähle als Trigger „Webhook“.
  2. Zoho Flow generiert Dir eine einzigartige URL. Kopiere diese.
  3. Gehe in Deinem Typeform-Formular zu „Connect“ -> „Webhooks“ und füge die URL aus Zoho Flow ein.
  4. Sende nun ein Test-Formular ab. Zoho Flow fängt die Daten ab und zeigt Dir die Struktur des JSON-Payloads an. Damit kannst Du im nächsten Schritt arbeiten.

Tipp: Eine native Zoho-Alternative hierfür wäre Zoho Forms, das sich nahtlos und ohne den Umweg über Zoho Flow direkt in Zoho CRM integrieren lässt.

Schritt 3: Intelligente Verarbeitung in Zoho Flow

In Zoho Flow baust Du nun die Logik auf, die entscheidet, was mit den ankommenden Daten passiert.

  1. Trigger: Der Flow startet mit dem konfigurierten Webhook.
  2. Aktion „Fetch Contact“: Nutze die Zoho CRM-Integration in Flow, um nach einem Kontakt mit der E-Mail-Adresse aus dem Typeform-Payload zu suchen.
  3. Logik „Decision“: Füge eine „Decision“-Verzweigung ein. Die Bedingung lautet: „Wurde ein Kontakt gefunden?“ (z.B. `Kontakt-ID` ist nicht leer).
  4. Pfad A (Kontakt nicht gefunden):
    • Erstelle einen neuen Lead im Zoho CRM.
    • Nutze die „Convert Lead“-Aktion, um den Lead sofort in einen Account, Kontakt und eine Opportunity umzuwandeln. Dies ist ideal für „Eigen-Leads“, die direkt in den Vertriebsprozess sollen.
  5. Pfad B (Kontakt gefunden):
    • Hier passiert die Magie. Anstatt den Flow zu beenden, rufen wir eine Custom Function im CRM auf, die eine Benachrichtigung auslöst. Mehr dazu im nächsten Schritt.

Schritt 4: Fehlerbehandlung und Benachrichtigungen bei Duplikaten mit Deluge

Wenn ein Lead nicht automatisch verarbeitet werden kann, weil der Kontakt bereits existiert, darf diese Information nicht verloren gehen. Der zuständige Vertriebsmitarbeiter muss erfahren, dass sein bestehender Kontakt erneutes Interesse gezeigt hat. Dies lösen wir mit einer Custom Function in Zoho CRM, die wir aus Zoho Flow aufrufen. Die Funktion versendet eine E-Mail an den zuständigen Mitarbeiter.

Erstelle dazu in Zoho CRM unter Einstellungen > Automatisierung > Aktionen > Funktionen eine neue Funktion (geschrieben in Deluge):


// Funktion: notifyOwnerOnDuplicateLead
// Argumente: contactId (String), typeformData (String)

void notifyOwnerOnDuplicateLead(int contactId, string typeformData)
{
    // JSON-Daten aus Typeform parsen
    typeformMap = typeformData.toMap();
    
    // Bestehenden Kontakt und dessen Besitzer abrufen
    contactDetails = zoho.crm.getRecordById("Contacts", contactId);
    ownerId = contactDetails.get("Owner").get("id");
    ownerDetails = zoho.crm.getUser(ownerId);
    ownerEmail = ownerDetails.get("email");
    ownerName = ownerDetails.get("full_name");
    
    // E-Mail-Inhalt zusammenstellen
    emailSubject = "Erneutes Interesse: Ein bestehender Kontakt hat das Formular ausgefüllt";
    emailMessage = "Hallo " + ownerName + ",

"; emailMessage = emailMessage + "Dein Kontakt " + contactDetails.get("Full_Name") + " (" + contactDetails.get("Email") + ") hat erneut Interesse gezeigt und das Formular ausgefüllt.

"; emailMessage = emailMessage + "Hier sind die übermittelten Daten:
"; // Iteriere durch die Typeform-Daten und füge sie der E-Mail hinzu for each key in typeformMap.keys() { emailMessage = emailMessage + "" + key + ": " + typeformMap.get(key) + "
"; } emailMessage = emailMessage + "
Bitte prüfe, ob eine neue Opportunity angelegt oder eine bestehende aktualisiert werden muss.

"; emailMessage = emailMessage + "Dein Zoho CRM System"; // E-Mail senden (z.B. über Zoho ZeptoMail oder die interne sendmail-Funktion) sendmail [ from : "[email protected]" to : ownerEmail subject : emailSubject message : emailMessage ]; // Alternative: Nachricht an einen Zoho Cliq Kanal senden // zoho.cliq.postToChannel("sales_notifications", "Neuer Lead für bestehenden Kontakt " + contactDetails.get("Full_Name") + ". Besitzer: " + ownerName); }

In Zoho Flow rufst Du im „Pfad B“ diese Funktion auf und übergibst die `Kontakt-ID` des gefundenen Kontakts und den gesamten JSON-Payload des Webhooks als String.

Schritt 5: Datenmodellierung in Zoho CRM – Eine oder mehrere Opportunities?

Eine strategische Frage in diesem Projekt war, wie Kundenprojekte abgebildet werden. Ein Kunde kann sich sowohl für eine PV-Anlage als auch für eine Wärmepumpe interessieren. Legt man dafür eine Opportunity mit zwei Produkten an (Variante A) oder zwei separate Opportunities (Variante B)?

Die Entscheidung fiel auf Variante A: Eine Opportunity pro Kundenprojekt. Dies entspricht eher dem Branchenstandard im Vertrieb, da der Kunde als ein Projekt betrachtet wird. In Zoho CRM kannst Du dies sauber umsetzen, indem Du:

  • Produkte aus dem Produktmodul zur Opportunity hinzufügst.
  • Den Status von Teilprojekten (z.B. „Förderung beantragt“, „Finanzierung geklärt“) als Picklist-Felder direkt in der Opportunity speicherst.

Diese zentrale Struktur erleichtert das Reporting erheblich und gibt dem Vertrieb einen 360-Grad-Blick auf das gesamte Kundenprojekt. Für die Auswertung kann später Zoho Analytics genutzt werden, um detaillierte Berichte über Produktkombinationen und Verkaufszyklen zu erstellen.

Schritt 6: Synchronisation mit externen Systemen wie Airtable

Damit das Vertriebsteam in seiner gewohnten Airtable-Umgebung arbeiten kann, müssen die in Zoho CRM erstellten oder aktualisierten Daten dorthin synchronisiert werden. Auch hier ist Zoho Flow oder eine Custom Function im CRM die richtige Wahl.

Ein Workflow in Zoho CRM (ausgelöst bei „Erstellen“ oder „Bearbeiten“ einer Opportunity) kann eine Deluge-Funktion starten, die einen API-Aufruf an Airtable sendet.


// Funktion, um eine Opportunity mit Airtable zu synchronisieren
// opportunityId: ID des Zoho CRM Datensatzes

void syncOpportunityToAirtable(int opportunityId)
{
    // Opportunity-Daten aus Zoho CRM abrufen
    opportunityData = zoho.crm.getRecordById("Opportunities", opportunityId);
    
    // Airtable API-Endpunkt und Authentifizierung
    airtableUrl = "https://api.airtable.com/v0/YOUR_BASE_ID/YOUR_TABLE_NAME";
    headers = Map();
    headers.put("Authorization","Bearer YOUR_AIRTABLE_API_KEY");
    headers.put("Content-Type","application/json");
    
    // Daten für Airtable mappen
    airtableRecord = Map();
    fields = Map();
    fields.put("Opportunity Name", opportunityData.get("Deal_Name"));
    fields.put("Stage", opportunityData.get("Stage"));
    fields.put("Amount", opportunityData.get("Amount"));
    fields.put("Zoho CRM ID", opportunityData.get("id")); // Wichtig für Updates!
    airtableRecord.put("fields", fields);
    
    // API-Aufruf an Airtable senden
    response = invokeurl
    [
        url :airtableUrl
        type :POST
        headers:headers
        parameters:airtableRecord.toString()
    ];
    
    info response; // Für Debugging-Zwecke
}

Wichtig: Speichere immer die Zoho CRM ID im externen System, um Datensätze später eindeutig identifizieren und aktualisieren zu können, anstatt Duplikate zu erzeugen.

Tipps und Best Practices

  • Saubere API-Namen verwenden: Achte darauf, in Zoho CRM bei Picklist-Feldern nicht nur die Anzeigenamen, sondern auch saubere, unveränderliche API-Namen zu hinterlegen. Das macht Deine Deluge-Skripte robuster gegenüber späteren Änderungen der Anzeigenamen.
  • Verlaufsverfolgung aktivieren: Aktiviere in Zoho CRM die „Stage History“ für Opportunities. So kannst Du später exakt auswerten, wie lange eine Opportunity in welcher Phase des Verkaufsprozesses verweilt hat – eine Goldgrube für Prozessoptimierungen.
  • Spezialfall Messe-Leads: Für Messe-Leads kannst Du einen separaten Typeform (oder besser ein Zoho Forms Formular) erstellen, das direkt die ID des zuständigen Vertriebsmitarbeiters enthält. Der Workflow kann diesen Lead dann sofort konvertieren und die Begrüßungs-E-Mail aus dem Kontakt-Modul versenden, um den Prozess maximal zu beschleunigen.
  • Skalierbarkeit: Für einfache bis mittlere Komplexität ist Zoho Flow ideal. Wächst Dein Datenvolumen oder die Komplexität der Logik stark an, solltest Du überlegen, die gesamte Middleware auf einer Low-Code-Plattform wie Zoho Creator oder der serverlosen Plattform Zoho Catalyst aufzubauen.
  • Fehler-Logging: Lass Deine Integrationen nicht im Dunkeln scheitern. Implementiere ein Fallback: Wenn ein API-Call fehlschlägt, sende eine Benachrichtigung an einen Admin-Kanal in Zoho Cliq mit den relevanten Daten, damit jemand manuell eingreifen kann.

Fazit

Die Integration von Best-of-Breed-Tools wie Typeform und Airtable mit Deinem Zoho-Ökosystem ist kein Hexenwerk, sondern eine strategische Notwendigkeit für skalierbare Prozesse. Indem Du Zoho CRM als zentrale Datendrehscheibe etablierst und Werkzeuge wie Zoho Flow und Deluge-Skripte geschickt einsetzt, schaffst Du einen automatisierten, transparenten und robusten Lead-Management-Prozess. Du eliminierst manuelle Arbeit, stellst sicher, dass kein Lead verloren geht, und gibst Deinem Vertriebsteam die Informationen, die es braucht – genau dann, wenn es sie braucht. Dies ist ein perfektes Beispiel dafür, wie Zoho nicht als geschlossenes System, sondern als offene und leistungsfähige Plattform agiert, die sich nahtlos in Deine bestehende Tool-Landschaft einfügt und diese optimiert.

Verwendete Zoho Apps in diesem Szenario: Zoho CRM, Zoho Flow, Zoho Cliq.

Erweiterungsmöglichkeiten mit: Zoho Forms, Zoho Analytics, Zoho Creator, Zoho ZeptoMail.