Der Data-Warehouse-Export bringt die 50heads-Daten deiner Organisation dorthin, wo dein Datenteam schon arbeitet. Es gibt zwei Wege:

  • Dateien in deinem eigenen Bucket. Jede Stunde, alle sechs Stunden oder täglich schreibt 50heads alles Neue in deinen Bucket bei Amazon S3, Cloudflare R2 oder Google Cloud Storage. Lade die Dateien in Snowflake, BigQuery, Redshift oder jedes andere Data Warehouse.
  • Der Ereignis-Stream. Dein eigener Job oder ein Werkzeug wie Airbyte liest die Ereignisse über die API, Seite für Seite und jedes Mal nur das Neue.

Wir führen den Data-Warehouse-Export schrittweise für Organisationen ein. Wenn du Data-Warehouse-Export unter Einstellungen, dann Organisation nicht siehst, ist er für deine Organisation noch nicht aktiv. Schreib uns, wenn du ihn möchtest.

Was du senden kannst

  • Ereignisse: dieselben Ereignisse, die Webhooks senden. Reservierte, fertige, zu wenig beantwortete, abgebrochene oder abgelehnte Fragen mit ihrer Ergebniszusammenfassung; gekaufte, knappe oder ablaufende Credits; Freigaben; Personen und Teams, die dazukommen oder gehen. Jedes Ereignis hat eine id, einen type, createdAt, updatedAt und seine data. Ereignisse verraten nie, wer geantwortet hat.
  • Audit-Protokoll: wer was in der Organisation getan hat, wie im Audit-Protokoll. Dafür muss das Audit-Protokoll für deine Organisation ebenfalls aktiv sein.

Einen Bucket hinzufügen

Inhaber und Admins eines Teams der Organisation können bis zu fünf Buckets hinzufügen. Hinzufügen, pausieren, Schlüssel ersetzen und löschen brauchen eine frische Bestätigung, dass du es bist. Wähle Bestätige, dass du es bist, wenn du gefragt wirst. Die Bestätigung gilt 10 Minuten.

  1. Erstelle in deinem Cloud-Konto einen Schlüssel, der nur Dateien im Bucket unter dem gewählten Ordner schreiben darf. Für Google Cloud Storage erstellst du einen HMAC-Schlüssel für ein Dienstkonto, für Cloudflare R2 ein R2-API-Token mit Schreibzugriff auf den Bucket.
  2. Geh zu Einstellungen, dann Organisation und wähle Data-Warehouse-Export öffnen.
  3. Gib unter Ziel hinzufügen einen Namen ein und wähle das Ziel: Amazon S3 (mit Region, zum Beispiel eu-west-2), Cloudflare R2 (mit deiner Cloudflare-Konto-ID) oder Google Cloud Storage.
  4. Gib den Bucket und den Ordner ein, zum Beispiel 50heads/.
  5. Wähle, was gesendet wird und wie oft.
  6. Gib die Zugriffsschlüssel-ID und den geheimen Schlüssel ein und wähle Testen und speichern.

Beim Speichern schreiben wir eine kleine Testdatei, _50heads/connection-test.json, in den Ordner. Lehnt der Bucket sie ab, wird nichts gespeichert und die Seite sagt dir, warum. Wir speichern die Schlüssel verschlüsselt und zeigen sie nie wieder an. Der erste Export läuft innerhalb von fünf Minuten.

Was im Bucket landet

Jeder Export schreibt JSON Lines (ein Objekt pro Zeile) und danach ein Manifest:

  • 50heads/events/dt=2026-10-13/<export>-0001.jsonl
  • 50heads/audit/dt=2026-10-13/<export>-0001.jsonl
  • 50heads/manifests/<zeit>-<export>.json

Das Manifest listet jede Datei des Exports mit ihrer Zeilenzahl und einer SHA-256-Prüfsumme. Lade die Dateien, die ein Manifest auflistet. Eine Datei ohne Manifest stammt von einem fehlgeschlagenen Export; ihre Zeilen schreibt der nächste Export noch einmal.

Jeder Export sendet nur, was seit dem letzten erfolgreichen neu ist. Lade nach id, damit ein doppelt ankommendes Ereignis nur einmal bleibt. Parquet-Dateien gibt es noch nicht.

Wenn ein Export fehlschlägt

Die Seite zeigt die letzten Exporte jedes Buckets und den letzten Fehler. Nach drei Fehlschlägen in Folge wird der Bucket als Schlägt fehl markiert, das Audit-Protokoll hält es fest und die Inhaber und Admins der Organisation bekommen eine E-Mail. Wir versuchen es weiter: Der nächste erfolgreiche Export macht dort weiter, wo der letzte erfolgreiche aufgehört hat. Es geht also nichts verloren, solange es innerhalb von 90 Tagen wieder klappt, denn so lange bewahren wir Ereignisse auf.

Mit Verbindung testen prüfst du die Schlüssel, mit Jetzt exportieren startet ein Export innerhalb von fünf Minuten.

Den Ereignis-Stream lesen

Erstelle einen API-Schlüssel mit der Berechtigung events:read oder gib sie einem Dienstkonto.

  • GET /v1/events liest das Konto, zu dem der Schlüssel gehört.
  • GET /v1/organizations/current/events liest alle Teams der Organisation. Dafür brauchst du den Schlüssel eines Organisations-Admins oder ein Dienstkonto.

Die ältesten Ereignisse kommen zuerst. Jede Seite hat einen nextCursor: Schick ihn als cursor für die nächste Seite zurück und heb den letzten auf, um beim nächsten Mal nur Neues zu lesen. Mit since beginnst du stattdessen bei einer Uhrzeit.

Eine Airbyte-Quelle für den Stream liegt in unserem Code-Repository unter packages/airbyte-source-50heads: Importiere ihre manifest.yaml in den Connector Builder von Airbyte. Die ganze API steht in der Entwicklerdokumentation.

Wer was sieht

  • Nur Inhaber und Admins der Organisation sehen die Seite Data-Warehouse-Export.
  • API-Schlüssel und Dienstkonten mit organization:read können den Status jedes Buckets lesen, nie seine Schlüssel, und nichts ändern.
  • Der MCP-Server (das Tool organization, Aktion warehouse) und die Kommandozeile (50heads org warehouse) zeigen denselben Status.