SocialHub.AI
Ressources · Centre de développement

Intégration PDV, OMS et ERP

Intégrez vos systèmes existants (point de vente, gestion des commandes et ERP) à la solution de fidélité SocialHub. Configurez un connecteur géré pour SAP, Dynamics 365, Manhattan Active Omni, IBM Sterling ou Salesforce intégré à l'application, ou intégrez tout autre système via le même connecteur géré v2 REST API, authentifié avec une clé de locataire, limité à chaque point de terminaison et audité à chaque appel.

Un API, trois types de système

Chaque intégration ci-dessous est la v2 REST API via HTTPS avec une clé locataire Authorization: Bearer fl_live_…. Utilisez une clé en lecture seule pour le rapprochement et une clé en écriture uniquement lorsque vous attribuez des points ou utilisez des coupons. Pour les plateformes e-commerce (Shopify, Amazon, TikTok Shop), privilégiez les connecteurs de canaux natifs ; ce guide s'adresse aux systèmes qui en sont dépourvus.

Connecteurs gérés

Pour cinq systèmes d'entreprise, l'intégration est entièrement automatisée : configurez une connexion dans Données et intégrations (point de terminaison + identifiants chiffrés), vérifiez-la et effectuez un test à blanc. Chaque connecteur normalise les commandes, les clients et les produits du fournisseur et les achemine via le même API décrit ci-dessous : mêmes étendues, même idempotence, même flux contrôlé. Chaque connecteur est étiqueté selon son niveau de validation.

Salesforce — CRM / OMS

Validé avec des données de test

Commande / Retour / Contact compte / Produit 2 via REST + SOQL Authentification OAuth des identifiants client.

SAP S/4HANA — ERP

Validé avec des données de test

Commande client / partenaire commercial / fiche produit via les services OData A2X ; BTP OAuth.

Dynamics 365 — ERP / CRM

Validé avec des données de test

Dataverse (CE) validé ; Échafaudage Finances & Opérations. Entrez l'ID OAuth.

Manhattan Active Omni — OMS

Validation par le partenaire de conception

Commandes/retours/clients : mappages finalisés par rapport au document de mappage d'interface de votre locataire.

IBM Sterling — OMS

Validation par le partenaire de conception

getOrderList / renvoie via l'enveloppe REST API ; codes d'état configurés sur votre pipeline.

Validé avec des données de test : les correspondances sont construites et vérifiées à partir de l’API publiée par le fournisseur, puis validées et confirmées en environnement réel lors de votre premier déploiement. En cours de validation avec un partenaire de conception : les correspondances sont finalisées pendant l’intégration à partir du document d’intégration de votre locataire. Les systèmes non répertoriés ici s’intègrent directement via l’API ci-dessous.

Enrichissement des données clients et du marketing

Une fonctionnalité distincte de la capture de commandes : connectez la plate-forme sur laquelle résident déjà vos profils clients et Flash enrichit chaque e-mail au moment de l'envoi avec des caractéristiques par destinataire (nom, étape du cycle de vie, attributs personnalisés). Il s'agit d'une recherche par courrier électronique en lecture seule : elle ne crée jamais de membres ni n'expose de données personnelles. Configurez une connexion dans Données et intégrations, et chaque connexion est vérifiée par rapport à vos informations d'identification en direct au moment où vous l'enregistrez.

CDP

Salesforce Cloud de données · Segmentation · Adobe Plateforme d'expérience

CRM

HubSpot · Microsoft Dynamics 365

Marketing

Braze · Klaviyo · Itérable

L'authentification est gérée par chaque fournisseur : une clé API, une clé privée ou des identifiants client OAuth2 (pour OAuth, Flash récupère un nouveau jeton d'accès à chaque exécution, évitant ainsi le stockage d'un jeton persistant). Les identifiants sont chiffrés au repos et ne sont jamais affichés par la suite.

POS

Intégration au point de vente

Le système transforme un achat en points de fidélité en un seul clic : enregistrez la vente comme une commande et SocialHub attribue le statut de membre (par votre externalId, courriel ou memberId) et attribue des points selon les règles d'accumulation propres au programme. Consultez ou créez le compte du membre à l'aide de votre propre clé lorsque nécessaire.

