Aller au contenu principal
Guides Techniques• 6 min de lecture

Contacts et vCards dans WhatsApp Business API : partage professionnel

Comment partager des contacts et vCards via l'API WhatsApp Business Cloud. Format, implémentation et cas d'usage professionnels pour les entreprises africaines.

Partager un contact professionnel est l'une des actions les plus courantes dans WhatsApp, et pourtant peu d'entreprises exploitent cette fonctionnalité via l'API dans leurs workflows automatisés. L'API WhatsApp Business Cloud permet d'envoyer des vCards structurées — des fiches contacts numériques standardisées — directement dans la conversation. Pour les entreprises qui gèrent des réseaux d'agents, de livreurs ou de conseillers, ou celles qui souhaitent faciliter la prise de contact avec leurs équipes, le partage de contacts via WhatsApp API est une fonctionnalité à connaître.

Le format vCard dans WhatsApp API

Une vCard (Virtual Card) est un format standard pour les cartes de visite numériques. WhatsApp l'utilise pour les contacts partagés. Via l'API, vous spécifiez les informations du contact dans un format vCard 3.0 intégré dans la requête JSON.

Un message de type contacts peut contenir plusieurs contacts simultanément (dans un tableau). Chaque contact peut avoir les champs suivants :

  • Nom (prénom, nom de famille, nom affiché, surnom)
  • Téléphones (numéro, type : CELL, WORK, HOME, etc.)
  • Emails (adresse, type)
  • Adresses (rue, ville, pays)
  • Organisation (entreprise, poste, département)
  • URL (site web)
  • Anniversaire

Envoyer un contact via l'API

async function sendContact(to, contactData) {
    const payload = {
        messaging_product: 'whatsapp',
        to: to,
        type: 'contacts',
        contacts: [
            {
                name: {
                    first_name: contactData.firstName,
                    last_name: contactData.lastName || '',
                    formatted_name: contactData.displayName || `${contactData.firstName} ${contactData.lastName || ''}`.trim()
                },
                phones: contactData.phones.map(phone => ({
                    phone: phone.number,
                    type: phone.type || 'CELL',   // CELL, WORK, HOME
                    wa_id: phone.waId || undefined // Si le numéro a WhatsApp
                })),
                emails: (contactData.emails || []).map(email => ({
                    email: email.address,
                    type: email.type || 'WORK'
                })),
                org: contactData.org ? {
                    company: contactData.org.company,
                    title: contactData.org.title || '',
                    department: contactData.org.department || ''
                } : undefined,
                urls: (contactData.urls || []).map(url => ({
                    url: url.address,
                    type: url.type || 'WORK'
                })),
                addresses: (contactData.addresses || []).map(addr => ({
                    street: addr.street || '',
                    city: addr.city || '',
                    country: addr.country || '',
                    country_code: addr.countryCode || '',
                    type: addr.type || 'WORK'
                }))
            }
        ]
    };
    
    const response = await axios.post(API_URL, payload, { headers: HEADERS });
    return response.data;
}

// Exemple 1 : Partager le contact d'un livreur avec un client
await sendContact('225071234567', {
    firstName: 'Kouamé',
    lastName: 'Assoumou',
    displayName: 'Kouamé - Livreur Express CI',
    phones: [
        { number: '+22507654321', type: 'CELL', waId: '22507654321' }
    ],
    org: {
        company: 'Express CI',
        title: 'Livreur'
    }
});

// Exemple 2 : Partager une fiche agent commercial
await sendContact('221771234567', {
    firstName: 'Mariama',
    lastName: 'Baldé',
    displayName: 'Mariama Baldé - Conseillère Financière',
    phones: [
        { number: '+22177345678', type: 'WORK', waId: '22177345678' },
        { number: '+22133987654', type: 'WORK' }
    ],
    emails: [
        { address: 'mariama.balde@microfinance-sn.com', type: 'WORK' }
    ],
    org: {
        company: 'MicroFinance Sénégal',
        title: 'Conseillère Financière',
        department: 'Crédit PME'
    },
    urls: [
        { address: 'https://microfinance-sn.com', type: 'WORK' }
    ],
    addresses: [
        {
            street: '25 Avenue Pompidou',
            city: 'Dakar',
            country: 'Sénégal',
            countryCode: 'SN',
            type: 'WORK'
        }
    ]
});

Envoyer plusieurs contacts en une fois

async function sendMultipleContacts(to, contactsArray) {
    const contacts = contactsArray.map(contactData => ({
        name: {
            first_name: contactData.firstName,
            last_name: contactData.lastName || '',
            formatted_name: contactData.displayName || `${contactData.firstName} ${contactData.lastName || ''}`
        },
        phones: [{ 
            phone: contactData.phone, 
            type: 'CELL',
            wa_id: contactData.waId 
        }],
        org: contactData.company ? { company: contactData.company, title: contactData.role } : undefined
    }));
    
    const payload = {
        messaging_product: 'whatsapp',
        to: to,
        type: 'contacts',
        contacts
    };
    
    const response = await axios.post(API_URL, payload, { headers: HEADERS });
    return response.data;
}

