Synchroniser ses données client (first party) avec Google Ads et Facebook Ads

Article publié en avril 2022 par Nicolas Chollet

1. Problématique en enjeu

1.1 Objectif

L'objectif de ce projet est le suivant :
  • Importer les données CRM dans BigQuery (c'est à dire tous les leads ou clients de l'entreprise)
  • A partir de ces données, créer des segments d'utilisateurs dans BigQuery
  • Pousser ces segments vers Facebook Ads et Google Ads sous forme d'audiences, afin de diffuser des publicités personnalisées pour chaque groupe.
Dans le cadre de ce projet, nous allons également créer un groupe de contrôle, afin de mesurer l'impact des publicités : ce groupe de contrôle est constitué d'un pourcentage des utilisateurs (15% ici), qui ne seront pas inclus dans les listes d'audience.
💡
💡 Grâce au groupe de contrôle, nous pourrons mesurer l'impact incrémental de la publicité (remarketing), en comparant la performance par rapport au groupe qui va être re-ciblé par la publicité

1.2 Problématique

Nous souhaitons surtout avoir des données :
  • Complètes (d'où l'utilisation du data warehouse dans BigQuery, qui permet d'avoir directement les données first party les plus fiables)
  • Toujours à jour : c'est la raison pour laquelle nous allons automatiser tout le process, et en particulier l'update des segments dans Google Ads et Facebook Ads
Nous ne traiterons pas ici le sujet de la segmentation dans BigQuery, mais plutôt les sujets de "data ingénierie", c'est à dire la manière dont nous allons connecter les tuyaux pour avoir de la donnée fiable, complète et à jour.

1.3 Stack technique

Pour cela, nous allons utiliser :
  • Un compte CRM (Hubspot ici, mais cela peut être Shopify, Salesforce, Marketo, ou n'importe quelle base de donnée contenant des clients, identifiés par leur email (hashé de préférence pour des raisons de sécurité des données)
  • Fivetran comme ETL (pour envoyer la donnée depuis Hubspot vers BigQuery)
  • Google BigQuery pour préparer la donnée
  • Nous allons profiter de cet article pour tester 2 outils de "reverse ETL", à savoir Census et Hightouch. Ces outils permettent de synchroniser les données first party présentent dans le Data Warehouse avec les plate-formes publicitaires et CRMs
💡
💡 Ces outils ont tous une version d'essai. Il est donc possible de reproduire ce tutoriel même si vous n'avez pas accès à tous ces outils
Schématiquement voici le pipeline de donnée :
Image without caption
Bien entendu, cela a réellement un intérêt lorsque les données du Data warehouse proviennent de plusieurs sources (CRM, base produit, transactions, Google Analytics). Mais nous conservons cette partie la plus simple possible, car ce n'est pas le propos de cet article.
Egalement, cela n'a pas de sens d'utiliser à la fois Census et Hightouch sur le même projet. Mais il s'agit d'une démonstration.

2. Quels cas d'usages ?

2.1 Synchroniser des audiences avec FB Ads et Google Ads

Les esprits chagrins me diront que l'on peut nativement connecter Hubspot avec Google Ads et Facebook Ads.
Encore une fois ce n'est qu'un exemple. En effet, le data warehouse peut contenir des données qui proviennent de plusieurs sources :
  • Informations sur le client : zone géographique, porteur ou non de la carte de fidélité, date de la dernière transaction, fréquence des achats
  • Des notions d'affinité du client avec des produits : quelle marque / gamme de produits achète-t-il ? Quel est le niveau de sensibilité à la promotion ? Achète-t-il pour lui ou pour faire des cadeaux...
  • Des informations sur ces dernières actions : quelle page du site a-t-il vu ? A-t-il cliqué sur un lien de Newsletter...
💡
💡 Il est donc possible d'y calculer des segmentations avancées et très précises, et de les maintenir synchronisées en quasi temps réel. Cela permet par exemple de sortir d'une audience de retargeting un client qui vient de convertir.

2.2 Mesurer l'impact de la publicité grâce au groupe de contrôle

Créer un groupe de contrôle, qui ne sera pas envoyé dans les audiences Google Ads et Facebook Ads permet de mesurer réellement l'impact incrémental de la publicité.
En effet, on peut ensuite comparer le taux de réachat, ou la Lifetime Value (LTV) des 2 groupes : ceux qui ont été confrontés à la publicité, et ceux qui ne l'ont pas été.
Illustration : comparaison de la performance du groupe ciblé vs le groupe de contrôle
Illustration : comparaison de la performance du groupe ciblé vs le groupe de contrôle

2.3 Import de conversions offline

L'import de conversons offline (dans Google Ads, dans Facebook Ads, et pourquoi pas dans Google Analytics) permet de prendre en compte les achats qui ne sont pas fait directement en ligne, et de les attribuer à la campagne.
Cela peut être utile essentiellement dans 2 types de cas :
  • Lorsque vous avez un cycle de vente long (prise du lead online, vente offline)
  • Pour mesurer de l'achat magasin dans le cadre d'un dispositif ROPO (Research Online Purchase Offline).
⚠️
⚠️ Attention : cela n'est pas traité dans cet article

2.4 Synchroniser son catalogue produit (Facebook Ads)

Hightouch permet également de synchroniser son catalogue produits en utilisant la Facebook Product Catalog API

3. Exercice pratique : création du pipeline de donnée

3.1 Importer la donnée dans Google BigQuery

Avec un outil comme Fivetran, importer la donnée Hubspot dans BigQuery de manière synchronisée est simple, et le setup sera fait en 1h environ.
Illustration : setup du connecteur Fivetran depuis Hubspot vers BigQuery
Illustration : setup du connecteur Fivetran depuis Hubspot vers BigQuery
Ce sujet est traité en détail ici :
Tutoriel Fivetran : importer ses données dans Big Query
Dans un article précédent, nous avons montré comment créer un identifiant unique permettant de relier un visiteur dans Google Analytics à un lead dans Hubspot ( ). Afin d'en savoir plus, voir ici : Ajouter une transformation qui sera appliquée au moment du chargement :
Tutoriel Fivetran : importer ses données dans Big Query
A ce stade, nous avons dans Google BigQuery la liste de tous les contacts Hubspot, avec tous leurs attributs (client / lead / prospect, inscrits newsletter ou non, lifetime value, date de la dernière visite sur le site, page d'entrée de la dernière visite sur le site, date du dernier email envoyé, etc...)
💡
💡 Bref, tout ce dont vous avez besoin pour faire une bonne segmentation
Illustration : champs disponibles dans la table BigQuery
Illustration : champs disponibles dans la table BigQuery

3.2 Créer les segments utilisateurs et créer un groupe de contrôle dans Google BigQuery

Nous allons maintenant, dans BigQuery
  • Créer les segments (en fonction d'attributs des utilisateurs). Ce point n'est pas traité ici, mais pour notre exemple nous allons prendre simplement le statut du lead (prospect / client / inscrit newsletter)
  • Créer un groupe de contrôle, qui ne sera pas envoyé vers Google Ads et Facebook Ads.
Ce dernier point est très simple, et est expliqué ici :
SQL : Créer un groupe de contrôle dans BigQuery
Par Nicolas le ‣
SQL : Créer un groupe de contrôle dans BigQuery
💡
💡 Ne pas oublier de faire tourner ces requêtes aussi souvent que nécessaire, selon le besoin de fraicheur pour vos données

4. Synchroniser la donnée avec Google Ads (customer list)

Pour Google Ads, nous allons utiliser Census.

4.1 Dans Google Ads

Dans Google Ads, vous devez tout d'abord avoir créé vos audiences, qui sont des "Customer lists".
  • Pour la démonstration, je vais simplement en utiliser deux : une que je vais activer. L'autre au contraire (mon "control group") que je vais exclure des campagnes.
Capture d'écran Google Ads → Audiences
Capture d'écran Google Ads → Audiences
  • Il faut bien penser à récupérer les "List IDs", que nous utiliserons comme base pour réconcilier les données.
  • Et bien entendu, vous pouvez utiliser ces audiences dans des campagnes : en observation, en ciblage (si elles sont suffisamment importantes), et en exclusion

4.2 Dans Census

  • Créer un compte sur Census :
Census | The easiest way to sync your product data
No engineering favors required. Census helps you transform, unify and sync your data. From warehouse to the apps you use.
Census | The easiest way to sync your product data
  • Setuper les connexions : avec BigQuery (la source) / avec Google Ads (la destination).
Capture d'écran Census → Connections
Capture d'écran Census → Connections
  • Ecrire les requêtes (Model) : nous allons écrire les requêtes permettant de sélectionner les segments utilisateurs. Dans la capture d'écran ci-dessous, nous allons sélectionner les contacts faisant partie du groupe de traitement. A noter qu'il est également possible d'utiliser un modèle dbt existant.
Capture d'écran Census → Models
Capture d'écran Census → Models
  • Créer les "Syncs" : c'est à dire fait le matching entre les champs de notre base de donnée, et les champs Google Ads à synchroniser.
Capture d'écran Census → Syncs
Capture d'écran Census → Syncs
A noter que l'on peut aussi peupler les différentes audiences dynamiquement, si on a dans la table BigQuery un champ qui permet d'identifier le nom ou l'ID de l'audience à laquelle appartient la ligne.
  • Il ne reste plus qu'à lancer la synchronisation, et à choisir la période
💡
💡 Et voilà : nous avons maintenant une synchronisation entre mes données CRM, enrichies de données first party dans mon data warehouse, avec mes audiences Facebook
  • Vous pouvez alors utiliser vos audiences dans Google Ads, soit pour du ciblage, soit pour du ciblage lookalike, soit pour de l'exclusion. Bien entendu, il y a des limites de taille et de dépenses. Un compte qui a moins de 50k€ en dépense cumulée par exemple, ne pourra pas utiliser les audiences "customer" pour du ciblage.

5. Synchroniser la donnée avec Facebook Ads (Facebook custom audience)

Une Custom Audience est une fonctionnalité de Facebook Ads qui permet d'envoyer des données utilisateurs et clients (email, adresse, tel), afin de permettre un ciblage publicitaire sur ces personnes, et de créer des audiences similaires à partir de cette liste.
💡
💡 Pour pouvoir synchroniser les audiences avec Facebook Ads, il faut tout d'abord que votre compte soit éligible

5.1 Dans Facebook Ads

Vous devez tout simplement créer autant d'audiences personnalisées (custom audiences) que vous le souhaitez.
A noter que nous pourrons, lors de la synchronisation, envoyer également des données de valeur client (LifeTime Value)
Image without caption

5.2 Dans Hightouch

Nous pourrions très simplement utiliser Census ici. Tout existe déjà : mes connexions, mes "models". Mais pour l'exercice, nous allons le faire avec Hightouch.
  • Créer un compte
Hightouch | Sync your customer data to business tools
Your data warehouse is your source of truth for customer data. Hightouch syncs this data to the tools that your business teams rely on. Try our free plan. No credit card required. Watch Zack sync product data to Hubspot Operational analytics Serve your sales, marketing, and customer success teams a 360˚ view of the customer in the tools they rely on.
Hightouch | Sync your customer data to business tools
  • Connecter sources et destinations : c'est très simple et plutôt fluide
Image without caption
  • Créer son modèle. Là aussi, c'est très simple et on peut utiliser du SQL, ou un modèle dbt
Image without caption
  • Créer le sync : comme sur Census, il suffit de faire le mapping entre les champs. Hightouch peut créer automatiquement les audiences, et "hasher" les informations personnelles avant de les envoyer
Image without caption
💡
💡 Et voilà : les audiences sont disponibles et mises à jour dans Facebook Ads
Image without caption

6. Census ou Hightouch ?

💡
💡  Les deux outils sont quasiment identiques. Les deux fonctionnent très bien.
Hightouch a un environnement global plus développé : nombre de connecteurs, documentation, look and feel. Tout cela donne l'impression d'une plus grande maturité du produit, et est plutôt rassurant. Mais les différences sont minimes.
Les deux outils ont prévu de développer un "segment builder" visuel, qui permettra aux personnes non techniques (qui ne maîtrisent pas le SQL) de créer leur audience, ce que permet déjà FlyWheelSoftware (un autre outil concurrent).
En terme de prix, Census est un peu plus abordable. En particulier, la version gratuite permet de connecter plusieurs destinations, et peut être suffisante pour des cas d'usage simples.

Envie de tester ?

Envoyez moi un email : nicolas@unnest.co et parlons de votre projet !