Zum Inhalt springen
CLUP.life

Entwickler Integrationen

Integrationen: Kalender, Automatisierung, Tabellen, Website, Buchhaltung

CLUP.life mit Kalender-Apps, Zapier, Make, n8n, Excel, Google Sheets, Website, Vereinsverwaltung und Buchhaltung verbinden — mit offenen Bausteinen statt Einzellösungen.

CLUP.life bietet stabile, offene Bausteine (REST, Webhook, iCal, CSV, MCP) statt Fertig-Anbindungen für einzelne Hersteller. Die Brücke zu Zapier, Make, n8n oder Power Automate baut jede Organisation selbst — mit den Anleitungen hier.

Kalender: Google, Outlook, Apple, Nextcloud, Thunderbird#

  • Einfachster Weg (kostenlos): Einstellungen → Kalender-Abo erzeugt einen persönlichen Abo-Link — für alle Termine oder je Verein, Gruppe und Mannschaft —, den jede Kalender-App abonnieren kann. Kalender-Apps können keinen Authorization-Kopf senden, daher ist das der richtige Weg für sie; der Link ist ein geheimes Token und lässt sich jederzeit neu erzeugen. Für Vereinswebsites: Die Terminleitung kann unter Termine → Kalender abonnieren einen öffentlichen Kalender einschalten (/api/v1/calendar-feed/public/<kennung>.ics, nur öffentliche Termine, ohne Personen), den du als webcal://-Link oder in ein Kalender-Modul der Website einträgst. Einzelne Termine gibt es als .ics über „Zu Kalender hinzufügen“.
  • Mit Schlüssel (Skripte, Server): GET /ext/exports/events.ics regelmäßig laden (z. B. stündlich per cron oder Aufgabenplanung) und in den Serverkalender importieren. Bereich exports:read.
curl -H "Authorization: Bearer $CLUP_API_KEY" \
  "https://api.clup.life/api/v1/ext/exports/events.ics?from=2026-11-01T00:00:00Z&to=2027-11-01T00:00:00Z" \
  -o clup-termine.ics

Zapier, Make, n8n, Power Automate, IFTTT#

Ereignis → Aktion („neuer Termin → Nachricht im Vereinschat“) läuft über einen Webhook. Die Gegenstelle ist der Trigger „Catch Hook“ (Zapier), „Custom webhook“ (Make) bzw. der Webhook-Knoten (n8n).

  1. In der Organisation unter Verwalten → Schnittstellen einen Webhook anlegen: Adresse deines Zaps/Szenarios/Workflows, die gewünschten Ereignisse wählen.
  2. Das Signaturgeheimnis einmalig kopieren und im Werkzeug ablegen.
  3. Testen klicken: Der Trigger bekommt ein Ereignis ping.
  4. Das Ereignis trägt nur Art und Kennung. Füge einen HTTP-Schritt „GET /ext/events?…“ mit dem Kopf Authorization: Bearer … hinzu und suche den Termin über entityId — so bleiben Namen und Inhalte unter deiner Kontrolle und den Rechten des Schlüssels.

Aktion in CLUP.life auslösen („neue Tabellenzeile → Aufgabe anlegen“): HTTP-Schritt POST /ext/organizations/<slug>/tasks mit einem Organisationsschlüssel (tasks:write).

Excel und Google Sheets#

CSV-Exporte öffnen sich direkt in Excel (Semikolon, UTF-8 mit BOM). Für aktuelle Daten per Schlüssel:

let
    Schluessel = "clup_k_…",
    Quelle = Web.Contents(
        "https://api.clup.life/api/v1/ext/exports/events.csv",
        [Query = [from = "2026-11-01T00:00:00Z", to = "2027-01-01T00:00:00Z"],
         Headers = [Authorization = "Bearer " & Schluessel]]),
    Tabelle = Csv.Document(Quelle, [Delimiter = ";", Encoding = 65001])
in
    Tabelle
function termineLaden() {
  const schluessel = PropertiesService.getScriptProperties().getProperty('CLUP_API_KEY');
  const antwort = UrlFetchApp.fetch(
    'https://api.clup.life/api/v1/ext/events?from=2026-11-01T00:00:00Z&to=2027-01-01T00:00:00Z',
    { headers: { Authorization: 'Bearer ' + schluessel }, muteHttpExceptions: true });
  if (antwort.getResponseCode() !== 200) throw new Error(antwort.getContentText());
  const zeilen = JSON.parse(antwort.getContentText()).items
    .map((e) => [e.startsAt, e.title, e.location || '', e.organization.name]);
  const blatt = SpreadsheetApp.getActiveSheet();
  blatt.clearContents();
  blatt.getRange(1, 1, 1, 4).setValues([['Beginn', 'Titel', 'Ort', 'Verein']]);
  if (zeilen.length) blatt.getRange(2, 1, zeilen.length, 4).setValues(zeilen);
}

Website und CMS: WordPress, Jimdo, Wix, TYPO3#

  1. Schlüssel mit events:read und posts:read anlegen (Personenschlüssel genügt in der Basis; ein Organisationsschlüssel ist Premium).
  2. Die API auf dem Server aufrufen (WordPress: kleines Plugin oder Code-Schnipsel mit wp_remote_get) und das Ergebnis 5–15 Minuten zwischenspeichern.
  3. Die Liste aus items[].title, startsAt, location aufbauen. Nur Termine, die der Schlüsselinhaber sehen darf, erscheinen; für die öffentliche Website stelle die Termine auf „öffentlich“.

Vereinsverwaltung: Umstieg und Parallelbetrieb#

  • Mitglieder übernehmen: über die Vorbefüllung/CSV-Import in der App (nur Leitung, mit Prüfansicht). Einen Import per API gibt es noch nicht (geplant).
  • Mitglieder abgleichen: GET /ext/exports/organizations/<slug>/members.csv (Leitung, protokolliert) oder die JSON-Liste GET /ext/organizations/<slug>/members. Sie liefern Anzeigename und Rolle — keine E-Mail-Adressen oder Telefonnummern.
  • Newsletter-Tools (Brevo, CleverReach, Mailchimp, rapidmail): bewusst kein Direkt-Sync. Ein automatischer Abgleich von Mitglieder-E-Mails in ein Drittland-Tool ist Auftragsverarbeitung und braucht Einwilligung bzw. einen Vertrag je Verein.

Buchhaltung: DATEV, Lexware, sevDesk#

Finanzdaten sind nicht per Schlüssel erreichbar. Beiträge und Spenden exportiert die Leitung mit Finanzrecht in der App als CSV (mit festem Spaltenformat, Zugriff protokolliert). SEPA- und CAMT-Dateien sind im Zahlungsabgleich der App vorhanden. Ein DATEV-Buchungsstapel (EXTF) ist als Ausbaustufe geplant, aber noch nicht gebaut.

Weitere Anbindungen#

ZielWegStand
KI-Assistenten (Claude, ChatGPT, eigene Agenten)MCP-Serververfügbar
Stadtkalender / RatsinformationssystemiCal/JSON je Organisation (öffentliche Termine)verfügbar
Ticketing und AnmeldeformulareWebhook event.created; Teilnehmer-API geplantteilweise
Anmeldung über Microsoft 365 / Google Workspace (OIDC, SCIM)für Verbände und Kommunen vorgesehengeplant
„Mit CLUP.life verbinden“ (OAuth 2.1)bisher nur API-Schlüsselgeplant
Integrationen: Kalender, Automatisierung, Tabellen, Website, Buchhaltung · CLUP.life