Zoho Analytics Dashboard mit Zoho CRM, People und VoIP-API integrieren: Tutorial

  • Beitrags-Autor:

Vom Datensilo zum zentralen Cockpit: Ein 360-Grad-Dashboard mit Zoho Analytics und externen APIs

In der heutigen Unternehmenslandschaft sind Daten über zahlreiche Tools und Plattformen verstreut. Dein Zoho CRM enthält wertvolle Kundeninformationen, deine Telefonanlage protokolliert jeden Anruf, dein HR-System in Zoho People verwaltet die Anwesenheit deiner Mitarbeiter und vielleicht nutzt du sogar externe Tools wie Trello für das Aufgabenmanagement. Jedes System für sich ist leistungsstark, doch die wahre Stärke entfaltet sich erst, wenn du diese Datenquellen intelligent miteinander verknüpfst. Die Herausforderung besteht darin, aus diesen isolierten Datensilos eine einheitliche, aussagekräftige Sicht zu schaffen – ein zentrales Cockpit, das dir auf einen Blick zeigt, was wirklich in deinem Unternehmen passiert. Genau das werden wir in diesem Artikel umsetzen: ein umfassendes Dashboard in Zoho Analytics, das nicht nur Zoho-interne, sondern auch externe Datenquellen über APIs integriert.

Praxisbeispiel: Die fragmentierte Realität eines Vertriebsteams

Stell dir ein typisches Vertriebsteam vor. Die tägliche Arbeit findet primär im Zoho CRM statt, wo Leads, Deals und Kontakte gepflegt werden. Gleichzeitig wird für die Telefonie eine externe VoIP-Lösung wie Zadarma oder eine selbst gehostete 3CX-Anlage genutzt. Die Anrufprotokolle – wer hat wann wie lange mit wem gesprochen – liegen also in einem völlig separaten System. Zusätzlich erfasst das Team seine An- und Abwesenheiten in Zoho People.

Die Geschäftsführung möchte nun die Performance analysieren, stößt aber auf folgende Probleme:

  • Die reinen Anrufstatistiken aus der Telefonanlage sagen nichts über den Erfolg aus. Wie viele Anrufe führen zu einem neuen Deal im CRM?
  • Interne Anrufe an dreistellige Durchwahlen verfälschen die KPI für die Kundenkommunikation.
  • Es ist unklar, welche Vertriebsmitarbeiter gerade aktiv und erreichbar sind, ohne in Zoho People nachzusehen.
  • Die getrennten Auswertungen für verschiedene Vertriebsbereiche (z.B. Neukunden vs. Partner) machen einen schnellen Gesamtüberblick unmöglich.

Unser Ziel ist es, all diese Informationen in einem einzigen Dashboard in Zoho Analytics zu bündeln, um datengestützte Entscheidungen zu ermöglichen.

Schritt-für-Schritt Anleitung: Dein 360-Grad-Dashboard in Zoho Analytics

Schritt 1: Die Basis – Zoho CRM-Daten synchronisieren

Das Fundament unseres Dashboards sind die CRM-Daten. Glücklicherweise ist die Anbindung von Zoho CRM an Zoho Analytics denkbar einfach, da es einen nativen Konnektor gibt.

  1. Navigiere in deinem Zoho Analytics Workspace zu „Datenquellen“ und klicke auf „Daten hinzufügen“.
  2. Wähle „Zoho Apps“ und dann „Zoho CRM“.
  3. Authentifiziere dich und wähle die Module aus, die du synchronisieren möchtest (z.B. Leads, Kontakte, Deals, Anrufe).
  4. Lege das Synchronisationsintervall fest (z.B. alle 3 Stunden).

Nach wenigen Minuten stehen dir alle ausgewählten CRM-Daten als Tabellen in Zoho Analytics zur Verfügung.

Schritt 2: Externe Welten verbinden – VoIP-Daten via API integrieren

Jetzt wird es spannend. Wir holen uns die Anrufprotokolle (Call Detail Records, CDRs) von unserem externen VoIP-Anbieter. Fast jeder seriöse Anbieter wie Zadarma, Sipgate, 3CX, Aircall oder JustCall bietet hierfür eine REST-API an. Der Prozess ist konzeptionell immer gleich:

  1. API-Dokumentation studieren: Finde den richtigen Endpunkt, um Anrufprotokolle abzurufen. Achte auf Authentifizierungsmethoden (meist API-Key oder OAuth2) und Parameter (z.B. Datumsbereich).
  2. Daten in Zoho Analytics importieren: Wir nutzen eine Custom Function in Deluge, die per Zoho Flow oder als geplanter Task in Zoho CRM/Creator ausgeführt wird, um die Daten regelmäßig abzurufen und in eine Analytics-Tabelle zu schreiben.

Zuerst erstellst du in Zoho Analytics manuell eine neue Tabelle (z.B. „CallLogs_External“) mit Spalten wie `call_id`, `caller_number`, `destination_number`, `start_time`, `duration`, `status` etc.

