Programiści Integrations
Integrations: calendars, automation, spreadsheets, websites, accounting
Connect CLUP.life to calendar apps, Zapier, Make, n8n, Excel, Google Sheets, your website, club management and accounting — with open building blocks instead of one-off integrations.
Dokumentacja techniczna jest dostępna po niemiecku i angielsku; w Twoim języku pokazujemy wersję angielską.
CLUP.life offers stable, open building blocks (REST, webhook, iCal, CSV, MCP) rather than ready-made connectors for individual vendors. Each organization builds the bridge to Zapier, Make, n8n or Power Automate itself — with the guides here.
Calendars: Google, Outlook, Apple, Nextcloud, Thunderbird#
- Simplest way (free): Settings → Calendar subscription creates a personal subscription link — for all events or per club, group and team — that any calendar app can subscribe to. Calendar apps cannot send an
Authorizationheader, so this is the right path for them; the link is a secret token and can be regenerated at any time. For club websites: event leadership can switch on a public calendar under Events → Subscribe to calendar (/api/v1/calendar-feed/public/<slug>.ics, public events only, without people), which you enter as awebcal://link or in a calendar module of the website. Single events are available as.icsvia “Add to calendar”. - With a key (scripts, servers): fetch
GET /ext/exports/events.icsregularly (e.g. hourly viacronor task scheduler) and import it into your server calendar. Scopeexports: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#
Event → action (“new event → message in the club chat”) runs through a webhook. The receiving end is the “Catch Hook” trigger (Zapier), “Custom webhook” (Make) or the Webhook node (n8n).
- In the organization under Manage → Interfaces create a webhook: the address of your Zap/scenario/workflow, choose the events.
- Copy the signing secret once and store it in your tool.
- Click Test: your trigger receives a
pingevent. - The event carries only type and ID. Add an HTTP step “GET
/ext/events?…” with the headerAuthorization: Bearer …and look the event up byentityId— this keeps names and content under your control and the key’s rights.
Trigger an action in CLUP.life (“new spreadsheet row → create task”): HTTP step POST /ext/organizations/<slug>/tasks with an organization key (tasks:write).
Excel and Google Sheets#
CSV exports open directly in Excel (semicolon, UTF-8 with BOM). For current data with a key:
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 and CMS: WordPress, Jimdo, Wix, TYPO3#
- Create a key with
events:readandposts:read(a personal key is enough in Basic; an organization key is Premium). - Call the API on the server (WordPress: a small plugin or snippet using
wp_remote_get) and cache the result for 5–15 minutes. - Build the list from
items[].title,startsAt,location. Only events the key owner may see appear; for a public website set the events to “public”.
Club management: migration and parallel operation#
- Taking over members: via pre-fill/CSV import in the app (leadership only, with a review step). There is no import via the API yet (planned).
- Reconciling members:
GET /ext/exports/organizations/<slug>/members.csv(leadership, logged) or the JSON listGET /ext/organizations/<slug>/members. They return display name and role — no email addresses or phone numbers. - Newsletter tools (Brevo, CleverReach, Mailchimp, rapidmail): deliberately no direct sync. Automatically syncing member emails into a third-country tool is data processing and needs consent or a contract per club.
Accounting: DATEV, Lexware, sevDesk#
Financial data is not reachable with a key. Leadership with finance rights exports contributions and donations from the app as CSV (fixed column format, access logged). SEPA and CAMT files are available in the app’s payment reconciliation. A DATEV posting batch (EXTF) is planned but not built yet.
Further integrations#
| Goal | Path | Status |
|---|---|---|
| AI assistants (Claude, ChatGPT, own agents) | MCP server | available |
| City calendar / council information system | iCal/JSON per organization (public events) | available |
| Ticketing and registration forms | Webhook event.created; participants API planned | partial |
| Sign-in via Microsoft 365 / Google Workspace (OIDC, SCIM) | planned for associations and municipalities | planned |
| “Connect with CLUP.life” (OAuth 2.1) | API keys only for now | planned |
