Du betrachtest gerade Zoho CRM, Catalyst und Books: Abrechnungsautomation und Widget-Integration Tutorial

Zoho CRM, Catalyst und Books: Abrechnungsautomation und Widget-Integration Tutorial

  • Beitrags-Autor:

Zoho jenseits der Oberfläche: Wie du mit Catalyst, APIs und Widgets deine Prozesse revolutionierst

Du nutzt Zoho und weißt, wie mächtig die einzelnen Apps sind. Aber was passiert, wenn Standard-Workflows nicht mehr ausreichen? Wenn deine Abrechnungsprozesse zu komplex werden oder du spezialisierte externe Tools nahtlos in deine Oberfläche integrieren möchtest? Genau hier trennt sich die Spreu vom Weizen. Es geht darum, Zoho nicht nur als Ansammlung von Software zu sehen, sondern als offene Plattform, die sich durch APIs, Custom Functions und serverlose Architekturen exakt an deine Bedürfnisse anpassen lässt. In diesem Artikel zeigen wir dir anhand eines konkreten, praxisnahen Beispiels, wie du die Grenzen von Standardkonfigurationen sprengst und eine hochautomatisierte Lösung für komplexe Herausforderungen baust. Wir tauchen tief in den Tech-Stack ein und verbinden Zoho CRM, Zoho Catalyst, Zoho Projects, Zoho Desk und Zoho Books zu einem intelligenten System.

Die Herausforderung aus der Praxis: Komplexe Abrechnung und externe Tools

Stell dir ein typisches IT-Dienstleistungsunternehmen vor. Die tägliche Arbeit findet in verschiedenen Systemen statt: Support-Anfragen werden über Tickets in Zoho Desk abgewickelt, während längerfristige Kundenprojekte in Zoho Projects geplant und die Arbeitszeiten dort erfasst werden. Am Monatsende steht die Abrechnung an – und damit beginnt die manuelle, fehleranfällige Arbeit. Stunden müssen aus beiden Systemen exportiert, konsolidiert und kundenspezifischen Preismodellen zugeordnet werden. Vielleicht gibt es unterschiedliche Stundensätze pro Mitarbeiterrolle, Zuschläge für Nacht- oder Wochenendarbeit und spezielle Pauschalen. Dieser Prozess kostet nicht nur Zeit, sondern birgt auch das Risiko, dass Stunden übersehen oder falsch abgerechnet werden.

Parallel dazu hat das Vertriebsteam ein eigenes, hochspezialisiertes Konfigurationstool entwickelt – eine eigenständige HTML/JavaScript-Anwendung. Mit diesem Tool lassen sich komplexe Angebote, beispielsweise für Firewall-Lösungen oder Cloud-Infrastruktur, inklusive aller Optionen und Upsells kalkulieren. Das Problem: Das Tool existiert außerhalb von Zoho CRM. Angebote werden dort erstellt und die Ergebnisse müssen manuell in den CRM-Deal übertragen werden. Das ist ineffizient und führt zu Datensilos.

Die Kernfrage lautet also: Wie kannst du diese getrennten Prozesse in eine nahtlose, automatisierte und intelligente Systemlandschaft überführen?

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

Wir teilen die Lösung in zwei Hauptteile: Zuerst bauen wir die automatisierte Abrechnung und danach integrieren wir den externen Vertriebs-Konfigurator als Widget in Zoho CRM.

Teil 1: Die automatisierte Abrechnungs-Engine mit Zoho Catalyst

Die naive Herangehensweise wäre, zu versuchen, die gesamte komplexe Abrechnungslogik mit Deluge-Skripten direkt in Zoho CRM abzubilden. Bei komplexen Preisregeln, Feiertagskalendern und der Notwendigkeit, Daten aus mehreren Quellen zu ziehen, stößt man hier schnell an Grenzen. Ein sauberer, skalierbarer Ansatz trennt die Benutzeroberfläche (CRM) von der Geschäftslogik (Backend).

1. Die Datengrundlage im Zoho CRM schaffen

Anstatt eine unübersichtliche Subform im Kundenmodul zu verwenden, erstellen wir ein eigenes Custom-Modul, das wir „Abrechnungspositionen“ nennen. Jede Position repräsentiert eine abrechenbare Leistung für einen Kunden (z.B. „First-Level-Support via Desk“ oder „Projektarbeit für Projekt X“).

  • Warum ein eigenes Modul? Es ist flexibler, kann eigene Ansichten, Workflows und Berechtigungen haben und lässt sich sauberer über die API ansteuern.
  • Wichtige Felder in diesem Modul:
    • Lookup zum Kunden (Account)
    • Abrechnungsart (Picklist: Projekte, Support, Mietgeräte)
    • Referenz (z.B. Projekt-ID aus Zoho Projects)
    • Status des letzten Laufs (z.B. „Erfolgreich“, „Fehlgeschlagen“)
    • Anzahl abgerechneter Stunden (Zahlenfeld, wird von der Automatisierung gefüllt)
    • Link zur letzten Rechnung (URL-Feld, wird von der Automatisierung gefüllt)