Anschließend schreibst du eine Deluge-Funktion, um die Daten abzurufen und in diese Tabelle zu pushen. So könnte ein Beispiel aussehen:

// Deluge Custom Function zum Abrufen von Anrufdaten einer externen API

// Konfiguration
voip_api_key = "DEIN_API_KEY";
voip_api_secret = "DEIN_API_SECRET";
analytics_workspace_owner = "[email protected]";
analytics_workspace_name = "Dein Analytics Workspace";
analytics_table_name = "CallLogs_External";

// Zieldatum (z.B. Daten von gestern abrufen)
yesterday = zoho.currentdate.subDay(1);
start_date_str = yesterday.toString("yyyy-MM-dd") + "T00:00:00";
end_date_str = yesterday.toString("yyyy-MM-dd") + "T23:59:59";

// API-Aufruf an den VoIP-Provider (Beispielhaft)
api_url = "https://api.voipprovider.com/v1/statistics/calls";
headers = Map();
headers.put("api-key", voip_api_key);
headers.put("api-secret", voip_api_secret);

params = Map();
params.put("from", start_date_str);
params.put("to", end_date_str);

try 
{
	response = invokeurl
	[
		url :api_url
		type :GET
		parameters:params
		headers:headers
	];
	
	call_list = response.get("data").get("calls");
	
	// Daten für Zoho Analytics vorbereiten
	rows_to_add = List();
	for each call in call_list
	{
		row_data = Map();
		row_data.put("caller_number", call.get("source"));
		row_data.put("destination_number", call.get("destination"));
		row_data.put("duration_seconds", call.get("duration"));
		row_data.put("call_start_time", call.get("start_time").toTime("yyyy-MM-dd'T'HH:mm:ss").toString("yyyy-MM-dd HH:mm:ss"));
		row_data.put("call_status", call.get("disposition"));
		rows_to_add.add(row_data);
	}
	
	// Daten in Zoho Analytics importieren
	if(rows_to_add.size() > 0)
	{
		config = Map();
		config.put("ZOHO_OUTPUT_DATE_FORMAT", "yyyy-MM-dd HH:mm:ss");
		
		add_response = zoho.analytics.addRow(analytics_workspace_owner, analytics_workspace_name, analytics_table_name, rows_to_add, config);
		info "Datenimport erfolgreich: " + add_response;
	}
}
catch (e)
{
	info "Fehler beim API-Abruf oder Datenimport: " + e;
}

Schritt 3: HR-Daten einfließen lassen – Anwesenheitsstatus aus Zoho People

Um zu sehen, wer gerade arbeitet, zapfen wir die Zoho People API an. Uns interessiert der aktuelle Anwesenheitsstatus. Auch hierfür schreiben wir eine kleine Funktion, die die Daten abruft und in eine dedizierte Tabelle in Analytics schreibt („EmployeeStatus“).

// Deluge Custom Function zum Abrufen des Anwesenheitsstatus aus Zoho People

// Verbindung zu Zoho People (z.B. "zohopeopleconnection") muss eingerichtet sein
analytics_workspace_owner = "[email protected]";
analytics_workspace_name = "Dein Analytics Workspace";
analytics_table_name = "EmployeeStatus";

try
{
	// Lösche alte Status-Daten, um nur den aktuellen Stand zu haben
	clear_response = zoho.analytics.deleteData(analytics_workspace_owner, analytics_workspace_name, analytics_table_name, "1=1");

	// Alle Mitarbeiter abrufen
	employee_response = zoho.people.getRecords("employee");
	employee_list = employee_response.get("response").get("result");

	rows_to_add = List();
	for each employee in employee_list
	{
		employee_id = employee.get("employeeId");
		employee_mail = employee.get("EmailID");
		
		// Anwesenheitsstatus für den heutigen Tag abrufen
		attendance_response = zoho.people.getAttendanceEntries(zoho.currentdate.toString("dd-MMM-yyyy"), employee_id);
		
		status = "Offline"; // Standardwert
		if(attendance_response.get("response").get("result").size() > 0)
		{
			// Prüfe den Status des letzten Eintrags
			last_entry = attendance_response.get("response").get("result").get(0);
			if(last_entry.get("checkOut") == null)
			{
				status = "Online";
			}
		}
		
		row_data = Map();
		row_data.put("Employee_Email", employee_mail);
		row_data.put("Presence_Status", status);
		row_data.put("Last_Updated", zoho.currenttime);
		rows_to_add.add(row_data);
	}
	
	// Daten in Zoho Analytics importieren
	if(rows_to_add.size() > 0)
	{
		add_response = zoho.analytics.addRow(analytics_workspace_owner, analytics_workspace_name, analytics_table_name, rows_to_add);
		info "Status-Update erfolgreich: " + add_response;
	}
}
catch (e)
{
	info "Fehler beim Abrufen des Zoho People Status: " + e;
}

Schritt 4: Die Daten bereinigen und veredeln