// Partager une équipe de 3 agents avec un client VIP
await sendMultipleContacts('212661234567', [
    {
        firstName: 'Youssef', lastName: 'Benali',
        phone: '+212612345678', company: 'Assur Maroc', role: 'Agent Commercial'
    },
    {
        firstName: 'Fatima', lastName: 'Ouali',
        phone: '+212612345679', company: 'Assur Maroc', role: 'Responsable Sinistres'
    },
    {
        firstName: 'Support', lastName: 'Client',
        phone: '+212800123456', company: 'Assur Maroc', role: 'Service Client 24/7'
    }
]);

Cas d'usage professionnels

Attribution d'un conseiller dédié : quand un nouveau client important s'inscrit, envoyez automatiquement la fiche contact de son conseiller attitré. Le client peut enregistrer immédiatement le contact dans son téléphone et l'appeler directement.

Mise en relation livreur-client : au moment de l'expédition, envoyez le contact du livreur au client et le contact du client au livreur. Facilite la coordination de la livraison sans que vous deviez servir d'intermédiaire.

Réseau d'agents terrain : pour les microfinances, assurances et FMCG qui ont des réseaux d'agents en Afrique, permettez aux clients de trouver et contacter facilement l'agent le plus proche via un message WhatsApp automatisé.

Onboarding partenaires : quand vous intégrez un nouveau partenaire ou revendeur, envoyez les contacts clés de votre équipe pour faciliter la prise en main de la relation commerciale.

Pour intégrer ces fonctionnalités dans une stratégie marketing complète, consultez le guide WhatsApp marketing 2025 et le guide technique complet de l'API WhatsApp Business.

FAQ

Q: Le contact reçu via WhatsApp API s'enregistre-t-il automatiquement dans le répertoire du client ?

R: Non, WhatsApp affiche la fiche contact dans la conversation mais ne l'enregistre pas automatiquement dans le répertoire du téléphone. L'utilisateur doit tapper sur le contact puis choisir "Ajouter au répertoire" manuellement. Incitez vos clients à enregistrer le contact en précisant dans votre message l'importance de l'avoir à portée (ex: "Enregistrez ce contact pour contacter directement votre livreur en cas de besoin").

Q: Peut-on envoyer une photo de profil dans une vCard via WhatsApp API ?

R: Non, l'API WhatsApp ne supporte pas l'inclusion d'une photo dans le champ contacts. La vCard envoyée n'affiche pas de photo. Si la personne est un contact WhatsApp (wa_id renseigné), sa photo de profil WhatsApp peut s'afficher automatiquement dans certains cas, selon les paramètres de confidentialité de l'utilisateur.

Q: Peut-on partager son propre profil WhatsApp Business en tant que contact ?

R: Oui. Vous pouvez créer un contact avec les informations de votre propre compte WhatsApp Business et l'envoyer à des clients. C'est utile pour les entreprises avec plusieurs numéros (ex: "Voici le numéro WhatsApp de notre service technique") ou pour la mise en relation entre différentes divisions d'une même entreprise.

Q: Un client peut-il nous envoyer sa vCard via WhatsApp et comment la récupérer ?

R: Oui. Quand un client vous envoie son contact via WhatsApp, votre webhook reçoit un événement de type contacts avec la même structure JSON. Parcourez le tableau contacts dans le payload du webhook pour extraire prénom, nom, téléphones, emails, etc. C'est un moyen pratique de laisser les clients partager leurs coordonnées complètes en un seul geste.

Q: Y a-t-il un format vCard particulier à utiliser (vCard 2.1, 3.0, 4.0) ?

R: L'API WhatsApp utilise le format vCard 3.0 en interne. Vous n'avez pas à vous soucier de la syntaxe vCard brute — l'API accepte les données en JSON structuré (comme dans les exemples de ce guide) et les convertit automatiquement. Si vous récupérez des contacts au format vCard textuel depuis un autre système, il vous faudra parser ce format et mapper les champs vers la structure JSON de l'API.


Partagez vos contacts professionnels automatiquement dans vos conversations WhatsApp. Whakup gère tous les types de messages WhatsApp pour une communication client complète et professionnelle.

#contacts whatsapp api#vcard whatsapp#partage contact whatsapp#whatsapp business contact#whatsapp api professionnel
Pablo Lenormand
Pablo LenormandCo-fondateur & CPO

Co-fondateur et Chief Product Officer de Whakup, Pablo conçoit les fonctionnalités qui permettent aux marques africaines de maximiser leur impact sur WhatsApp.

🚀

Prêt à passer à l'action ?

Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.

Démarrer l'essai gratuit