Im Kundenmodul fügen wir dann eine „Related List“ hinzu, die alle zugehörigen Abrechnungspositionen anzeigt. So behältst du den Überblick direkt beim Kunden.

2. Die Logik auslagern: Zoho Catalyst als Pro-Code-Backend

Das Herzstück unserer Lösung ist eine serverlose Anwendung auf Zoho Catalyst. Catalyst erlaubt es dir, anspruchsvolle Backend-Logik in Sprachen wie Node.js oder Python zu schreiben, ohne dich um Server-Infrastruktur kümmern zu müssen. Das ist der „Pro-Code“-Ansatz, der maximale Flexibilität bietet.

In Catalyst erstellen wir eine „Cron Function“, also eine geplante Funktion, die beispielsweise jeden Monat am 1. um 02:00 Uhr nachts automatisch ausgeführt wird. Diese Funktion durchläuft die folgenden Schritte:

  1. Alle aktiven Abrechnungspositionen abrufen: Die Funktion startet und holt sich per API-Call alle Datensätze aus unserem Custom-Modul „Abrechnungspositionen“ in Zoho CRM.
  2. Daten aus den Quellen ziehen: Für jede Position fragt die Funktion die APIs von Zoho Projects und Zoho Desk ab, um alle noch nicht abgerechneten Zeiteinträge für den jeweiligen Kunden und das jeweilige Projekt/Thema zu finden.
  3. Preislogik anwenden: Hier liegt die eigentliche Intelligenz. Die Catalyst-Funktion hat Zugriff auf eigene Datentabellen (Catalyst Data Store), in denen komplexe Preisregeln hinterlegt sind: Stundensätze pro Mitarbeiterrolle, Feiertagslisten, Regeln für prozentuale Aufschläge (z.B. +50% für Arbeit nach 20:00 Uhr).
  4. Rechnungsentwurf in Zoho Books erstellen: Nachdem alle Stunden berechnet wurden, verbindet sich die Funktion mit der Zoho Books API. Sie verwendet die in Zoho Books hinterlegten Artikel (z.B. „Dienstleistung: Senior Consultant“), um einen detaillierten Rechnungsentwurf zu erstellen. Wichtig ist hier, auf den einzelnen Rechnungspositionen den Mitarbeiternamen und den genauen Zeitstempel anzugeben, um die Berechnung transparent zu machen.
  5. Feedback-Schleife ins CRM: Zum Schluss schreibt die Funktion die Ergebnisse zurück in den Datensatz der „Abrechnungsposition“ im CRM: Sie aktualisiert den Status, speichert die ID des Rechnungsentwurfs und die Anzahl der abgerechneten Stunden.

Ein vereinfachtes Code-Beispiel (Node.js in Catalyst) für den API-Aufruf an Zoho Projects könnte so aussehen:


// Fiktiver Code zur Veranschaulichung der Logik
const catalyst = require('zcatalyst-sdk-node');
const zcrm = require('zcrm-sdk');

exports.handler = async (cronDetails) => {
    const app = catalyst.initialize();
    
    // 1. Alle Abrechnungspositionen aus dem CRM holen
    const positions = await getBillingPositionsFromCRM();

    for (const pos of positions) {
        if (pos.type === 'Project') {
            // 2. Unberechnete Timelogs aus Zoho Projects abrufen
            const unbilledLogs = await getUnbilledProjectLogs(pos.project_id);
            
            // 3. Preislogik anwenden (komplexe Berechnung hier)
            const invoiceItems = calculateInvoiceItems(unbilledLogs);

            // 4. Rechnungsentwurf in Zoho Books erstellen
            const invoiceId = await createDraftInvoiceInBooks(pos.customer_id, invoiceItems);

            // 5. CRM-Datensatz aktualisieren
            await updateBillingPositionInCRM(pos.id, {
                status: 'Success',
                invoice_link: `https://books.zoho.com/app#/invoices/${invoiceId}`
            });
        }
    }
};

Teil 2: Den externen Konfigurator als Zoho CRM Widget integrieren

Die Integration eines externen Tools ist dank Zoho CRM Widgets überraschend einfach und elegant. Ein Widget ist im Grunde eine Webseite (ein iFrame), die direkt innerhalb einer CRM-Ansicht (z.B. in einem Deal-Datensatz) geladen wird und über eine spezielle JavaScript-Bibliothek mit dem CRM kommunizieren kann.

1. Den Code vorbereiten und hosten

Dein bestehender HTML/CSS/JavaScript-Konfigurator muss auf einem Webserver erreichbar sein. Eine exzellente Option dafür ist wieder Zoho Catalyst, das auch statisches Web-Hosting anbietet. Alternativ kannst du den Code in einem GitHub-Repository verwalten und über Dienste wie GitHub Pages bereitstellen.

2. Die Brücke bauen: Das ZOHO JS SDK

