Le WordPress d'aujourd'hui, décodé pour les développeurs

Extensions

Checklist RGPD avant qu’une extension exporte des données vers un outil tiers

Avant d'envoyer la moindre donnée personnelle hors de l'Union européenne depuis une extension, une série de vérifications concrètes évite bien des déconvenues contractuelles.

Par Clément Hadrot • 20 septembre 2024 • 5 min de lecture • Aucun commentaire
Checklist RGPD avant qu'une extension exporte des données vers un outil tiers

Une extension qui envoie des adresses e-mail, des noms ou des numéros de téléphone vers une API tierce déclenche, techniquement, un transfert de données personnelles. Que ce transfert reste dans l’Union européenne ou en sorte change radicalement les obligations qui pèsent sur l’agence qui livre l’intégration. Trop souvent, cette question n’est posée qu’après coup, quand le client demande où sont hébergées ses données.

Cette checklist s’adresse à une équipe qui développe une intégration sortante — un connecteur vers un service de facturation, un outil d’analyse comportementale ou une plateforme d’e-mailing — et qui doit livrer quelque chose de défendable devant un client ou, le cas échéant, une autorité de contrôle. Elle ne traite pas du stockage local des données : uniquement de ce qui part vers l’extérieur.

Identifier précisément ce qui sort du serveur

Avant d’écrire la moindre ligne d’appel HTTP, dressez la liste exhaustive des champs transmis. Il ne suffit pas de dire « on envoie le formulaire de contact » : il faut lister chaque clé du tableau envoyé, y compris les métadonnées ajoutées automatiquement par certains SDK (adresse IP, user-agent, identifiant de session). Une extension qui utilise wp_remote_post() pour transmettre un tableau construit à la volée doit documenter ce tableau ligne par ligne, pas seulement son intention générale.

  • Champs directement identifiants : nom, prénom, e-mail, téléphone.
  • Champs indirectement identifiants : adresse IP, identifiant de session, empreinte de navigateur.
  • Champs sensibles au sens de l’article 9 du RGPD : santé, origine, opinions — à isoler en priorité.

Vérifier le mécanisme de transfert utilisé par le prestataire tiers

Un transfert hors Union européenne n’est licite que s’il repose sur un mécanisme reconnu : décision d’adéquation de la Commission européenne pour le pays destinataire, clauses contractuelles types (CCT) signées avec le sous-traitant, ou règles d’entreprise contraignantes pour un groupe international. Le simple fait qu’un prestataire affirme être « conforme RGPD » sur sa page marketing ne constitue pas une preuve juridique suffisante : demandez le document contractuel qui encadre le transfert, pas une promesse commerciale.

L'essentiel à retenir : Le transfert hors UE se prépare avant l'écriture du code ; Le consentement et la base légale doivent être documentés ; Un registre des sous-traitants n'est pas optionnel

Documenter la base légale et le consentement

Chaque transfert doit reposer sur une base légale précise : exécution d’un contrat, intérêt légitime documenté, ou consentement explicite. Si votre extension déclenche l’envoi dès la soumission d’un formulaire, la case à cocher de consentement doit exister avant l’appel réseau, pas après. Un piège classique : une case pré-cochée, ou une formulation qui mélange plusieurs finalités dans un seul consentement générique. Le consentement doit être spécifique à chaque finalité de traitement.

if ( empty( $_POST['consentement_transfert'] ) ) {
    return new WP_Error(
        'consentement_manquant',
        'Le consentement au transfert de données est requis avant envoi.'
    );
}
// L'appel sortant n'a lieu qu'après validation explicite.
wp_remote_post( $endpoint, [ 'body' => $donnees_filtrees ] );

Minimiser avant de transmettre

Le principe de minimisation impose de ne transmettre que ce qui est strictement nécessaire à la finalité annoncée. Concrètement, cela veut dire filtrer le tableau de données juste avant l’appel réseau, plutôt que de transmettre l’objet complet récupéré depuis la base. Une fonction dédiée, appelée systématiquement avant tout envoi, évite qu’un futur ajout de champ ne parte accidentellement vers le tiers :

function preparer_export_minimal( array $donnees ) : array {
    $champs_autorises = [ 'email', 'prenom', 'date_inscription' ];
    return array_intersect_key( $donnees, array_flip( $champs_autorises ) );
}

Tenir à jour le registre des sous-traitants

Chaque service tiers destinataire de données doit apparaître dans le registre des activités de traitement du client, avec la finalité, la nature des données, la durée de conservation et le mécanisme de transfert. Ce registre n’est pas un document théorique : en cas de contrôle, c’est la première pièce demandée. Une agence qui livre l’intégration a intérêt à fournir une fiche synthétique au client au moment de la mise en production, plutôt que de laisser cette tâche à sa charge une fois le projet clos.

Point de contrôlePreuve attendue
Mécanisme de transfertClauses contractuelles types signées ou décision d’adéquation citée
Base légaleCase de consentement horodatée ou contrat identifié
MinimisationListe des champs effectivement transmis, à jour
Durée de conservationPolitique de purge documentée côté tiers

Prévoir le droit à l’effacement en aval

Une donnée transmise à un tiers reste soumise au droit à l’effacement. Si un utilisateur exerce ce droit, l’extension doit savoir déclencher, ou au minimum documenter, la demande de suppression correspondante côté prestataire. Un simple champ dans l’interface d’administration listant les services tiers ayant reçu une donnée personnelle donnée facilite grandement cette traçabilité, plutôt que de devoir fouiller le code pour retrouver tous les points d’envoi.

En résumé

Six vérifications suffisent à couvrir l’essentiel : nature exacte des données transmises, mécanisme juridique du transfert, base légale documentée, minimisation effective, registre des sous-traitants à jour, et procédure d’effacement en aval. Aucune de ces étapes ne relève de la sur-qualité : elles correspondent à des obligations concrètes, et leur absence expose directement le client final, pas seulement l’agence qui a écrit le code.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi