Formulaires natifs Meta Lead Ads
Après configuration par France Papers, envoyez le scopeId de la mission, son campaignName exact et la source ci-dessous à la place de sourceUrl. Les identifiants sont des chaînes de caractères. La Page et le formulaire doivent tous deux correspondre au périmètre configuré.
{
"source": {
"type": "META_LEAD_ADS",
"pageId": "VOTRE_PAGE_ID",
"formId": "VOTRE_FORM_ID"
}
}Formulaires Snapchat
Utilisez une mission Snapchat distincte et la source SNAPCHAT_LEAD_ADS avec adAccountId et formId (UUID minuscules). Les scopes Meta et TikTok ne couvrent pas Snapchat. La mission DRAFT peut inventorier les formulaires avant de recevoir les noms exacts des campagnes : elle n’autorise alors aucun envoi. La version de notice doit correspondre exactement à celle présentée lors de la collecte ; durée maximale de contact de 30 jours, choix PHONE et WHATSAPP séparés. Le nom de campagne ne constitue pas une réponse à une question sur la démarche.
{
"source": {
"type": "SNAPCHAT_LEAD_ADS",
"adAccountId": "UUID_DU_COMPTE",
"formId": "UUID_DU_FORMULAIRE"
}
}Formulaire TikTok
Utilisez une mission TikTok distincte configurée par France Papers et ses identifiants exacts sous forme de chaînes. Le scope Meta ne couvre pas TikTok. Le compte annonceur, le formulaire, la campagne et la version des mentions doivent correspondre à la mission.
{
"source": {
"type": "TIKTOK_LEAD_ADS",
"advertiserId": "VOTRE_ADVERTISER_ID",
"formId": "VOTRE_FORM_ID"
}
}collectionEvidence conserve les choix PHONE et WHATSAPP réellement acceptés, la date de collecte avec fuseau, une validUntil au plus 30 jours après collecte et la noticeVersion de la mission. Refus et absence ne deviennent jamais un accord. /test vérifie le format sans créer de prospect ; un scope DRAFT n’autorise pas l’ingestion réelle.
Conservez les informations et preuves de collecte propres à chaque lead. Testez avec des données fictives via POST /webhooks/lead-gateway/test. Un test réussi ne crée aucun lead et ne débloque pas les envois réels : une validation opérationnelle de France Papers reste nécessaire.
Lead Ingestion API
Automatisez la remontée de vos prospects vers le CRM France Papers avec notre Gateway haute disponibilité sécurisée par token.
Chaque lead doit inclure rgpdConsent: true et ses éléments de collecte dans collectionEvidence. Ce booléen seul ne constitue pas une preuve. Le site source et les canaux doivent correspondre au périmètre de votre contrat.
Votre première connexion
Récupérez votre clé dans votre espace fournisseur, puis envoyez un payload de test à POST /webhooks/lead-gateway/test. Ce test ne crée aucun lead. Après un résultat VALID, utilisez l’endpoint ingest.
collectionEvidence contient collectedAt (date ISO de collecte), noticeVersion, proofReference, recipient: FRANCE_PAPERS et contactChannels (PHONE, EMAIL, SMS ou WHATSAPP), validUntil, noticeText, affirmativeAction, services, recipientLegalName, withdrawalMethod et proofAccessMethod. Pour une collecte indépendante, transmissionAuthorized: true est également requis. France Papers archive le texte déclaré et les coordonnées concernées. Conservez aussi la preuve originale de l’action effectuée ; son authenticité ne se déduit pas de la réception technique.
Une réception SUCCESS fournit privacyUrl : remettez ce lien privé au prospect pour la consultation gratuite de sa preuve et le retrait. Ne le publiez pas et ne le placez pas dans vos outils analytiques. Signalez aussi les retraits reçus dans vos propres outils via POST /webhooks/lead-gateway/withdraw avec externalId ; les retraits notifiés par France Papers sont à confirmer dans votre portail après propagation.
campaignName, externalId et la source configurée (sourceUrl ou source native) sont requis. Une réponse 400 indique les corrections nécessaires ; 401 indique un accès invalide ou suspendu. DUPLICATE ne crée aucun nouveau lead.
Authentification
Pour authentifier vos requêtes, vous devez passer votre clé API unique dans le header x-api-key.
Remonter un Lead
/webhooks/lead-gateway/ingestParamètres du Body (JSON)
| Champ | Type | Requis | Description |
|---|---|---|---|
| firstName | string | Oui | Prénom du prospect |
| lastName | string | Oui | Nom du prospect |
| phone | string | Oui | Mobile (Format international +33...) |
| rgpdConsent | boolean | Oui | Attestation déclarée ; compléter avec collectionEvidence. |
| externalId | string | Oui | Référence du lead dans votre système — requise pour le nouveau parcours |
Intégration Code
// Exemple d'implémentation en Node.js (Fetch)
const sendLead = async () => {
const URL = 'https://api.testbed.francepapers.fr/webhooks/lead-gateway/ingest';
const API_KEY = 'votre_cle_api_ici';
const payload = {
firstName: 'Jean',
lastName: 'Dupont',
phone: '+33767535310',
email: 'jean.dupont@email.com',
rgpdConsent: true,
externalId: 'votre_ref_interne_123',
campaignName: 'campagne_autorisee',
sourceUrl: 'https://votre-site.fr/formulaire',
collectionEvidence: {
collectedAt: 'DATE_ISO_ORIGINALE_DU_FORMULAIRE',
noticeVersion: 'version_de_votre_formulaire',
proofReference: 'reference_de_la_preuve_conservee',
validUntil: 'DATE_ISO_ORIGINALE_DE_VALIDITE',
noticeText: 'Texte exact présenté au prospect', affirmativeAction: 'Case dédiée cochée',
services: 'Services expressément autorisés', recipientLegalName: 'ASTAURIA exploitant France Papers',
withdrawalMethod: 'Lien de retrait gratuit', proofAccessMethod: 'Lien de preuve gratuit',
recipient: 'FRANCE_PAPERS',
contactChannels: ['PHONE'],
// Requis pour les fournisseurs indépendants :
transmissionAuthorized: true
}
};
const res = await fetch(URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': API_KEY
},
body: JSON.stringify(payload)
});
return await res.json();
};Gestion des Erreurs
La clé API est invalide, expirée ou désactivée.
Le lead a déjà été envoyé au cours des 30 derniers jours.