Damit dein Widget mit dem CRM sprechen kann, musst du die Zoho Embedded App SDK Bibliothek in dein HTML einbinden. Damit kannst du Events abfangen (z.B. „die Seite wurde geladen“) und Aktionen ausführen (z.B. „lese Daten aus dem aktuellen Deal“ oder „schreibe einen Wert in das Feld ‚Angebotssumme'“).

Ein einfaches Beispiel, um den Namen des Deals im Widget anzuzeigen:


<!DOCTYPE html>
<html>
<head>
    <title>Mein Konfigurator</title>
    <script src="https://static.zohocdn.com/CRM/SDK/2.0/SDK.js"></script>
</head>
<body>
    <h1>Konfigurator für Deal: <span id="deal-name">...</span></h1>
    
    <script>
    ZOHO.embeddedApp.on("PageLoad", function(data) {
        if (data && data.EntityId) {
            ZOHO.CRM.API.getRecord({
                Entity: data.Entity,
                RecordID: data.EntityId
            })
            .then(function(response) {
                const dealName = response.data[0].Deal_Name;
                document.getElementById("deal-name").innerText = dealName;
            });
        }
    });

    ZOHO.embeddedApp.init();
    </script>
</body>
</html>
3. Das Widget im CRM einrichten

Im Zoho CRM gehst du zu Einstellungen > Entwicklerbereich > Widgets. Hier erstellst du ein neues Widget, gibst ihm einen Namen und trägst die URL ein, unter der dein Konfigurator gehostet wird. Anschließend verknüpfst du das Widget mit einem Modul (z.B. „Deals“) und entscheidest, wie es aufgerufen werden soll – meist als Button oder als Eintrag in der „Related List“. Fertig! Deine Anwender können nun direkt aus einem Deal-Datensatz deinen Konfigurator öffnen, der bereits den Kontext des Deals kennt.

Tipps und Best Practices

  • Deployment-Strategie: Entwickle und teste solche komplexen Lösungen immer in einer Sandbox. Für den Go-Live im Produktivsystem, schalte neue Module oder Widgets zunächst nur für eine kleine Testgruppe (über Profile und Berechtigungen) frei, um den Regelbetrieb nicht zu stören.
  • Monitoring und Fehlerbehandlung: Was passiert, wenn ein API-Aufruf fehlschlägt? Implementiere in deiner Catalyst-Funktion ein robustes Logging und versende im Fehlerfall eine Benachrichtigung an einen Admin-Kanal in Zoho Cliq oder per E-Mail über Zoho ZeptoMail.
  • Proaktive Datenqualität: Nutze Zoho Analytics, um Dashboards zu erstellen, die potenzielle Probleme aufdecken. Ein Report könnte beispielsweise alle Kunden anzeigen, bei denen in den letzten 30 Tagen Zeiteinträge in Projects oder Desk erfasst, aber keine „Abrechnungsposition“ im CRM angelegt wurde. So vermeidest du, dass Leistungen unberechnet bleiben.
  • Versionierung: Verwalte deinen Code für Catalyst-Funktionen und Widgets unbedingt in einem Git-Repository wie GitHub. Das ermöglicht eine saubere Zusammenarbeit im Team und eine nachvollziehbare Entwicklung.

Zusätzliche Hinweise und Möglichkeiten

Diese Architektur ist nur der Anfang. Du könntest sie erweitern:

  • Nutze Zoho Flow für einfachere, begleitende Automatisierungen, z.B. um eine Aufgabe in Zoho Projects zu erstellen, wenn ein Deal eine bestimmte Phase erreicht.
  • Integriere Zoho Sign, um die generierten Rechnungsentwürfe intern zur Freigabe zu versenden, bevor sie an den Kunden gehen.
  • Verknüpfe die Daten mit Zoho People, um die abrechenbaren Stunden der Mitarbeiter für Performance-Analysen zu nutzen.

Fazit: Vom Anwender zum Architekten deiner Prozesse

Dieses Praxisbeispiel zeigt eindrucksvoll, dass Zoho mehr ist als die Summe seiner Teile. Durch die intelligente Kombination von CRM als Frontend, Catalyst als skalierbares Pro-Code-Backend und den mächtigen APIs der einzelnen Fachanwendungen kannst du maßgeschneiderte Lösungen für hochkomplexe Geschäftsprozesse entwickeln. Die Fähigkeit, externe Anwendungen nahtlos als Widgets zu integrieren, hebt die Anpassbarkeit auf ein neues Level.

Der Schlüssel zum Erfolg liegt darin, die richtige Balance zu finden: Nutze die Standardfunktionen, wo sie passen, und weiche auf Werkzeuge wie Catalyst und Custom-Entwicklungen aus, wenn deine Anforderungen die Standardkonfigurationen überschreiten. So baust du ein System, das nicht nur heute funktioniert, sondern auch mit deinem Unternehmen wachsen kann.


Verwendete Zoho-Anwendungen in diesem Lösungsansatz: