Outils

Comment automatiser la synchronisation des contacts entre hubspot et airtable sans perdre d'historique

Comment automatiser la synchronisation des contacts entre hubspot et airtable sans perdre d'historique

Si vous avez déjà essayé de synchroniser vos contacts entre HubSpot et Airtable, vous savez que ce n’est pas seulement une question de transférer des emails et des noms. Le vrai défi, c’est de préserver l’historique — activités, notes, propriétés modifiées — tout en gardant une source de vérité fiable. J’ai mis en place plusieurs flux pour des clients et pour Esmertec, et voici ma méthode concrète, étape par étape, pour automatiser cette synchronisation sans perdre l’historique.

Pourquoi l’historique est essentiel

Pour moi, l’historique des interactions (emails envoyés, appels, notes internes) est ce qui transforme une fiche contact en une ressource actionnable. Sans contexte, un enregistrement devient vite inutile : qui a contacté qui, quand et pourquoi disparaît. Conserver cet historique permet :

  • De suivre l’évolution de la relation client.
  • De garder une traçabilité pour les équipes commerciales et support.
  • D’analyser les parcours et automatiser des actions basées sur des événements passés.
  • Choix de la stratégie : source de vérité et direction de la synchronisation

    Avant de coder ou d’installer un outil d’intégration, demandez-vous quelle est la source de vérité. Chez mes clients, c’est souvent HubSpot pour tout ce qui touche CRM et interactions commerciales, et Airtable pour les workflows opérationnels, tableaux synthétiques et rapports personnalisés. Cela implique généralement une synchronisation unidirectionnelle (HubSpot → Airtable) avec des mises à jour ponctuelles dans l’autre sens, mais tout dépend de votre organisation.

    Outils que j’utilise (et pourquoi)

    Plusieurs outils permettent de synchroniser HubSpot et Airtable. Voici ceux que j’ai testés :

  • Zapier — simple à configurer pour des automatisations basiques, mais limite sur la granularité historique et le volume.
  • Make (ex-Integromat) — plus puissant pour les scénarios complexes, gestion des erreurs et transformations de données.
  • n8n — open-source, parfait si vous voulez du contrôle total et héberger vous-même vos workflows.
  • APIs directes — si vous avez une équipe dev, une synchronisation via les APIs de HubSpot et Airtable offre la meilleure flexibilité pour préserver l’historique.
  • Personnellement, j’utilise Make pour des clients sans équipe dev et une implémentation API pour les projets à long terme où l’historique est critique.

    Principe d’architecture que j’applique

    Mon architecture favorite pour ne rien perdre :

  • Stocker les contacts principaux dans HubSpot (source de vérité).
  • Exporter régulièrement (ou via webhook) les événements/activités depuis HubSpot vers une table Airtable “Activités HubSpot”.
  • Maintenir dans Airtable une table “Contacts” qui référence HubSpot via l’ID HubSpot.
  • Ne pas écraser les champs “historique” dans Airtable : appliquer un modèle append-only pour les activités.
  • Mécanique technique — étapes concrètes

    Voici le workflow concret que j’implémente :

  • Configurer les webhooks HubSpot pour envoyer les événements pertinents (création contact, mise à jour, nouvelle note, email envoyé, appel, etc.).
  • Recevoir ces webhooks dans Make / n8n ou votre endpoint et normaliser les données (dates ISO, mapping des champs, IDs).
  • Vérifier si le contact existe dans Airtable via l’ID HubSpot stocké. Si non, créer la fiche contact dans Airtable et renseigner l’ID HubSpot.
  • Créer une nouvelle ligne dans la table “Activités” d’Airtable pour chaque événement reçu (append-only).
  • Mettre à jour les champs synthétiques du contact (statut, score, dernier contact) en fonction de règles métier, sans supprimer les anciennes valeurs — conservez un historique de modifications si nécessaire.
  • Exemple de mapping (table)

    HubSpot Airtable (Contacts) Airtable (Activités) Remarques
    vid (HubSpot ID) hubspot_id hubspot_id Clé d'association; ne jamais régénérer
    firstname / lastname Nom / Prénom Mise à jour si changement
    email Email Vérifier doublons
    last_contacted Dernier contact (synthétique) date_activité Mettre à jour mais conserver l’activité individuelle
    Engagement/notes type, contenu, auteur, date Toujours append

    Conserver l’historique : bonnes pratiques

    Voici les règles que j’applique systématiquement :

  • Append-only pour les activités : chaque événement crée une nouvelle ligne dans une table dédiée. Ne pas remplacer une activité existante, sauf si vous corrigez une erreur majeure avec traçabilité.
  • Garder l’ID HubSpot : stocker l’ID source pour éviter les duplications et pouvoir toujours remonter à HubSpot.
  • Horodatage immuable : conserver la date d’origine fournie par HubSpot et stocker aussi la date de réception. Cela permet d’identifier les retards ou duplications.
  • Versioning léger pour les contacts : si un champ critique change (ex. statut lead), conservez une table “ChangeLog” listant l’ancienne valeur, la nouvelle valeur, l’auteur et la date.
  • Gestion des doublons et conflits

    Les doublons sont la plaie des synchronisations. Voici comment j’évite ou résous les conflits :

  • Dédupliquer à l’import en priorité sur hubspot_id puis email.
  • En cas de conflit de mise à jour (ex. deux systèmes modifient le même champ), appliquer une règle de priorité temporelle ou de source : “HubSpot l’emporte” ou “la modification la plus récente l’emporte”.
  • Notifier manuellement les cas ambigus via une vue Airtable “Conflits” pour revue humaine.
  • Cas concret : restaurer l’historique perdu

    Une fois, un client a écrasé toutes ses activités Airtable avec un import massif. Pour restaurer l’historique, j’ai :

  • Reposé les webhooks pour récupérer les événements depuis HubSpot (HubSpot conserve l’historique des activités tant que les données n’ont pas été supprimées).
  • Rétabli la table des activités en important les événements via l’API en batch (pagination et respect des limites d’API).
  • Ajouté des contrôles pour empêcher les imports futurs d’écraser (ex. mode import read-only pour la table Activités).
  • Surveillance et maintenance

    Une automatisation n’est pas “configurer et oublier”. Voici ce que je surveille :

  • Logs d’échecs (webhooks non délivrés, erreurs API).
  • Délais entre l’événement HubSpot et l’apparition dans Airtable (SLA interne).
  • Taux de duplications ou de conflits sur une période (indicateur de qualité des données).
  • Enfin, n’hésitez pas à commencer petit : synchronisez d’abord les événements essentiels (création de contact, email, note) puis élargissez aux autres types d’échanges. Les premières semaines, restez en mode “surveillance renforcée” pour ajuster les mappings et règles métier. Si vous voulez, je peux vous fournir un checklist prêt à l’emploi pour déployer ce workflow sur Make ou n8n — dites-moi quelle plateforme vous utilisez et je vous envoie un template adapté.

    Vous devriez également consulter les actualités suivante :