NeuSo funktioniert es
Startseite/Tutorials/RevOps-Playbook: Outbound mit API-Schlüsseln, der CLI & CSV automatisieren
Erste Schritte

RevOps-Playbook: Outbound mit API-Schlüsseln, der CLI & CSV automatisieren

Erzeugen Sie eingeschränkte API-Schlüssel, importieren und synchronisieren Sie Kontakte programmatisch, steuern Sie Kampagnen von der CLI aus, binden Sie es in CI/CD ein, und überwachen Sie Schlüsselnutzung und Guthaben-Reichweite — über die REST-API und CSV, die heute verfügbare Oberfläche.

14 Min. Lesezeit·Experte·8 Schritte
  1. 1

    Die automatisierbare Oberfläche abstecken (und was noch nicht geht)

    Was heute live ist: die REST API, die CLI und CSV/JSON-Kontaktimport/-export. Was nicht: Webhooks, CRM-Connectoren (Salesforce, HubSpot, Zoho, Pipedrive) und Slack/Teams/Sheets/Airtable/Notion-Connectoren sind allesamt coming-soon und liefern unsupported_operation, wenn Sie versuchen, sie aufzurufen. Bauen Sie Automatisierung auf der verfügbaren Oberfläche auf — pollen und exportieren Sie über REST/CSV, statt auf einen Connector zu warten.

  2. 2

    Einen Least-Privilege-API-Schlüssel erstellen

    Gehen Sie zu Settings → API und erstellen Sie einen benannten Schlüssel pro Konsument — z. B. ci-contact-sync — mit nur den Scopes, die er benötigt (contacts:read/write, campaigns:read usw.). Der Schlüssel wird einmalig angezeigt; kopieren Sie ihn direkt in einen Secret-Manager. Widerrufen Sie ihn sofort, falls er jemals durchsickert — der Widerruf wirkt unmittelbar. Siehe Create & Manage Developer API Keys.

    Einen Least-Privilege-API-Schlüssel erstellen
  3. 3

    Die CLI installieren und verifizieren

    Installieren Sie die CLI und bestätigen Sie, dass der Schlüssel aufgelöst wird, bevor Sie etwas anderes tun:

    npm install -g @firstsales.io/cli
    export FIRSTSALES_API_KEY="fs_live_..."   # from your secret manager
    firstsales whoami --json
    firstsales doctor
  4. 4

    Kontakte programmatisch aus CSV importieren

    Übertragen Sie einen Batch über einen Importjob mit einem Idempotenz-Schlüssel — die Plattform dedupliziert serverseitig nach E-Mail, sodass ein erneuter Lauf derselben Datei niemanden dupliziert:

    firstsales contact-imports create --org "$ORG_ID" --workspace "$WS_ID" \
      --data-file ./leads.csv \
      --idempotency-key "leads-import-2026-07"
  5. 5

    Kontakte synchron halten — die goldene Schleife

    Automatisierung folgt derselben Schleife wie ein menschlicher Bediener: prüfen, dann gezielt ändern, dann verifizieren. Mit --dry-run vor jedem Schreibvorgang vorschauen, mit einem Idempotenz-Schlüssel ändern, dann erneut lesen, um zu bestätigen:

    firstsales contacts list --org "$ORG_ID" --workspace "$WS_ID" --json
    firstsales contacts update --org "$ORG_ID" --workspace "$WS_ID" \
      --contact "$CONTACT_ID" --data '{"job_title":"VP Sales"}' --dry-run
    firstsales contacts update --org "$ORG_ID" --workspace "$WS_ID" \
      --contact "$CONTACT_ID" --data '{"job_title":"VP Sales"}'
    firstsales contacts get --org "$ORG_ID" --workspace "$WS_ID" --contact "$CONTACT_ID"
  6. 6

    Kampagnen über die CLI oder API steuern

    Listen und lesen Sie Kampagnen über die CLI, oder rufen Sie /api/v1 direkt mit einem Bearer-Token auf, wenn Sie nicht über die CLI gehen möchten:

    firstsales campaigns list --org "$ORG_ID" --workspace "$WS_ID" --json
    
    curl https://api.app.firstsales.io/api/v1/organizations/$ORG_ID/workspaces/$WS_ID/campaigns/$CAMPAIGN_ID/analytics \
      -H "Authorization: Bearer $FIRSTSALES_API_KEY"
  7. 7

    In CI/CD einbinden

    Injizieren Sie den Schlüssel aus dem Secret-Store Ihres CI-Anbieters, hardcoden Sie ihn nie. Starten Sie jeden Job mit whoami, damit ein fehlerhafter Schlüssel schnell scheitert, und sichern Sie echte Schreibvorgänge hinter --dry-run bei PRs gegenüber echten Änderungen auf main ab, mit Idempotenz-Schlüsseln, die aus einer stabilen CI-Variable abgeleitet sind, damit ein wiederholter Pipeline-Schritt ein No-op ist:

    # GitHub Actions
    - name: FirstSales sync
      env:
        FIRSTSALES_API_KEY: ${{ secrets.FIRSTSALES_API_KEY }}
      run: |
        firstsales whoami --json > /dev/null || { echo "auth failed"; exit 1; }
        firstsales contact-imports create --org "$ORG_ID" --workspace "$WS_ID" \
          --data-file ./leads.csv --idempotency-key "import-${GITHUB_SHA}"
  8. 8

    Nutzung und Credit-Reichweite überwachen

    Behalten Sie die API-Schlüssel-Nutzung/Logs unter Settings → API und den Credit-Saldo der Organisation unter Billing im Blick, damit eine automatisierte Pipeline die Organisation nie unbemerkt leerlaufen lässt. Siehe Credits, Plans & Billing und Read Campaign Analytics.

