Zoho CRM, PHP-API und Deluge für automatisierte Tischreservierung im Event-Management Tutorial

  • Beitrags-Autor:

Effizientes Event-Management: So baust Du eine dynamische Tischreservierungs- und Verfügbarkeitsanzeige mit Zoho und externen APIs

Stell Dir vor, Du organisierst ein großes Event mit Tischreservierungen – vielleicht ein Volksfest, eine Messe-Party oder ein Firmenevent. Die Nachfrage ist hoch, Anfragen kommen über verschiedene Kanäle und Du musst den Überblick über verkaufte und noch verfügbare Tische behalten. Gleichzeitig erwarten Deine Kunden und Partner, wie zum Beispiel Eventagenturen, jederzeit aktuelle Informationen. Klingt stressig? Muss es nicht sein! Mit einer cleveren Kombination aus Zoho-Anwendungen und der Anbindung externer Systeme über APIs und Webhooks kannst Du diesen Prozess erheblich vereinfachen und professionalisieren. Dieser Artikel zeigt Dir, wie Du eine solche Lösung aufbaust, um nicht nur Deine internen Abläufe zu optimieren, sondern auch Deinen Kunden einen echten Mehrwert zu bieten.

Die typische Herausforderung liegt oft in der manuellen Datenpflege, fehlender Echtzeit-Transparenz und der mühsamen Kommunikation von Verfügbarkeiten. Excel-Listen und E-Mail-Pingpong sind fehleranfällig und zeitaufwendig. Ziel ist es, ein zentrales System zu schaffen, das Einkaufs- und Verkaufskontingente verwaltet, Anfragen automatisch verarbeitet und eine Live-Übersicht der freien Plätze bereitstellt – sowohl für Dein Team als auch für Deine Kunden und Partner.

Praxisbeispiel: Von der manuellen Zettelwirtschaft zur automatisierten Tischvergabe

Nehmen wir an, Du handelst mit Tischkontingenten für eine populäre Großveranstaltung. Du kaufst größere Tischblöcke (nennen wir sie „EK-Tische“ für Einkauf) und verkaufst diese entweder komplett oder in kleineren Einheiten („VK-Tische“ für Verkauf) an Endkunden oder Agenturen. Die Herausforderungen sind vielfältig:

  • Manuelle Zuordnung: Kunden senden Anfragen per E-Mail oder rufen an. Du musst dann manuell prüfen, welche Tische verfügbar sind und diese der Anfrage zuordnen.
  • Agenturgeschäft: Große Agenturen buchen regelmäßig für ihre eigenen Kunden. Hier muss klar unterschieden werden, wer der Rechnungsempfänger (Agentur) und wer der tatsächliche Gast (Endkunde der Agentur) ist.
  • Datenkonsistenz: Informationen sind oft auf mehrere Systeme oder Listen verteilt (z.B. Excel für EK-Tische, CRM für Anfragen). Abweichungen sind vorprogrammiert.
  • Kommunikation: Wie informierst Du Kunden schnell und zuverlässig über den Status ihrer Anfrage oder über noch verfügbare Restplätze? Eine ständig aktualisierte Liste wäre Gold wert.
  • Preisgestaltung: Unterschiedliche Kunden oder Agenturen erhalten möglicherweise individuelle Preise oder Gebühren.

Ziel ist es, diesen Prozess mithilfe des Zoho-Ökosystems und gezielten externen Anbindungen zu digitalisieren und zu automatisieren.

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

Wir bauen eine Lösung, die Zoho CRM als zentrale Datenbasis nutzt, ergänzt durch Custom Functions, und eine externe Webanwendung (z.B. eine PHP-Seite oder eine Zoho Catalyst Applikation) zur Anzeige von Live-Verfügbarkeiten.

1. Datenmodell in Zoho CRM definieren

Zuerst benötigst Du passende Module in Deinem Zoho CRM:

  • Anfragen (Leads oder Deals): Hier werden alle Kundenanfragen erfasst. Wichtige Felder: Anfragedatum, gewünschtes Datum/Zelt/Bereich, Anzahl Personen, Status (z.B. „Neu“, „Angebot gesendet“, „Bestätigt“, „Bezahlt“, „Storniert“). Füge ein benutzerdefiniertes Feld „Endkunde“ hinzu, falls die Anfrage über eine Agentur kommt. Das Standardfeld „Firma“ kann dann für die Agentur genutzt werden.
  • EK-Tische (Benutzerdefiniertes Modul „Einkaufstische“): Hier verwaltest Du die von Dir eingekauften Tischkontingente. Wichtige Felder: Tischbezeichnung, Datum, Uhrzeit, Zelt/Bereich, Anzahl Plätze gesamt, Einkaufspreis, Status (z.B. „Verfügbar“, „Teilweise verkauft“, „Ausverkauft“). Ein Feld für Notizen zur Platzierung (z.B. „Box 32“) ist ebenfalls sinnvoll.
  • VK-Tische (Benutzerdefiniertes Modul „Verkaufstische“): Diese Tische entstehen aus den EK-Tischen und repräsentieren die tatsächlich verkaufbaren Einheiten. Wichtige Felder: Bezug zum EK-Tisch (Lookup), Anzahl Plätze, Verkaufspreis, Status (z.B. „Frei“, „Reserviert“, „Verkauft an Anfrage XY“), Verknüpfung zur Anfrage (Lookup).