Récompense sur une vente (après la commande)

// One call: post the sale as an order. SocialHub resolves the member, applies the
// program's earn rules (tier multiplier + daily cap) and records the order — you
// don't compute points. The member is resolved by memberId > externalId > email.
POST https://flash.socialhub.ai/api/v2/orders
Authorization: Bearer fl_live_…
Idempotency-Key: pos-90871            // safe retries — one sale never awards twice
Content-Type: application/json
{
  "externalOrderId": "90871",
  "customer": { "externalId": "POS-CUST-5512" },   // or { "email": "…" } / { "memberId": "…" }
  "totalAmount": 120.00,
  "storeId": "st_…"
}
// → 200  { "data": { "awarded": 6, "balance": 1820, "memberId": "mem_…" } }
// Not a member yet → { "awarded": 0, "reason": "not-a-member" } (never auto-created).

Rechercher ou créer le membre

// Look up a member by your own key or email (exact match), or create one:
GET https://flash.socialhub.ai/api/v2/members?externalId=POS-CUST-5512     // or ?email=ada@acme.com
// → 200  { "data": [ { "id": "mem_…", "externalId": "POS-CUST-5512", … } ], "total": 1 }

POST https://flash.socialhub.ai/api/v2/members      // create/upsert (marketing consent stays OFF)
{ "email": "ada@acme.com", "fullName": "Ada Lovelace", "externalId": "POS-CUST-5512" }
// → 201 created  /  200 existing  (idempotent on externalId)

Utiliser un coupon en caisse

// Cashier scans the member's coupon code → mark it redeemed at the register.
POST https://flash.socialhub.ai/api/v2/coupons/{couponId}/redeem
Authorization: Bearer fl_live_…
// → 200  redeemed
// → 404  coupon not found / already redeemed   (treat as "do not honor")

Relisez le solde, le niveau et les coupons d'un membre avec GET /members/{id}/points, /tier et /coupons pour les afficher en caisse.

OMS

Intégration de la gestion des commandes

Pour les plateformes e-commerce disposant d'un connecteur natif (Shopify, Amazon, TikTok Shop), activez-le et le tour est joué. Pour tout autre système de gestion des commandes, publiez vos événements de commande dans Commandes API — ingérez les récompenses automatiques selon les règles du programme et remboursez les points proportionnellement. Votre OMS gère les appels (aucun webhook entrant n'est nécessaire).

Les commandes gagnent ; récupération des remboursements

// On Shopify / Amazon / TikTok Shop? Use the NATIVE channel connectors (Settings →
// Channels). For any OTHER OMS, your system calls these on its own order events.
//
// order paid / fulfilled  →  ingest (auto-awards by the program's earn rules):
POST https://flash.socialhub.ai/api/v2/orders
Idempotency-Key: SO-44821
{ "externalOrderId": "SO-44821", "customer": { "email": "ada@acme.com" }, "totalAmount": 240.00 }
// → 200 { "data": { "awarded": 12, "memberId": "mem_…" } }
// Same id + a DIFFERENT amount → 409 ORDER_CONFLICT (orders are immutable).

// order returned / refunded  →  proportional points claw-back, idempotent per refund:
POST https://flash.socialhub.ai/api/v2/orders/SO-44821/refund
{ "refundId": "re_1", "reason": "returned 1 item", "amount": 80.00 }   // omit amount = full
// → 200 { "data": { "clawedBack": 4, "balance": 1816 } }

// Backfill / bulk: POST /orders/batch (≤100, 207 Multi-Status, per-item results).

Pas encore membre ? Rendements ingérés attribués : 0 / reason:not-a-member (ne se crée jamais automatiquement). Inscrivez-les avec POST. /members premièrement, lorsque vous souhaitez que la commande soit rentable.

ERP

Intégration ERP et données de référence

Gardez la fidélité alignée sur votre système d'enregistrement dans les deux sens : poussez votre magasin et votre maître de membre (idempotent upsert par votre externalId), puis réconciliez-vous progressivement avec ?updatedSince= afin que chaque synchronisation ne récupère que ce qui a changé.

Poussez le maître du magasin

