Skip to content
Docs
BlogZur App

Clockodo ​

Universeller Clockodo Block für Zeiterfassung und Projektverwaltung. Verwalte Zeiteinträge, steuere die Stoppuhr, organisiere Kunden, Projekte und Leistungen, erfasse Abwesenheiten und generiere Berichte — alles in einem Block.

Kategorie: Integrationen & Business | Quelldatei: clockodoBlock.js | Auth: Ja (E-Mail + API Key)


Was kann dieser Block? ​

  • Zeiteinträge auflisten, erstellen, bearbeiten und löschen
  • Stoppuhr starten, stoppen und aktualisieren
  • Kunden und Projekte verwalten (CRUD)
  • Leistungsarten (Services) verwalten
  • Abwesenheiten erfassen (Urlaub, Krankheit, Sonderurlaub)
  • Benutzer auflisten und Details abrufen
  • Benutzerberichte generieren (nach Jahr, Monat, Woche)

Was brauche ich dafür? ​

  • Einen Clockodo-Account (kostenpflichtig, https://www.clockodo.com)
  • API User: Die E-Mail-Adresse deines Clockodo-Benutzers
  • API Key: Aus den Clockodo-Einstellungen unter "API" generieren

So findest du den API Key:

  1. Melde dich bei Clockodo an
  2. Gehe zu Einstellungen → Integrationen → API
  3. Klicke auf API-Schlüssel generieren
  4. Kopiere E-Mail und API Key in die Block-Config

So benutzt du den Block ​

Zeiteinträge von heute anzeigen ​

Prompt: {"operation": "entries_list"}

Ergebnis: Liste aller Zeiteinträge von heute mit Kunde, Projekt, Leistung, Dauer und Beschreibung.

Stoppuhr starten ​

Prompt: {"operation": "clock_start", "customers_id": 123, "services_id": 456, "text": "Meeting mit Kunde"}

Ergebnis: Stoppuhr läuft für den angegebenen Kunden und die Leistung.

Zeiteintrag buchen ​

Prompt: {"operation": "entries_create", "customers_id": 123, "services_id": 456, "time_since": "2026-03-23 09:00:00", "time_until": "2026-03-23 10:30:00", "text": "Projektbesprechung"}

Ergebnis: Neuer Zeiteintrag von 09:00 bis 10:30 erstellt.

Zeiteintrag aus natuerlicher Sprache (Resolver) ​

Prompt: Erstelle einen Zeiteintrag fuer heute von 8-9. Kunde ist Beispiel Metallbau, Dienst ist Administration, nicht rechnungsfaehig.

Ergebnis: Der Block loest zuerst Kunde und Dienst auf (statt direkte IDs zu raten), konvertiert die Zeit aus Europe/Zurich nach UTC-ISO-Format und erstellt danach den Eintrag mit billable: 0.

Wenig tippen (fuer Mitarbeitende) ​

Typischerweise reicht Kunde (Name oder Kurzform) + Zeitfenster. Ohne Datum gilt heute (Europe/Zurich). Ohne Dienst wird Engineering verwendet, sofern im Clockodo-Konto vorhanden.

Beispiele (als input zu entries_create):

  • digitag 8-9
  • 8-9 beispiel metallbau
  • gestern 14-16 kunde beispiel ag
  • 29.04.2026 10-11 beispiel metallbau, dienst administration

Strukturiert (gleicher Block): {"operation":"entries_create","text":"digitag 8-9"}

Alle Kunden auflisten ​

Prompt: {"operation": "customers_list"}

Ergebnis: Liste aller aktiven Kunden mit Name, Nummer und ID.

Kunden suchen (Name oder Teilname, z. B. „digitag“) ​

Die Clockodo-API liefert Kunden seitenweise ohne Textsuche. Für eine echte Suche nutze einen dieser Parameter:

Prompt: {"operation": "customers_list", "search": "digitag"}

Alternativ: query oder customerSearch. Kurze reine Suchbegriffe im Feld input/text (ohne Satz zu Zeiteinträgen) werden ebenfalls als Suche behandelt.

Ergebnis: Liste der bestpassenden Kunden (lokal über alle Seiten, mit Treffer-Scores), z. B. „DigiTAG AG“ bei Eingabe digitag.

Abwesenheit erfassen ​

Prompt: {"operation": "absences_create", "date_since": "2026-04-14", "date_until": "2026-04-18", "type": 1, "note": "Osterferien"}

Ergebnis: Urlaubseintrag für die angegebene Woche erstellt. Typen: 1=Urlaub, 2=Sonderurlaub, 3=Krank.

Benutzerbericht abrufen ​

Prompt: {"operation": "userreports", "year": 2026}

Ergebnis: Übersicht der geleisteten Stunden pro Benutzer für das Jahr 2026.


Alle Funktionen im Überblick ​

FunktionWas passiertBeispiel-Prompt
entries_listZeiteinträge auflisten (Standard: heute){"operation": "entries_list", "time_since": "2026-03-01 00:00:00", "time_until": "2026-03-31 23:59:59"}
entries_getEinzelnen Zeiteintrag abrufen{"operation": "entries_get", "id": 12345}
entries_createNeuen Zeiteintrag erstellen{"operation": "entries_create", "customers_id": 1, "services_id": 2, "time_since": "...", "time_until": "..."}
entries_updateZeiteintrag bearbeiten{"operation": "entries_update", "id": 12345, "text": "Neuer Text"}
entries_deleteZeiteintrag löschen{"operation": "entries_delete", "id": 12345}
clock_getLaufende Stoppuhr abrufen{"operation": "clock_get"}
clock_startStoppuhr starten{"operation": "clock_start", "customers_id": 1, "services_id": 2}
clock_stopStoppuhr stoppen{"operation": "clock_stop", "id": 12345}
clock_updateLaufende Stoppuhr ändern{"operation": "clock_update", "id": 12345, "text": "Update"}
clock_deleteLaufende Stoppuhr verwerfen{"operation": "clock_delete", "id": 12345}
customers_listAlle Kunden auflisten{"operation": "customers_list"}
customers_getEinzelnen Kunden abrufen{"operation": "customers_get", "id": 1}
customers_createNeuen Kunden erstellen{"operation": "customers_create", "name": "Muster AG"}
customers_updateKunden bearbeiten{"operation": "customers_update", "id": 1, "name": "Neuer Name"}
customers_deleteKunden deaktivieren{"operation": "customers_delete", "id": 1}
projects_listAlle Projekte auflisten{"operation": "projects_list"}
projects_getEinzelnes Projekt abrufen{"operation": "projects_get", "id": 1}
projects_createNeues Projekt erstellen{"operation": "projects_create", "name": "Webseite", "customers_id": 1}
projects_updateProjekt bearbeiten{"operation": "projects_update", "id": 1, "name": "Neuer Name"}
projects_deleteProjekt deaktivieren{"operation": "projects_delete", "id": 1}
services_listAlle Leistungen auflisten{"operation": "services_list"}
services_getEinzelne Leistung abrufen{"operation": "services_get", "id": 1}
services_createNeue Leistung erstellen{"operation": "services_create", "name": "Entwicklung"}
services_updateLeistung bearbeiten{"operation": "services_update", "id": 1, "name": "Neuer Name"}
services_deleteLeistung deaktivieren{"operation": "services_delete", "id": 1}
absences_listAbwesenheiten auflisten{"operation": "absences_list", "year": 2026}
absences_getEinzelne Abwesenheit abrufen{"operation": "absences_get", "id": 1}
absences_createAbwesenheit erfassen{"operation": "absences_create", "date_since": "2026-04-14", "date_until": "2026-04-18", "type": 1}
absences_updateAbwesenheit bearbeiten{"operation": "absences_update", "id": 1, "note": "Geändert"}
absences_deleteAbwesenheit löschen{"operation": "absences_delete", "id": 1}
users_listAlle Benutzer auflisten{"operation": "users_list"}
users_getEinzelnen Benutzer abrufen{"operation": "users_get", "id": 1}
userreportsBenutzerberichte generieren{"operation": "userreports", "year": 2026}

Häufige Probleme und Lösungen ​

ProblemLösung
401 UnauthorizedAPI User (E-Mail) und API Key prüfen — beides muss zusammenpassen
403 ForbiddenDein Clockodo-Benutzer hat nicht genügend Rechte für diese Operation
429 Rate LimitedZu viele Anfragen — kurz warten und erneut versuchen
"Pflichtfelder fehlen"Prüfe ob customers_id, services_id, time_since, time_until und billable im Body ankommen (inkl. korrekter paramsJson-Nutzung)
Zeiteinträge leertime_since und time_until prüfen — Format: "YYYY-MM-DD HH:MM:SS"
"customer does not exist or has been archived"Kunde nicht als ID raten: erst Kundenliste laden und customer resolver verwenden (aktive Kunden bevorzugen)
"does not fit ISO 8601 format"Zeiten als UTC mit Z senden (z. B. 2026-04-29T06:00:00Z)
Stoppuhr lässt sich nicht stoppenDu brauchst die ID des laufenden Eintrags — zuerst clock_get ausführen
Abwesenheits-Typ unklar1=Urlaub, 2=Sonderurlaub, 3=Krank, 4=Gleitzeitausgleich, 5=Fortbildung


Technische Details ​

ParameterTypPflichtBeschreibung
operationselectJaAuszuführende Operation (32 verfügbar)
apiUsertextJaE-Mail-Adresse des Clockodo-Benutzers
apiKeypasswordJaAPI Key aus Clockodo Einstellungen
idnumberBedingtID des Eintrags (für get/update/delete)
customers_idnumberBedingtKunden-ID (für entries_create, clock_start, projects_create)
services_idnumberBedingtLeistungs-ID (für entries_create, clock_start)
projects_idnumberNeinProjekt-ID (optional bei Zeiteinträgen)
time_sincetextBedingtStartzeit (Format: "YYYY-MM-DD HH:MM:SS")
time_untiltextBedingtEndzeit (Format: "YYYY-MM-DD HH:MM:SS")
texttextNeinBeschreibung/Notiz
nametextBedingtName (für Kunden/Projekte/Leistungen)
date_sincetextBedingtStartdatum Abwesenheit (Format: "YYYY-MM-DD")
date_untiltextBedingtEnddatum Abwesenheit (Format: "YYYY-MM-DD")
typenumberBedingtAbwesenheits-Typ (1=Urlaub, 2=Sonderurlaub, 3=Krank)
yearnumberNeinJahr für Berichte/Abwesenheiten (Standard: aktuelles Jahr)
pagenumberNeinSeitennummer für Pagination (Standard: 1)
billablenumberNeinVerrechenbar als Integer: 0 (nicht rechnungsfaehig) oder 1 (rechnungsfaehig)
notetextNeinZusätzliche Notiz