# DataFirefly Social Connect — Documentation

> Présentation DataFirefly Social Connect ajoute à PrestaShop 8 et 9 trois boutons de connexion sociale (Google, Apple, Facebook) couplés à un tableau de bord analytique complet. Le module ne se…

- Page: <https://www.datafirefly.com/documentation/dfsocialconnect/>
- Langue: fr
- Mis à jour le: 2026-06-28
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dfsocialconnect/index.md), [es](https://www.datafirefly.com/es/documentation/dfsocialconnect/index.md), [de](https://www.datafirefly.com/de/documentation/dfsocialconnect/index.md), [it](https://www.datafirefly.com/it/documentation/dfsocialconnect/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfsocialconnect/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfsocialconnect/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfsocialconnect/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Présentation

DataFirefly Social Connect ajoute à PrestaShop 8 et 9 trois boutons de connexion sociale (Google, Apple, Facebook) couplés à un tableau de bord analytique complet. Le module ne se contente pas d'authentifier : il mesure la conversion, génère automatiquement des bons de bienvenue, alimente votre CRM via un webhook signé, et reste 100% conforme RGPD.

L'objectif est double : **supprimer la friction d'inscription** (un clic au lieu d'un formulaire) et **mesurer l'impact réel** sur votre business (clics, conversions, chiffre d'affaires généré par les clients sociaux).

## Installation

1. Téléchargez l'archive `dfsocialconnect.zip` depuis votre compte client sur datafirefly.com.
2. Dans le back-office PrestaShop, allez dans **Modules > Gestionnaire de modules > Installer un module** et déposez le ZIP.
3. Cliquez sur **Installer**. Le module crée 5 tables (`ps_dfsc_identity`, `ps_dfsc_log`, `ps_dfsc_stats_daily`, `ps_dfsc_button_click`, `ps_dfsc_consent`) et un onglet BO masqué `AdminDfSocialConnect`.
4. Cliquez sur **Configurer**. Vous arrivez sur le tableau de bord vide — les premières données apparaîtront dès qu'un utilisateur cliquera sur un bouton social.

Le module est compatible PrestaShop 8.0.0 à 9.99.99 et PHP 7.4 à 8.3. Aucune dépendance Composer externe n'est requise : un autoloader PSR-4 minimal est inclus.

## Configuration des providers

Chaque provider exige des identifiants OAuth obtenus depuis sa console développeur. Le module affiche l'URL de callback exacte à copier-coller dans chaque console — c'est l'étape la plus importante : la moindre faute de frappe provoque une erreur `redirect_uri_mismatch`.

### Google OAuth2 / OpenID Connect

1. Rendez-vous sur [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials).
2. Créez ou sélectionnez un projet, puis cliquez sur **Créer des identifiants > ID client OAuth 2.0**.
3. Type d'application : **Application Web**.
4. Dans **URI de redirection autorisés**, collez l'URL affichée dans l'onglet "Providers" de la configuration du module (forme : `https://votre-boutique.com/module/dfsocialconnect/callback?provider=google`).
5. Récupérez le **Client ID** et le **Client Secret** et collez-les dans le module.
6. Activez le toggle "Google activé".

### Apple Sign In

1. Rendez-vous sur [https://developer.apple.com/account/resources/identifiers/list](https://developer.apple.com/account/resources/identifiers/list) (compte développeur Apple payant requis).
2. Créez un **Services ID** (et non un App ID). Notez son identifier — c'est votre _Client ID_.
3. Activez **Sign In with Apple** sur ce Services ID, configurez le domaine de votre boutique et collez l'URL de callback affichée par le module (provider=apple) en _Return URL_.
4. Dans **Keys**, créez une nouvelle clé avec **Sign In with Apple** activé. Téléchargez le fichier `.p8` — vous ne pourrez plus jamais le récupérer ensuite.
5. Récupérez votre **Team ID** (en haut à droite de la console Apple), votre **Key ID** (l'identifiant de la clé créée à l'étape 4) et le contenu intégral du fichier .p8 (avec les lignes BEGIN PRIVATE KEY et END PRIVATE KEY).
6. Collez les 4 champs dans la configuration du module (Services ID, Team ID, Key ID, contenu .p8).
7. Activez le toggle "Apple activé".

Le module signe la JWT client_secret en ES256 à la volée et la régénère automatiquement tous les 5 mois (la validité maximale autorisée par Apple est de 6 mois). Vous n'avez aucune rotation manuelle à gérer.

### Facebook Login

1. Rendez-vous sur [https://developers.facebook.com/apps](https://developers.facebook.com/apps).
2. Créez une nouvelle app type **Consommateurs**.
3. Dans la section **Add products**, ajoutez **Facebook Login**.
4. Sous **Facebook Login > Settings**, collez l'URL de callback affichée par le module (provider=facebook) dans _Valid OAuth Redirect URIs_.
5. Récupérez l'**App ID** et l'**App Secret** sous **Settings > Basic** et collez-les dans le module.
6. Activez le toggle "Facebook activé".

Le module utilise l'API Graph v19.0 et active automatiquement `appsecret_proof`, qui empêche le rejeu d'un access token volé en exigeant une signature HMAC du secret de l'app.

## Onglet Comportement

Cet onglet pilote ce qui se passe une fois la connexion sociale aboutie.

- **Auto-link par email vérifié** — si l'email retourné par le provider est marqué comme vérifié _et_ correspond à un compte client existant, le module relie automatiquement le provider à ce compte au lieu d'en créer un nouveau. Recommandé : ON.
- **Importer l'avatar** — télécharge la photo de profil dans `/img/dfsc/avatars/.` (limite 2 Mo, MIME whitelist JPEG/PNG/WebP). Survit à l'expiration des CDN provider.
- **Bon de bienvenue** — pour chaque nouveau compte créé via une connexion sociale, le module crée une CartRule PrestaShop à usage unique au nom du client. Configurez le préfixe (par défaut `WELCOME`), le montant et la durée de validité.
- **Groupe client par provider** — assignez un ID de groupe PrestaShop à chaque provider (Google / Apple / Facebook). Utile pour segmenter vos campagnes marketing par origine.
- **Newsletter opt-in par défaut** — si activé, le client créé est marqué comme abonné à la newsletter (à n'activer que si votre processus inclut un double opt-in conforme RGPD).
- **Rate limiting** — nombre maximum de tentatives par IP sur une fenêtre de 15 minutes. Par défaut : 30 tentatives. Au-delà, l'utilisateur reçoit un message "Trop de tentatives".
- **Rétention des logs** — nombre de jours pendant lesquels conserver les logs bruts (`ps_dfsc_log` et `ps_dfsc_button_click`). Le rollup quotidien (`ps_dfsc_stats_daily`) est conservé indéfiniment et alimente le dashboard.

## Onglet Apparence

Choisissez le rendu visuel des boutons :

- **Style** — 5 variantes : _rounded_ (par défaut, coins 8 px), _pill_ (entièrement arrondi), _square_ (anguleux), _ghost_ (transparent avec bordure), _minimal_ (compact).
- **Mode de libellé** — 3 modes : _Continuer avec X_ (par défaut, neutre), _Se connecter avec X_ (page de login), _S'inscrire avec X_ (page d'inscription).
- **Afficher sur la page de login** et **Afficher sur la page d'inscription** — toggles indépendants.
- **Widget Mon compte** — affiche dans l'espace client une zone "Comptes connectés" permettant de lier ou délier chaque provider à tout moment (exigence RGPD).

## Tableau de bord analytique

Le premier onglet de la configuration agrège les statistiques sur 30 jours glissants par défaut (configurable).

- **4 KPI cards** — Connexions réussies, Clics sur les boutons, Nouveaux clients créés, Échecs.
- **Courbe temporelle** — connexions réussies par jour, segmentées par provider (Google bleu, Apple noir, Facebook bleu Meta).
- **Répartition par provider** — doughnut Chart.js avec le pourcentage de chaque provider.
- **Taux de conversion par provider** — clic vs connexion aboutie. Permet d'identifier un provider mal configuré (taux anormalement bas).
- **Breakdown device et navigateur** — bar chart agrégé sur la fenêtre.
- **Heatmap jour × heure** — grille 7 × 24 en 7 nuances de bleu. Identifiez les pics d'usage pour ajuster vos campagnes.
- **Pénétration sociale** — pourcentage de votre base client qui a au moins un provider lié.
- **Revenu généré par les clients sociaux** — somme des commandes payées des clients créés via une connexion sociale, calculée par JOIN SQL sur `ps_orders`.

## Webhook CRM

Sur chaque connexion réussie ou compte lié, le module peut envoyer une requête HTTP POST à une URL de votre choix, en mode _fire-and-forget_ (le temps de réponse de votre endpoint n'impacte pas le temps de connexion utilisateur).

- **URL du webhook** — endpoint HTTPS recommandé. Make, n8n, Zapier ou votre stack interne.
- **Secret partagé** — utilisé pour signer la payload en HMAC-SHA256. La signature est envoyée dans l'en-tête `X-Dfsc-Signature`. Côté réception, recalculez le HMAC sur le body brut pour valider l'authenticité.

Payload type envoyée :

```
{
  "event": "social_login_success",
  "provider": "google",
  "id_customer": 1234,
  "email": "marie.dupont@example.com",
  "is_new_account": true,
  "ip": "203.0.113.42",
  "timestamp": 1748378400
}
```

## RGPD et consentement

Le module est conçu pour respecter le RGPD _by design_ :

- À chaque connexion sociale, une ligne est insérée dans `ps_dfsc_consent` avec horodatage, IP, user agent et provider — c'est votre audit trail.
- Le widget "Comptes connectés" dans Mon compte permet au client de délier un provider à tout moment.
- La désinstallation du module supprime proprement les 5 tables et toutes les clés de configuration. Les comptes clients restent intacts.
- Aucun secret OAuth n'est jamais transmis en clair : tous les échanges passent par HTTPS et la JWT Apple est signée localement avec votre clé .p8.

## Désinstallation

Depuis **Modules > Gestionnaire de modules**, désinstallez le module. Le processus :

1. Supprime les 5 tables `ps_dfsc_*`.
2. Supprime l'onglet BO `AdminDfSocialConnect`.
3. Supprime toutes les clés de configuration `DFSC_*`.
4. Les liens sociaux des clients sont supprimés mais **les comptes clients et leurs commandes restent intacts**. Les avatars cachés dans `/img/dfsc/avatars/` sont supprimés.

## Dépannage

**Erreur "redirect_uri_mismatch" (Google)** — l'URL collée dans la console Google ne correspond pas exactement à celle affichée par le module. Vérifiez le scheme (https), le domaine (avec ou sans www), et le chemin complet. Aucun caractère de fin (slash, espace).

**Erreur "invalid_client" (Apple)** — votre JWT client_secret est invalide. Causes fréquentes : Team ID ou Key ID incorrect, contenu .p8 tronqué (vérifiez les lignes BEGIN/END PRIVATE KEY), ou Services ID confondu avec App ID.

**Erreur "Invalid OAuth access token signature" (Facebook)** — votre App Secret est faux. Régénérez-le depuis Settings > Basic et collez-le à nouveau.

**"Trop de tentatives, veuillez patienter"** — déclenchement du rate limiter. Soit attendez 15 minutes, soit augmentez le seuil dans Comportement.

**Les statistiques ne montent pas** — vérifiez que `ps_dfsc_button_click` reçoit bien des lignes (un clic en mode incognito doit suffire). Si rien ne s'écrit, le contrôleur front est probablement non joignable : vérifiez vos règles de réécriture URL.

**Le bon de bienvenue n'est pas créé** — vérifiez que la fonction est activée dans Comportement, que le montant et le préfixe sont renseignés, et que le compte client a bien été créé (et non simplement relié à un compte existant — l'auto-link n'émet pas de voucher).