Profi-Tipps

Hart erarbeitete Abkürzungen, damit die Aufwärmung auf Kurs bleibt.

1

Ein gescopter Schlüssel pro Konsument

CI, Ihr Laptop und jede Integration erhalten jeweils einen eigenen benannten Schlüssel — sickert einer durch oder wird ausgemustert, widerrufen Sie nur diesen, nicht alles.

2

Idempotenz-Schlüssel sind kostenlose Absicherung

Jeder automatisierte create trägt --idempotency-key, damit ein wiederholter Pipeline-Schritt ein No-op ist, kein doppelter Datensatz.

3

Nicht gegen coming-soon-Connectoren entwickeln

Webhook-, CRM-, Slack- und Sheets-Connectoren liefern heute unsupported_operation — stattdessen über REST + CSV pollen oder exportieren, statt auf sie zu warten.

4

Prüfen, dry-run, ändern, verifizieren — auch in Skripten

Dieselbe Schleife, die einen menschlichen Bediener schützt, schützt auch einen Agenten. Immer --dry-run vor jedem Schreibvorgang in der Automatisierung, nicht nur interaktiv.

Häufig gestellte Fragen

Was kann ich heute tatsächlich automatisieren?

Die REST API, die CLI und CSV/JSON-Kontaktimport/-export, allesamt authentifiziert mit gescopten Developer-API-Schlüsseln.

Gibt es Webhooks, CRM- oder Slack-Integrationen?

Noch nicht — Webhooks, CRM-Connectoren (Salesforce, HubSpot, Zoho, Pipedrive) und Slack/Teams/Sheets/Airtable/Notion-Connectoren sind coming-soon und liefern unsupported_operation. Bauen Sie keine Automatisierung, die von ihnen abhängt.

Wie importiere ich Kontakte programmatisch?

contact-imports create --data-file mit einer CSV- oder JSON-Datei. Kontakte werden serverseitig nach E-Mail dedupliziert, sodass ein erneuter Lauf desselben Imports sicher ist.

Wie funktioniert die Authentifizierung für CI?

Speichern Sie den Developer-API-Schlüssel im Secret-Store Ihres CI-Anbieters und stellen Sie ihn als FIRSTSALES_API_KEY bereit. Für rohes HTTP senden Sie ihn als Bearer-Token.

Wie vermeide ich doppelte Schreibvorgänge in einer Pipeline?

Übergeben Sie --idempotency-key (oder den Header Idempotency-Key bei rohem HTTP), abgeleitet von einem stabilen Wert wie einem Commit-SHA — ein wiederholter Schritt wird zum No-op statt zum Duplikat.

Wie verhindere ich, dass ein Löschen in CI Daten vernichtet?

Destruktive CLI-Befehle erfordern --confirm — lassen Sie ihn aus jedem Schritt heraus, der nicht löschen sollte, damit ein Cleanup-Job nur bei explizit gesetztem Flag Daten entfernen kann.

Wie behalte ich Nutzung und Credit-Reichweite im Blick?

Prüfen Sie die API-Schlüssel-Nutzung/Logs unter Settings → API und den Credit-Saldo der Organisation unter Billing, damit eine automatisierte Pipeline Ihnen nicht unbemerkt die Credits ausgehen lässt.

CLI oder rohe API?

Die CLI ist ein dünner Wrapper über dieselbe öffentliche /api/v1-Oberfläche. Beides funktioniert — die CLI bietet praktisches Auth-Handling, Idempotenz und JSON-Ausgabe für Skripte und Agenten.

Bereit, das in die Praxis umzusetzen?

Starten Sie Ihre FirstSales-Testphase und richten Sie in wenigen Minuten ein aufgewärmtes, authentifiziertes Postfach ein.

Für 1 $ starten