Aller au contenu

Salesforce

Si votre équipe commerciale travaille dans Salesforce, cet adaptateur y maintient la visibilité de vos hôtes de camping. Chaque profil d’hôte devient un Contact ; chaque réservation devient une Opportunité. Les modifications circulent dans les deux sens, les conflits étant journalisés sans interrompre la synchronisation.

  • Synchronisation bidirectionnelle : CampOne → Salesforce (pousse à la sauvegarde) et Salesforce → CampOne (pull horaire)
  • Idempotence sur l’e-mail (Contacts) et la référence de réservation (Opportunités)
  • Mappage de champs configurable par objet — vous décidez quel champ CampOne correspond à quel champ Salesforce
  • Journalisation des conflits : lorsque les deux côtés ont modifié le même champ depuis la dernière synchronisation, c’est la dernière écriture qui gagne, mais le conflit est conservé pour audit
  • Flux OAuth avec refresh token — le jeton d’accès se renouvelle de lui-même ; le refresh token de longue durée reste chiffré dans CampOne

Salesforce est en libre-service pour le développement :

  1. Inscrivez-vous gratuitement à une org Developer Edition sur https://developer.salesforce.com/signup (n’importe quel nom d’utilisateur unique fonctionne — essayez vous+sf-dev@votredomaine.com).
  2. Dans votre org de développement, allez dans Setup → External Client App Manager et créez une nouvelle External Client App avec les scopes OAuth api et refresh_token.
  3. Notez le Client ID (Consumer Key) et le Client Secret de l’External Client App.

Pour la production, votre client (ou vous-même, en son nom) fait de même dans son org Salesforce de production.

Important : Salesforce bloque désormais par défaut les anciennes « Connected Apps ». Les nouvelles intégrations doivent utiliser des External Client Apps (ECAs) — c’est ce que crée l’étape 2 ci-dessus.

Réglages → Intégrations → Adaptateurs fournisseurs → Salesforce :

ChampDescription
EnvironmentSandbox (org développeur / sandbox) ou Production
Instance URLpar ex. https://votreentreprise--sandbox.my.salesforce.com
Client IDConsumer Key de l’ECA
Client SecretConsumer Secret de l’ECA
Object mappingObjet JSON — les valeurs par défaut sont raisonnables ; surcharge possible champ par champ

Cliquez sur Save, puis sur Connect via OAuth. CampOne vous renvoie vers la page d’autorisation Salesforce ; au retour, le refresh token arrive dans CampOne et la connexion passe au vert.

D’origine :

{
"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"
}
}

Modifiez ce JSON dans la carte de réglages pour qu’il colle à vos champs personnalisés.

  • À la sauvegarde d’un hôte dans CampOne → pousse Contact (immédiat).
  • À la sauvegarde d’une réservation dans CampOne → pousse Opportunité (immédiat).
  • Toutes les heures → tire les changements depuis Salesforce, applique champ par champ, journalise les conflits.

Si les deux côtés ont modifié le même champ entre deux synchronisations, c’est l’écriture la plus récente qui l’emporte. Le journal d’intégration consigne le champ en conflit et la valeur conservée, pour qu’une réconciliation manuelle soit rapide.

  • La pousse temps réel depuis Salesforce (Streaming API / Change Data Capture) est un point de feuille de route ; aujourd’hui, le pull tourne toutes les heures.
  • Les Outbound Messages Salesforce (SOAP) ne sont pas câblés — l’approche streaming ci-dessus les remplacera lorsqu’elle sera implémentée.
  • La Developer Edition gratuite a des limites d’appels API. Pour les sites à fort volume, demandez à votre client d’exécuter l’intégration sur son org de production ou sur un sandbox Performance / Unlimited.