Die Verknüpfung (Related List) zwischen Anfragen und VK-Tischen sowie zwischen EK-Tischen und VK-Tischen ist hier entscheidend.

2. Automatisches Splitten von EK-Tischen in VK-Tische

Wenn Du einen neuen EK-Tisch anlegst (z.B. ein 80er-Kontingent), sollen daraus automatisch einzelne VK-Tische (z.B. 10 Tische à 8 Plätze oder 80 Einzelplätze, je nach Geschäftsmodell) generiert werden. Dies kannst Du mit einer Custom Function in Zoho CRM (geschrieben in Deluge) oder über Zoho Flow realisieren.

Beispiel Deluge-Code (konzeptionell) für eine Workflow-Regel im Modul „EK-Tische“ (ausgelöst bei Erstellung):

// Annahme: EK_Tisch_Record ist der Datensatz des gerade erstellten EK-Tisches
// Annahme: Anzahl_Plaetze_pro_VK_Tisch ist ein Feld im EK-Tisch oder eine feste Variable
ekTischId = EK_Tisch_Record.get("id");
gesamtPlaetzeEK = EK_Tisch_Record.get("Anzahl_Plaetze_gesamt");
plaetzeProVK = 8; // Beispiel: VK-Tische haben immer 8 Plätze
anzahlVkTische = ceil(gesamtPlaetzeEK / plaetzeProVK); // Aufrunden

for i in range (1, anzahlVkTische + 1)
{
    // Erstelle einen neuen VK-Tisch Datensatz
    vkTischMap = Map();
    vkTischMap.put("Name", EK_Tisch_Record.get("Name") + " - Teil " + i);
    vkTischMap.put("Verknuepfter_EK_Tisch", ekTischId);
    vkTischMap.put("Anzahl_Plaetze", plaetzeProVK);
    vkTischMap.put("Status", "Frei");
    vkTischMap.put("Verkaufspreis", EK_Tisch_Record.get("Standard_Verkaufspreis_pro_Tisch")); // Beispiel
    // Weitere Felder füllen...
    createVkTisch = zoho.crm.createRecord("Verkaufstische", vkTischMap);
    info createVkTisch;
}

Diese Funktion muss an Deine spezifischen Feldnamen und Logik angepasst werden. Wichtig ist, dass die erstellten VK-Tische sauber mit dem Ursprungs-EK-Tisch verknüpft sind.

3. Live-Verfügbarkeitsliste („Was hast du noch?“) erstellen

Das Herzstück für schnelle Auskünfte ist eine Webseite, die in Echtzeit alle verfügbaren VK-Tische anzeigt. Diese kann als einfache PHP-Seite, eine Zoho Sites Seite mit eingebetteten Daten oder eine fortgeschrittenere Zoho Catalyst Serverless Applikation realisiert werden.

Variante mit PHP und Zoho CRM API:

