# Afficher la dernière synchronisation avec un CRM externe dans l’admin

> Montrer la date du dernier envoi réussi vers un CRM externe pour rassurer une équipe commerciale, sans reconstruire la synchronisation elle-même.

- Auteur : WordPress Développement
- Publié le : 2022-08-15
- Mis à jour le : 2022-08-15
- Catégorie : Astuces
- URL : https://www.wpmoderne.fr/tips/derniere-synchronisation-crm-externe-admin/

## L’essentiel

- Horodatage enregistré à chaque envoi réussi vers le CRM
- Widget de tableau de bord dédié pour l'équipe commerciale
- Aucune modification de la logique de synchronisation existante

Un tableau de bord commercial sans indicateur de fraîcheur des données, c'est comme un tableau de bord de voiture sans jauge de carburant : les chiffres sont peut-être justes, mais personne ne sait s'ils datent de la dernière minute ou de la semaine passée. C'est exactement le doute qui s'était installé chez une équipe commerciale utilisant un CRM externe — HubSpot, dans ce cas — alimenté automatiquement par les formulaires du site WordPress : les leads arrivaient bien, mais personne ne pouvait dire avec certitude si la synchronisation fonctionnait encore normalement ou si elle était silencieusement cassée depuis plusieurs jours.

La synchronisation elle-même — un appel à l'API HubSpot déclenché à chaque soumission de formulaire — fonctionnait très bien et n'avait pas besoin d'être reconstruite. Ce qui manquait, c'était simplement une trace visible de son dernier succès, consultable sans avoir à ouvrir les journaux serveur.

## Enregistrer un horodatage à chaque envoi réussi

La fonction existante d'envoi vers HubSpot recevait déjà une réponse de l'API à chaque appel. Il suffisait d'exploiter cette réponse pour enregistrer un horodatage en cas de succès, via une simple option WordPress :

```
function wpm_envoyer_lead_hubspot( $donnees_lead ) {
    $reponse = wp_remote_post( 'https://api.hubapi.com/crm/v3/objects/contacts', array(
        'headers' => array( 'Authorization' => 'Bearer ' . WPM_HUBSPOT_TOKEN ),
        'body'    => wp_json_encode( array( 'properties' => $donnees_lead ) ),
    ) );

    if ( ! is_wp_error( $reponse ) && 200 === wp_remote_retrieve_response_code( $reponse ) ) {
        update_option( 'wpm_derniere_sync_hubspot', time() );
        return true;
    }

    update_option( 'wpm_derniere_erreur_sync_hubspot', time() );
    return false;
}
```

Deux options distinctes sont enregistrées : l'une pour le dernier succès, l'autre pour la dernière erreur rencontrée. Cette séparation permet, par exemple, d'afficher un avertissement si une erreur récente est survenue après le dernier succès enregistré — signe qu'un problème est probablement apparu depuis.

## Afficher l'information dans un widget de tableau de bord

> L'essentiel à retenir : Horodatage enregistré à chaque envoi réussi vers le CRM ; Widget de tableau de bord dédié pour l'équipe commerciale ; Aucune modification de la logique de synchronisation existante

```
function wpm_widget_sync_hubspot() {
    $derniere_sync = get_option( 'wpm_derniere_sync_hubspot' );
    $derniere_erreur = get_option( 'wpm_derniere_erreur_sync_hubspot' );

    if ( ! $derniere_sync ) {
        echo '<p>Aucune synchronisation HubSpot enregistrée pour le moment.</p>';
        return;
    }

    printf(
        '<p>Dernière synchronisation réussie : %s</p>',
        esc_html( human_time_diff( $derniere_sync ) . ' avant maintenant' )
    );

    if ( $derniere_erreur && $derniere_erreur > $derniere_sync ) {
        echo '<p style="color:#a94442;">Une erreur est survenue depuis la dernière synchronisation réussie.</p>';
    }
}

add_action( 'wp_dashboard_setup', function() {
    wp_add_dashboard_widget(
        'wpm_sync_hubspot_widget',
        'Synchronisation CRM',
        'wpm_widget_sync_hubspot'
    );
} );
```

La fonction native `human_time_diff()` transforme l'horodatage brut en une phrase lisible (« il y a 12 minutes »), bien plus parlante pour une équipe commerciale qu'un timestamp Unix ou une date au format technique.

## Pourquoi un widget de tableau de bord plutôt qu'une page dédiée

Le tableau de bord d'administration WordPress est l'écran que l'équipe commerciale consultait déjà quotidiennement pour d'autres informations. Ajouter une page séparée dans un sous-menu aurait exigé de leur apprendre un nouveau chemin de navigation, pour une information qu'ils souhaitaient au contraire voir passivement, sans effort de recherche.

- Widget visible dès la connexion à l'administration, sans clic supplémentaire
- Restreint aux rôles commerciaux via `current_user_can()` dans la fonction d'enregistrement du widget
- Aucune information technique brute affichée, seulement une phrase et, le cas échéant, une alerte

## Ce que cet indicateur ne fait pas

Ce widget signale qu'une synchronisation a eu lieu récemment, il ne garantit pas que chaque lead individuel a bien été transmis : un envoi ponctuel en échec, suivi d'un envoi réussi pour un autre lead quelques minutes plus tard, resterait invisible avec ce seul indicateur global. Un suivi lead par lead, avec statut individuel, constituerait une évolution possible mais nettement plus lourde à mettre en place.

## En résumé

Deux options WordPress et un widget de tableau de bord suffisent à transformer une synchronisation CRM invisible en indicateur de confiance consulté quotidiennement par l'équipe commerciale, sans toucher à la logique d'envoi elle-même.
