Salesforce
Wenn Ihr Vertriebsteam in Salesforce arbeitet, hält dieser Adapter Ihre Campingplatz-Gäste dort sichtbar. Jedes Gastprofil wird zu einem Contact, jede Buchung zu einer Opportunity. Änderungen fliessen in beide Richtungen; Konflikte werden protokolliert, ohne den Lauf zu stoppen.
Was Sie damit erhalten
Abschnitt betitelt „Was Sie damit erhalten“- Bidirektionale Synchronisation: CampOne → Salesforce (Push beim Speichern) und Salesforce → CampOne (stündlicher Abruf)
- Idempotent über E-Mail (Contacts) und Buchungsreferenz (Opportunities)
- Konfigurierbare Feld-Zuordnung pro Objekt — Sie entscheiden, welches CampOne-Feld auf welches Salesforce-Feld zeigt
- Konflikt-Protokollierung: Haben beide Seiten dasselbe Feld seit der letzten Synchronisation bearbeitet, gewinnt der jüngste Schreibvorgang; der Konflikt wird trotzdem für Audit-Zwecke festgehalten
- OAuth-Refresh-Token-Verfahren — der Access-Token wird automatisch erneuert; der langlebige Refresh-Token liegt verschlüsselt in CampOne
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“Salesforce ist für die Entwicklung selbstbedienbar:
- Eröffnen Sie unter https://developer.salesforce.com/signup kostenfrei eine Developer-Edition-Org (jeder eindeutige Benutzername funktioniert — z. B.
sie+sf-dev@ihredomain.com). - Gehen Sie in Ihrer Dev-Org zu Setup → External Client App Manager und legen Sie eine neue External Client App mit den OAuth-Scopes
apiundrefresh_tokenan. - Notieren Sie Client ID (Consumer Key) und Client Secret der External Client App.
Für den Produktivbetrieb führt Ihr Kunde (oder Sie in seinem Auftrag) dieselben Schritte in seiner Salesforce-Produktiv-Org durch.
Wichtig: Salesforce blockiert die alten “Connected Apps” inzwischen standardmässig. Neue Integrationen verwenden External Client Apps (ECAs) — genau das erstellt Schritt 2 oben.
Was Sie in CampOne eintragen
Abschnitt betitelt „Was Sie in CampOne eintragen“Einstellungen → Integrationen → Anbieter-Adapter → Salesforce:
| Feld | Beschreibung |
|---|---|
| Umgebung | Sandbox (Developer- bzw. Sandbox-Org) oder Production |
| Instance URL | z. B. https://yourcompany--sandbox.my.salesforce.com |
| Client ID | Consumer Key aus der ECA |
| Client Secret | Consumer Secret aus der ECA |
| Objekt-Zuordnung | JSON-Objekt — die Vorgaben sind sinnvoll, lassen sich aber pro Feld überschreiben |
Klicken Sie auf Speichern und dann auf Über OAuth verbinden. CampOne leitet Sie auf die Autorisierungsseite von Salesforce; nach der Rückkehr ist der Refresh-Token in CampOne hinterlegt und die Verbindung schaltet auf Grün.
Vorgaben für die Feld-Zuordnung
Abschnitt betitelt „Vorgaben für die Feld-Zuordnung“Standardmässig:
{ "guest_to_contact": { "first_name": "FirstName", "last_name": "LastName", "email": "Email", "phone": "Phone", "city": "MailingCity" }, "booking_to_opportunity": { "booking_reference": "Name", "total_price": "Amount", "check_in_date": "CloseDate", "status": "StageName" }}Passen Sie das JSON in der Einstellungskarte an Ihre eigenen Felder an.
Was wann läuft
Abschnitt betitelt „Was wann läuft“- Beim Speichern eines Gastes in CampOne → Push als Contact (sofort).
- Beim Speichern einer Buchung in CampOne → Push als Opportunity (sofort).
- Stündlich → Änderungen aus Salesforce ziehen, pro Feld anwenden, Konflikte protokollieren.
Umgang mit Konflikten
Abschnitt betitelt „Umgang mit Konflikten“Haben beide Seiten zwischen zwei Synchronisationen dasselbe Feld bearbeitet, gewinnt der jüngste Schreibvorgang. Das Integrationsprotokoll hält das betroffene Feld und den übernommenen Wert fest, sodass ein manueller Abgleich rasch möglich ist.
Support-Kontakte
Abschnitt betitelt „Support-Kontakte“- Salesforce-Community / Q&A: https://trailhead.salesforce.com/trailblazer-community
- Dokumentation REST API + Connected Apps: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_oauth_and_connected_apps.htm
Einschränkungen
Abschnitt betitelt „Einschränkungen“- Echtzeit-Push aus Salesforce (Streaming API / Change Data Capture) ist ein Roadmap-Punkt; aktuell läuft der Abruf stündlich.
- Salesforce Outbound Messages (SOAP) sind nicht angebunden — der oben genannte Streaming-Ansatz wird sie ablösen, sobald implementiert.
- Die kostenlose Developer Edition hat API-Aufruf-Limits. Für stark frequentierte Standorte sollte Ihr Kunde die Integration in seiner Produktiv-Org oder in einer Performance-/Unlimited-Sandbox betreiben.