// Push your store master to SocialHub (upsert by your ERP store code):
POST https://flash.socialhub.ai/api/v2/stores
{ "name": "Downtown Flagship", "externalId": "ERP-STORE-018", "city": "New York" }
// → 201 created  /  200 updated  (idempotent on externalId)
//   PUT /api/v2/stores/{id} updates a known store. GET to reconcile / pull ids.

Poussez les membres et réconciliez progressivement

// Push the member master (idempotent upsert by your externalId; consent OFF unless
// you explicitly opt in). Nightly full re-push is safe — existing members update.
POST https://flash.socialhub.ai/api/v2/members/batch     // ≤100 per call, 207 Multi-Status
{ "members": [ { "email": "ada@acme.com", "fullName": "Ada Lovelace", "externalId": "ERP-7741" } ] }

// Incremental reconcile — only what changed since your last sync:
GET https://flash.socialhub.ai/api/v2/members?updatedSince=2026-06-26T00:00:00Z&limit=200
GET https://flash.socialhub.ai/api/v2/orders?updatedSince=2026-06-26T00:00:00Z       // orders too
// For governed business metrics (GMV, redemption, active members) into BI, query the
// semantic layer over MCP (metrics:read) instead of aggregating raw rows yourself.

Diffusion du catalogue produits (PIM)

// Push your product catalog (idempotent upsert by your own external_id). One
// endpoint takes brands, categories, products, variants and inventory together.
POST https://flash.socialhub.ai/api/v2/catalog/import
{ "source": "erp",
  "brands":     [ { "externalId": "B-AURELIA", "name": "Aurelia" } ],
  "categories": [ { "externalId": "C-RINGS", "name": "Rings" } ],
  "products":   [ { "externalId": "P-9001", "title": "Solitaire Ring",
                    "brandExternalId": "B-AURELIA", "categoryExternalId": "C-RINGS",
                    "descriptionHtml": "<p>18k…</p>",
                    "content": [ { "externalId": "P-9001-spec", "contentType": "spec",
                                   "body": "1.0ct, 18k white gold, GIA" } ] } ],
  "variants":   [ { "externalId": "V-9001-7", "productExternalId": "P-9001",
                    "sku": "AUR-RING-7", "price": 4200 } ],
  "inventory":  [ { "variantSku": "AUR-RING-7", "locationRef": "WH-1", "available": 12 } ] }
// → 200 with per-entity {inserted,updated} + errors[] (a bad row never aborts the batch).
// On Shopify? Products map in automatically — images + rich descriptions included.
// Read back: GET /api/v2/products · /products/{id} · /categories · /brands

Lot ≤ 100/appel (207 résultats multi-statuts, par article) ; respectez la limite de requêtes par clé et effectuez les resynchronisations complètes en dehors des heures de pointe. L’importation du catalogue est gérée par un serveur externe : SocialHub n’enregistre jamais les produits dans votre ERP.

Autorisation, périmètre et sécurité

Clés à portée du locataire

Chaque appel génère une clé fl_live_ associée à une équipe. Les clés ne sont jamais partagées entre les locataires ; créez des clés distinctes par intégration afin de pouvoir en faire tourner une sans affecter les autres.

Paramètres prédéfinis de lecture et d'écriture

Les tâches de rapprochement utilisent une clé en lecture seule. Accordez un droit d'écriture uniquement au chemin PDV/OMS qui attribue des points ou utilise des coupons : principe du moindre privilège par système.

Clé d’idempotence

Envoyez un en-tête Idempotency-Key lors des écritures (les commandes possèdent également leur propre externalOrderId). Un nouvel appel rejoue le résultat initial ; la même clé avec une charge utile différente est rejetée — une vente ne donne jamais lieu à deux récompenses.

Audit par défaut

Chaque appel API est enregistré et visible dans API Clés → Activité récente. Les écritures d'une intégration sont donc toujours traçables jusqu'à une clé.

Référence complète des points de terminaison : REST API · Démarrage rapide · MCP (métriques dans la BI)

Intégrer un système backend ?

Contactez un ingénieur pour toute question concernant votre système de point de vente (POS), votre système de gestion des commandes (OMS) ou votre progiciel de gestion intégré (ERP), l'identité des clients en caisse, la gestion des retours ou les tâches de rapprochement bancaire.

Parlez à l'ingénierie