JalonMail Connexion

Webhook de création de destinataires

Votre back office (CRM, boutique en ligne, formulaire de contact, outil d'automatisation…) peut ajouter automatiquement des destinataires à JalonMail et compléter leur preuve de consentement, par un simple appel HTTP.

1. Obtenir l'adresse du webhook

  1. Connectez-vous à JalonMail et ouvrez Profil › Webhook de création de destinataires.
  2. Choisissez la phase par défaut des destinataires créés et leur état (actif ou à activer manuellement), puis cliquez sur « Créer le webhook ».
  3. Copiez l'adresse affichée. Elle contient votre jeton secret : https://jalonmail.com/webhooks/recipients/VOTRE_JETON

Vous pouvez à tout moment désactiver le webhook, ou générer une nouvelle adresse : l'ancienne cesse alors immédiatement de fonctionner.

2. Format de l'appel

3. Champs acceptés

ChampObligatoireDescription
emailOuiAdresse email du destinataire (255 caractères max.). Elle identifie le destinataire : un même email n'est jamais créé deux fois.
first_nameOuiPrénom (100 caractères max.).
last_nameOuiNom (100 caractères max.).
localeNonLangue des mails : fr (Français), en (English), es (Español), de (Deutsch), it (Italiano), pt (Português), nl (Nederlands). Par défaut : la langue par défaut de votre compte email.
campaign_started_atNonDate de début de la campagne, au format AAAA-MM-JJ. Par défaut : aujourd'hui. Les mails J+X de la phase sont comptés depuis cette date.
phaseNonNom de la phase (majuscules indifférentes), ex. « Prospect ». Par défaut : la phase choisie dans les réglages du webhook. Une phase inconnue est refusée (erreur 422 listant vos phases).
consent_sourceNonOrigine du consentement, voir ci-dessous.
consent_atNonDate et heure du consentement, ex. 2026-11-10 14:30:00 ou ISO 8601 2026-11-10T14:30:00+01:00. Pas dans le futur.
consent_ipNonAdresse IP (IPv4 ou IPv6) de la personne au moment du consentement.
consent_proofNonPreuve du consentement en texte libre (2 000 caractères max.), ex. le libellé de la case cochée et l'adresse du formulaire.
purposeNonUsage de l'email, par son nom (majuscules indifférentes), ex. « Prospection commerciale ». Un usage inconnu est refusé (erreur 422 listant vos usages).

Les destinataires créés reçoivent l'état (actif ou inactif) choisi dans les réglages du webhook. Les autres champs envoyés sont ignorés.

4. Consentement et usage (RGPD)

Transmettez la preuve du consentement recueilli : son origine, sa date et son heure, l'adresse IP et toute précision utile. Un destinataire dont l'origine et la date sont renseignées est considéré comme ayant un consentement renseigné.

Valeurs de consent_source

ValeurSignification
webFormulaire web
phoneTéléphone
emailEmail
linkedinLinkedIn
facebookFacebook
instagramInstagram
in_personEn personne (salon, rendez-vous...)
paperPapier / contrat signé
otherAutre

Le libellé complet est aussi accepté (ex. « LinkedIn »), ainsi que tel, téléphone, site, formulaire et mail.

Usages de l'email (purpose)

Chaque compte dispose des usages « Prospection commerciale », « Informations commerciales complémentaires », « Suivi de la relation client », « Lettre d'information » et peut ajouter les siens depuis Destinataires › Usages de l'email. Envoyez le nom exact de l'usage.

5. Destinataire déjà existant

Si un destinataire de votre compte a déjà cet email :

{
  "email": "marie@example.org",
  "consent_source": "web",
  "consent_at": "2026-11-10 14:30:00",
  "consent_ip": "203.0.113.42",
  "purpose": "Prospection commerciale"
}

6. Réponses

CodeSignification
201Destinataire créé ("created": true).
200Destinataire déjà existant ("created": false) ; "updated": true si son consentement ou son usage a été mis à jour.
422Données invalides : le détail par champ est dans errors. Rien n'est enregistré.
403Webhook désactivé.
404Adresse (jeton) inconnue ou régénérée.
429Trop d'appels : réessayez une minute plus tard.

Exemple de réponse (201)

{
  "created": true,
  "updated": false,
  "recipient": {
    "id": 1234,
    "email": "marie@example.org",
    "first_name": "Marie",
    "last_name": "Curie",
    "locale": "fr",
    "campaign_started_at": "2026-11-10",
    "phase": "Prospect",
    "is_active": true,
    "unsubscribed": false,
    "consent_source": "web",
    "consent_at": "2026-11-10T14:30:00+01:00",
    "consent_ip": "203.0.113.42",
    "consent_proof": "Case cochée sur https://exemple.fr/contact",
    "purpose": "Prospection commerciale"
  }
}

Exemple d'erreur (422)

{
  "message": "Données invalides.",
  "errors": {
    "phase": ["Cette phase n'existe pas. Phases disponibles : Prospect, Client."]
  }
}

7. Exemples

cURL

curl -X POST https://jalonmail.com/webhooks/recipients/VOTRE_JETON \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "marie@example.org",
    "first_name": "Marie",
    "last_name": "Curie",
    "locale": "fr",
    "phase": "Prospect",
    "consent_source": "web",
    "consent_at": "2026-11-10 14:30:00",
    "consent_ip": "203.0.113.42",
    "consent_proof": "Case cochée sur https://exemple.fr/contact",
    "purpose": "Prospection commerciale"
  }'

PHP (formulaire de contact)

$response = file_get_contents('https://jalonmail.com/webhooks/recipients/VOTRE_JETON', false, stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => "Content-Type: application/json\r\nAccept: application/json\r\n",
        'content' => json_encode([
            'email' => $_POST['email'],
            'first_name' => $_POST['first_name'],
            'last_name' => $_POST['last_name'],
            'consent_source' => 'web',
            'consent_at' => date('Y-m-d H:i:s'),
            'consent_ip' => $_SERVER['REMOTE_ADDR'],
            'consent_proof' => 'Case « J\'accepte de recevoir des informations » cochée',
            'purpose' => 'Prospection commerciale',
        ]),
        'ignore_errors' => true,
    ],
]));

JavaScript (Node.js, côté serveur)

const response = await fetch('https://jalonmail.com/webhooks/recipients', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.JALONMAIL_WEBHOOK_TOKEN}`,
    'Content-Type': 'application/json',
    'Accept': 'application/json',
  },
  body: JSON.stringify({
    email: 'marie@example.org',
    first_name: 'Marie',
    last_name: 'Curie',
    phase: 'Prospect',
  }),
});
const data = await response.json();

Les outils d'automatisation (Zapier, Make, n8n…) utilisent la même requête : action « Webhook / HTTP », méthode POST, corps JSON.

8. Sécurité et limites

JalonMail · Conditions de vente