Du erstellst eine PHP-Datei (z.B. `verfuegbare-tische.php`) auf Deinem Webserver. Diese Seite fragt über die Zoho CRM API die Daten der VK-Tische mit Status „Frei“ ab und stellt sie dar.

  1. API-Zugriff einrichten: Generiere einen OAuth2-Token für den Zugriff auf Deine Zoho CRM API. Sichere diesen Token gut! Zoho Vault kann hier helfen.
  2. Datenabfrage per API:

    Du kannst die Records API oder die COQL (CRM Object Query Language) API verwenden, um spezifisch nach VK-Tischen mit dem Status „Frei“ zu filtern.

    Konzeptionelles PHP-Snippet für API-Abruf (vereinfacht):

    <?php
    // ACHTUNG: Dies ist nur ein konzeptionelles Beispiel!
    // Für Produktion: Fehlerbehandlung, sichere Token-Speicherung, Caching etc. implementieren.
    
    $accessToken = "DEIN_ZOHO_CRM_ACCESS_TOKEN";
    $apiUrl = "https://www.zohoapis.de/crm/v2/Verkaufstische/search?criteria=(Status:equals:Frei)"; // Passe Modul-API-Namen an
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Authorization: Zoho-oauthtoken " . $accessToken
    ));
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    $data = json_decode($response, true);
    
    if (isset($data['data']) && !empty($data['data'])) {
        echo "<h1>Verfügbare Tische</h1>";
        echo "<table border='1'><tr><th>Tisch</th><th>Plätze</th><th>Datum</th><th>Preis</th></tr>";
        foreach ($data['data'] as $tisch) {
            // Annahme: Du holst auch verknüpfte EK-Tisch Daten oder hast relevante Infos im VK-Tisch
            $ekTischDetails = getEkTischDetails($tisch['Verknuepfter_EK_Tisch']['id'], $accessToken); // Separate Funktion nötig
            echo "<tr>";
            echo "<td>" . htmlspecialchars($tisch['Name']) . "</td>";
            echo "<td>" . htmlspecialchars($tisch['Anzahl_Plaetze']) . "</td>";
            echo "<td>" . htmlspecialchars($ekTischDetails['Datum']) . " " . htmlspecialchars($ekTischDetails['Zelt_Bereich']) . "</td>"; // Beispiel
            echo "<td>" . htmlspecialchars($tisch['Verkaufspreis']) . " EUR</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p>Aktuell sind leider keine Tische verfügbar oder es gab einen Fehler bei der Abfrage.</p>";
        // Optional: error_log(print_r($data, true));
    }
    
    // Hilfsfunktion (Beispiel), um Details vom verknüpften EK-Tisch zu holen
    function getEkTischDetails($ekTischId, $token) {
        // Implementiere hier einen weiteren API Call zum EK-Tisch Modul
        // ...
        // return ['Datum' => '20.09.2025', 'Zelt_Bereich' => 'Paulaner Festzelt']; // Dummy
        return [];
    }
    ?>
    
  3. Darstellung: Formatiere die abgerufenen Daten ansprechend als HTML-Tabelle oder Liste.

Diese Seite kannst Du intern nutzen oder ausgewählten Partnern und Kunden zur Verfügung stellen. Denkbar wäre auch ein Link für Agenturen, bei dem deren Daten schon vorausgefüllt sind, wenn sie direkt aus der Liste eine Anfrage generieren wollen.

4. Anfragemanagement und dynamische Angebotslinks

Wenn eine Anfrage im Zoho CRM eingeht (z.B. über ein Zoho Form auf Deiner Webseite oder manuell angelegt), ordnest Du die passenden VK-Tische zu. Sobald Tische zugeordnet sind, änderst Du den Status der VK-Tische auf „Reserviert“ oder „Verkauft“ und verknüpfst sie mit der Anfrage.

Für eine professionelle Kundenkommunikation kannst Du dynamische Angebots-/Bestätigungslinks erstellen. Ähnlich der „Was hast du noch?“-Liste, nur dass diese Links spezifisch für eine Anfrage sind und nur die für diesen Kunden relevanten Tische (angebotene oder gekaufte) anzeigen. Die URL könnte einen Parameter mit der Anfrage-ID enthalten (z.B. `meine-event-seite.de/anfrage-details.php?id=ANFRAGE_ID`). Die PHP-Seite würde dann die Details dieser spezifischen Anfrage und der zugehörigen Tische aus dem CRM laden.

5. Automatisierte Kundenkommunikation

Nutze Workflow-Regeln in Zoho CRM, um Deine Kundenkommunikation zu automatisieren:

  • Angebotsversand: Wenn Du einer Anfrage Tische zugeordnet und den Status auf „Angebot gesendet“ gesetzt hast, kann automatisch eine E-Mail mit dem dynamischen Angebotslink versendet werden. Hierfür eignet sich Zoho ZeptoMail für transaktionale Mails oder Zoho Campaigns.
  • Bestellbestätigung: Nach Zahlungseingang (Status „Bezahlt“) erhält der Kunde eine Bestätigungsmail, ebenfalls mit dem Link, der nun die gekauften Tische zeigt.
  • Weitere Informationen: Vor dem Event kannst Du automatisch E-Mails mit Anfahrtsbeschreibungen, Ansprechpartnern vor Ort etc. versenden. Der dynamische Link kann auch diese Informationen aktuell halten.

6. Preisanpassungen

Die Preise für VK-Tische können entweder direkt im VK-Tisch-Datensatz stehen oder dynamisch aus dem EK-Tisch (z.B. Einkaufspreis + Agentur-Fee) berechnet und angezeigt werden. Wenn Du Preisanpassungen im EK-Tisch vornimmst (z.B. eine spezielle „Agentur-Fee“ änderst), sollten sich diese Änderungen im dynamischen Angebotslink widerspiegeln, falls der Preis dort angezeigt wird.

Tipps und Best Practices

  • Datenmigration und -pflege: Der initiale Aufwand, Altdaten (bestehende Verkäufe, Anfragen) sauber ins System zu überführen, ist nicht zu unterschätzen. Hier ist Sorgfalt gefragt. Definiere klare Prozesse für die zukünftige Datenpflege.
  • Datenkonsistenz: Stelle sicher, dass Statusangaben systemweit konsistent sind. Workflows und Validierungsregeln im CRM helfen dabei.
  • API-Limits: Beachte die API-Call-Limits Deines Zoho CRM-Plans, besonders wenn die Verfügbarkeitsliste sehr häufig aufgerufen wird. Implementiere Caching-Mechanismen auf Deiner PHP-Seite, um die API nicht unnötig zu belasten.
  • Sicherheit: Schütze Deine API-Keys und Zugangsdaten sorgfältig. Nutze für sensible Daten Zoho Vault.
  • Benutzerfreundlichkeit: Gestalte die Verfügbarkeitsliste und die dynamischen Kundenlinks übersichtlich und einfach bedienbar.
  • Schrittweise Einführung: Beginne mit den Kernfunktionen und erweitere das System schrittweise. Z.B. erst die reine Anzeige der verfügbaren Tische, später eine direkte Bestellfunktion daraus.
  • Testen, Testen, Testen: Überprüfe alle Funktionen und Automatisierungen gründlich, bevor Du das System live schaltest.
  • Skalierbarkeit: Für sehr hohe Zugriffszahlen auf die Verfügbarkeitsliste oder komplexe Logik ist Zoho Catalyst oft die robustere und skalierbarere Wahl als eine einfache PHP-Seite. Mit Catalyst kannst Du serverseitige Funktionen (in Java, Node.js, Python) erstellen, die direkt mit dem CRM interagieren.

Zusätzliche Hinweise und Erweiterungsmöglichkeiten

Das Zoho-Ökosystem bietet viele weitere Möglichkeiten zur Optimierung:

  • Rechnungsstellung: Integriere Zoho Books oder Zoho Invoice, um aus bestätigten Anfragen direkt Rechnungen zu erstellen.
  • Kundensupport: Binde Zoho Desk ein, um Supportanfragen zu Tickets zu verwalten.
  • Live-Chat: Integriere Zoho SalesIQ auf Deiner Verfügbarkeitsseite oder den Kundenlinks, um direkte Fragen zu beantworten.
  • Marketing: Nutze Zoho Campaigns oder Zoho Marketing Automation für gezielte Werbemaßnahmen basierend auf Kundendaten im CRM.
  • Analysen: Mit Zoho Analytics kannst Du detaillierte Auswertungen über Verkäufe, Auslastung und Kundenverhalten erstellen.
  • Interne Kommunikation: Zoho Cliq kann für Benachrichtigungen bei neuen Anfragen oder wichtigen Statusänderungen im Team genutzt werden.
  • Dokumentenmanagement: Verträge oder Bestätigungen können mit Zoho Sign digital unterzeichnet und in Zoho WorkDrive abgelegt werden.

Fazit

Die manuelle Verwaltung von Tischreservierungen und Verfügbarkeiten für Events kann schnell zu einem Albtraum werden. Durch den geschickten Einsatz von Zoho-Anwendungen, insbesondere Zoho CRM als Herzstück, und der Anbindung an externe Systeme über APIs (z.B. für eine Live-Verfügbarkeitsanzeige per PHP oder Zoho Catalyst), schaffst Du eine leistungsstarke, teilautomatisierte Lösung. Du gewinnst nicht nur intern an Effizienz und Datenqualität, sondern bietest auch Deinen Kunden und Partnern einen deutlich verbesserten Service durch Transparenz und schnelle Reaktionszeiten. Die Investition in die Konzeption und Umsetzung einer solchen Lösung zahlt sich durch reduzierte Fehlerquoten, Zeitersparnis und zufriedenere Kunden schnell aus.

Wichtigste verwendete Zoho Apps in dieser Lösungsidee:

  • Zoho CRM (Kernsystem für Daten und Prozesse)
  • Zoho Flow (optional, für komplexe Automatisierungen zwischen Apps oder mit Deluge-Funktionen im CRM)
  • Zoho Catalyst (optional, für skalierbare Web-Anwendungen und Backend-Logik)
  • Zoho Sites (optional, für die Erstellung der Web-Frontends)
  • Zoho Forms (für Online-Anfrageformulare)
  • Zoho ZeptoMail / Zoho Campaigns (für automatisierte E-Mail-Kommunikation)

Denke daran: Die Zoho-Plattform ist extrem flexibel. Dieser Artikel skizziert einen möglichen Weg – passe ihn an Deine spezifischen Bedürfnisse und Dein Geschäftsmodell an!