Rohdaten sind selten perfekt. In unserem Beispiel wollen wir interne Anrufe ausschließen. In Zoho Analytics geht das am besten über eine „Query Table“. Das ist eine virtuelle Tabelle, die auf einer SQL-Abfrage basiert.

Navigiere zu „Erstellen“ -> „Query Table“ und gib eine SQL-Abfrage ein, die alle Anrufe filtert, bei denen die Zielnummer weniger als vier Ziffern hat (oder ein anderes Kriterium für interne Anrufe).

SELECT
    *
FROM
    "CallLogs_External"
WHERE
    LENGTH("destination_number") > 3

Diese neue Tabelle „Filtered_CallLogs“ verwendest du nun für alle weiteren Auswertungen.

Schritt 5: Die Visualisierung – KPIs und Widgets erstellen

Jetzt kommt der kreative Teil. Mit den aufbereiteten Daten kannst du dein Dashboard bauen:

  • KPI-Widgets: Erstelle Kennzahlen wie „Anzahl Anrufe (Heute)“, „Gesamtsprechdauer (Gestern)“, „Anzahl aktiver Mitarbeiter“.
  • Call Ranking: Erstelle einen Balken-Chart, der die Anzahl der Anrufe pro Mitarbeiter anzeigt. Du kannst die Daten aus verschiedenen Quellen (z.B. „Delegate Sales“ und „Partner Sales“) in einem einzigen Bericht zusammenfassen, indem du eine gemeinsame Dimension (z.B. den Mitarbeiter) nutzt und die Metriken summierst.
  • Anwesenheitsübersicht: Eine Pivot-Tabelle, die auf der „EmployeeStatus“-Tabelle basiert und mit einem grünen Punkt für „Online“ und einem roten für „Offline“ anzeigt, wer verfügbar ist.
  • Zielvorgaben: Um eine Ziellinie in einem Diagramm darzustellen (z.B. 50 Anrufe pro Tag), nutze in den Einstellungen des Widgets die Funktion „Schwellenwert“ (Threshold).

Tipps und Best Practices

  • API-Keys sicher verwalten: Speichere sensible Daten wie API-Keys niemals direkt im Code. Nutze stattdessen Zoho Vault, um sie sicher zu hinterlegen und per Deluge abzurufen.
  • Rate Limiting beachten: Jede API hat Limits für die Anzahl der Aufrufe pro Minute/Stunde. Stelle sicher, dass deine geplanten Funktionen diese Limits nicht überschreiten.
  • Robustes Fehler-Handling: Umwickle deine API-Aufrufe immer mit einem try...catch-Block. Lass dich bei Fehlern per E-Mail oder Zoho Cliq benachrichtigen, um Probleme schnell zu erkennen.
  • Hardware nicht vergessen: Bei Problemen mit der Gesprächsqualität, wie sie bei VoIP-Lösungen auftreten können, liegt die Ursache nicht immer beim Anbieter. Überprüfe auch deine lokale Netzwerkinfrastruktur. Ein Austausch eines Standard-Telekom-Routers gegen eine leistungsfähigere Lösung wie eine Fritzbox kann Wunder wirken, da diese den VoIP-Datenverkehr priorisieren (QoS – Quality of Service) kann.

Zusätzliche Hinweise: Das Ökosystem weiterdenken

Dieses Dashboard ist nur der Anfang. Du kannst es beliebig erweitern:

  • Projektmanagement: Integriere Daten aus Zoho Projects oder Zoho Sprints, um den Projektfortschritt im Auge zu behalten. Wenn dein Team fest an Trello hängt, kannst du dessen API auf ähnliche Weise anzapfen wie die VoIP-API.
  • Finanzdaten: Verbinde Zoho Books, um Umsatzdaten direkt neben den Vertriebsaktivitäten anzuzeigen. Für die deutsche Buchhaltung ist die DATEV-Schnittstelle von Zoho Books ein entscheidender Vorteil.
  • Benachrichtigungen: Richte in Zoho Analytics Alarme ein, die eine Webhook-URL aufrufen, wenn eine KPI einen bestimmten Schwellenwert über- oder unterschreitet. Dieser Webhook kann eine Nachricht in einem Zoho Cliq-Kanal posten und das Team in Echtzeit informieren.

Fazit

Die wahre Kraft des Zoho-Ökosystems liegt nicht nur in der Leistungsfähigkeit der einzelnen Apps, sondern in ihrer Fähigkeit, nahtlos miteinander und mit der Außenwelt zu kommunizieren. Indem du Zoho Analytics als zentralen Datenhub nutzt und über Deluge-Funktionen externe APIs anbindest, verwandelst du getrennte Informationsinseln in ein mächtiges, zentrales Steuerungsinstrument. Du schaffst Transparenz, identifizierst Engpässe und ermöglichst deinem Team, bessere, datengestützte Entscheidungen zu treffen. Der Aufwand lohnt sich, denn ein klares Bild der Realität ist die beste Grundlage für nachhaltigen Erfolg.


Verwendete Zoho Apps in diesem Szenario: