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 alswebcal://-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.icsregelmäßig laden (z. B. stündlich percronoder Aufgabenplanung) und in den Serverkalender importieren. Bereichexports: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.icsZapier, 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).
- In der Organisation unter Verwalten → Schnittstellen einen Webhook anlegen: Adresse deines Zaps/Szenarios/Workflows, die gewünschten Ereignisse wählen.
- Das Signaturgeheimnis einmalig kopieren und im Werkzeug ablegen.
- Testen klicken: Der Trigger bekommt ein Ereignis
ping. - Das Ereignis trägt nur Art und Kennung. Füge einen HTTP-Schritt „GET
/ext/events?…“ mit dem KopfAuthorization: Bearer …hinzu und suche den Termin überentityId— 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
Tabellefunction 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#
- Schlüssel mit
events:readundposts:readanlegen (Personenschlüssel genügt in der Basis; ein Organisationsschlüssel ist Premium). - Die API auf dem Server aufrufen (WordPress: kleines Plugin oder Code-Schnipsel mit
wp_remote_get) und das Ergebnis 5–15 Minuten zwischenspeichern. - Die Liste aus
items[].title,startsAt,locationaufbauen. 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-ListeGET /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#
| Ziel | Weg | Stand |
|---|---|---|
| KI-Assistenten (Claude, ChatGPT, eigene Agenten) | MCP-Server | verfügbar |
| Stadtkalender / Ratsinformationssystem | iCal/JSON je Organisation (öffentliche Termine) | verfügbar |
| Ticketing und Anmeldeformulare | Webhook event.created; Teilnehmer-API geplant | teilweise |
| Anmeldung über Microsoft 365 / Google Workspace (OIDC, SCIM) | für Verbände und Kommunen vorgesehen | geplant |
| „Mit CLUP.life verbinden“ (OAuth 2.1) | bisher nur API-Schlüssel | geplant |
