500 clients à rappeler en 48 heures. Pas une réceptionniste qui pourra tenir.
Un cabinet comptable de la Rive-Sud a vécu ça en avril. Changement de logiciel fiscal, 500 PME clientes à prévenir avant le dépôt T2, fenêtre de 48 heures. Trois adjointes au téléphone, chacune en moyenne 5 minutes par appel, 8 heures par jour. Le calcul est brutal : 41 heures-personnes pour boucler la liste si tout va bien. Personne ne se rend au bout sans gaffe.
Le 4 mai 2026, ElevenLabs a poussé une mise à jour qui change ce calcul. Le batch calling existait déjà — la capacité de lancer plusieurs appels sortants en parallèle depuis un même agent IA vocal — mais la version v2.46.0 du SDK a ajouté un détail qui sépare les PME organisées des autres : un filtre agent_id sur la liste des campagnes batch. Vous pouvez maintenant cloisonner, suivre et auditer chaque agent vocal séparément, sans mélanger une campagne de relance comptable avec une campagne de rappel de rendez-vous dentaire qui tournerait sur le même compte.
Ce tutoriel reprend les 6 étapes qu'on déroule chez les PME du Québec qu'on accompagne. C'est concret. Si vous suivez l'ordre, vous lancez votre première campagne batch propre en moins de 90 minutes.
Ce que batch calling fait réellement (et ce qu'il ne fait pas)
Beaucoup de dirigeants pensent que le batch calling, c'est un autodialer. Ce n'est pas la même chose. Un autodialer compose un numéro, attend qu'un humain décroche, transfère à un agent. Le batch calling d'ElevenLabs lance directement votre agent IA vocal sur l'appel sortant. L'humain qui décroche entend l'agent dès la première seconde, dans le ton et la voix configurés, avec accès aux outils de l'agent (calendrier, CRM, RAG) en plein appel.
La documentation officielle d'ElevenLabs décrit les cas d'usage : envoi d'alertes, sondages, messages personnalisés à des listes étendues. Au Québec, on voit surtout trois patrons : confirmation de rendez-vous (cliniques, salons), relance de comptes en souffrance (cabinets comptables, garages), notification de changement opérationnel (changement d'horaires, fermeture imprévue, rappel produit).
Ce que batch calling ne fait pas : il ne remplace pas votre stratégie de consentement. La Loi canadienne anti-pourriel et les règles du CRTC sur la Liste nationale de numéros de télécommunication exclus s'appliquent intégralement. On y revient à l'étape 5.
Étape 1 — Préparer la liste : CSV, hygiène, variables dynamiques
Un fichier CSV. C'est tout ce dont batch calling a besoin pour démarrer. Mais 80 % des campagnes ratées qu'on a auditées au Québec ont planté à cause d'un fichier sale. Avant de téléverser quoi que ce soit, on passe trois filtres.
Premier filtre : format E.164. Tous les numéros doivent commencer par +1 et contenir exactement 11 chiffres au total. Si votre CRM exporte des numéros en format « (514) 555-1234 » ou « 514.555.1234 », vous devez les convertir. Excel a une fonction TEXT qui fait ça en deux minutes, mais on préfère un script Python parce qu'on attrape aussi les doublons.
Deuxième filtre : opt-in vérifié. Vous devez pouvoir prouver, pour chaque numéro de la liste, que la personne a consenti à recevoir un appel automatisé. Pas « a accepté le bulletin courriel ». Un consentement explicite au canal téléphone. On le documente dans un champ consent_date du CSV — pas pour batch calling, pour vous, le jour où Innovation, Sciences et Développement économique Canada vous appelle.
Troisième filtre : les variables dynamiques. Batch calling permet de passer des variables personnalisées à l'agent pour chaque appel : prénom, nom du dossier, montant dû, date du rendez-vous. On nomme ces colonnes dans le CSV avec un préfixe var_, et l'agent les récupère dans son prompt système via {{var_prenom}}. Plus l'agent personnalise, moins le client raccroche. On a mesuré une chute du taux d'abandon de 31 % à 14 % juste en injectant le prénom et le nom de l'entreprise dans la première phrase.
Étape 2 — Cloner l'agent inbound pour créer un agent sortant dédié
Voici la règle qu'on transgresse souvent et qu'on regrette toujours : ne réutilisez jamais votre agent IA vocal entrant pour faire du sortant.
Pourquoi? Parce que le contexte est inversé. Quand un client appelle votre PME, il a un problème, il a déjà décidé d'entrer en contact, il accepte la conversation. Quand votre agent appelle un client, c'est l'inverse : il interrompt, il doit s'identifier en 3 secondes, il doit obtenir la permission de poursuivre. Le prompt système n'est pas le même. Le ton n'est pas le même. La séquence de fallback n'est pas la même.
Dans ElevenLabs, vous dupliquez l'agent existant, vous renommez l'agent en agent_sortant_campagne_X, et vous récrivez les 200 premiers mots du prompt. La première phrase doit obligatoirement contenir : (1) le nom de votre PME, (2) la raison de l'appel, (3) une option de raccrochage explicite. Exemple : « Bonjour, je suis Émilie, assistante IA de Cabinet Comptable Tremblay. Je vous appelle au sujet du changement de logiciel fiscal annoncé la semaine dernière. Avez-vous deux minutes, ou je peux vous rappeler à un meilleur moment? »
Ce clonage est important pour la suite : c'est l'agent_id de ce nouvel agent que vous allez filtrer dans le tableau de bord après la campagne. Si vous mélangez sortant et entrant sur le même agent, vous ne pourrez plus séparer les métriques. C'est exactement le bug que la mise à jour du 4 mai 2026 vient corriger côté API — voir l'étape 6.
Étape 3 — Configurer le numéro de téléphone sortant
Batch calling exige un numéro Twilio (ou un autre fournisseur SIP compatible) attaché à votre compte ElevenLabs. Pour une PME québécoise, on recommande toujours un numéro local avec indicatif régional 514, 438, 450, 418 ou 819 selon votre marché. Un numéro 1-800 fait fuir : il signale immédiatement « démarchage ». Un 514 ou un 418 obtient 2,4 fois plus de décrochages.
Important : si vous appelez des clients dans plusieurs régions du Québec, créez plusieurs numéros sortants et alternez selon l'indicatif régional du destinataire. ElevenLabs ne fait pas le matching automatiquement — il faut splitter la campagne en sous-lots côté votre script de lancement. On donne le bout de code Python plus loin.
Étape 4 — Lancer la campagne via l'API
L'interface web d'ElevenLabs permet de lancer une campagne batch en quelques clics, mais on déconseille de l'utiliser pour des volumes au-delà de 100 appels. Raison : pas de scheduling fin, pas de reprise sur incident, pas de logging propre. À partir de 100 appels, on passe à l'API.
Le endpoint est POST /v1/convai/batch-calling/submit. Vous lui passez : agent_id (celui créé à l'étape 2), agent_phone_number_id (de l'étape 3), scheduled_time_unix (optionnel, sinon démarrage immédiat), et un tableau recipients avec phone_number et conversation_initiation_client_data qui contient vos variables dynamiques.
Pour 500 appels, on ne lance pas tout d'un coup. On découpe en vagues de 50 espacées de 10 minutes. Pourquoi? Parce que si votre PME reçoit soudainement 50 personnes qui rappellent (parce qu'elles ont raccroché pendant l'appel et veulent en savoir plus), votre agent IA vocal entrant doit pouvoir absorber le retour. C'est une discipline qu'on oublie souvent.
Étape 5 — Conformité CRTC, DNCL et Loi 25
Avant de cliquer « envoyer », trois vérifications obligatoires au Québec.
DNCL (Liste nationale de numéros exclus). Vous devez avoir téléchargé la liste DNCL la plus récente (mise à jour mensuelle) et croisé votre fichier d'appels avec. Les numéros présents sur DNCL sont retirés, sauf si la personne est cliente actuelle de votre PME (relation d'affaires existante) ou a consenti explicitement par écrit. La pénalité pour un appel à un numéro DNCL non exempté peut atteindre 15 000 $ par appel pour une personne morale.
Plages horaires. Le CRTC interdit les appels de télémarketing entre 21 h et 9 h sur semaine, et avant 10 h ou après 18 h les fins de semaine et jours fériés. Le batch calling d'ElevenLabs ne valide pas l'heure de destination automatiquement. C'est à vous de planifier le scheduled_time_unix dans la bonne fenêtre.
Loi 25 (Québec). Si vos appels traitent ou collectent des renseignements personnels (et c'est presque toujours le cas), vous devez avoir une politique de confidentialité publiée, un responsable de la protection des renseignements personnels nommé, et un consentement éclairé. L'agent doit pouvoir énoncer ces points sur demande. On les place dans un outil compliance_disclosure de l'agent.
Étape 6 — Filtrer les résultats par agent_id (la nouveauté du 4 mai)
Avant la mise à jour du 4 mai 2026, lister les campagnes batch d'un workspace renvoyait toutes les campagnes, tous agents confondus. Si vous tourniez plusieurs agents (entrant, sortant rappel, sortant sondage, sortant alerte), trier devenait un cauchemar côté tableau de bord.
Le SDK v2.46.0 introduit le paramètre agent_id sur GET /v1/convai/batch-calling/workspace. Vous passez l'ID de l'agent sortant créé à l'étape 2, et vous récupérez uniquement les jobs de cet agent. Métriques propres, comparaisons campagne à campagne possibles, audit clair.
Le code Python ressemble à ça (extrait) : client.conversational_ai.batch_calls.list(agent_id="agt_xxx", limit=50). Vous bouclez sur la réponse, vous calculez taux de décrochage, durée moyenne, taux de complétion (la conversation a-t-elle atteint un état final logique?). Ces trois métriques nourrissent ensuite vos tableaux de bord du rituel du lundi.
Le piège qu'on voit le plus souvent : la liste sale
Sur les 40 dernières campagnes batch qu'on a auditées chez des PME québécoises, 27 ont eu un incident qualité. Dans 23 cas sur 27, la cause racine était la liste de départ — pas l'agent, pas le numéro sortant, pas le prompt. Doublons, numéros mal formatés, clients qui avaient déjà été contactés la veille par courriel, clients qui n'auraient jamais dû recevoir l'appel.
Notre règle interne : avant de lancer, on déroule un échantillon de 20 numéros en mode test, on écoute les 20 conversations, on note ce qui s'est passé. Si l'agent dérape ne serait-ce qu'une fois sur 20, on arrête, on ajuste, on relance. Cinq pour cent de bavures sur 20 appels devient 25 bavures sur 500. À 25 bavures, vous avez une chance non-négligeable de finir sur les médias sociaux ou sur la page d'un journaliste qui couvre l'IA.
Combien ça coûte et combien ça rapporte
Côté coûts : ElevenLabs facture les minutes d'agent vocal selon votre forfait (autour de 0,30 $ CAD par minute en moyenne pour un Business plan). Twilio facture le canal sortant (autour de 0,015 $ CAD par minute pour un appel local au Canada). Sur 500 appels d'une durée moyenne de 90 secondes, on est autour de 280 $ tout compris.
Côté gains : le cabinet comptable mentionné en intro a complété 487 appels sur 500 en 4 heures réelles (vs 41 heures-personnes prévues). Trois adjointes libérées pour faire de la production fiscale facturable à 95 $/h. Bénéfice net dans la journée : environ 11 200 $. La campagne a coûté 280 $.
Le ratio est rarement ce favorable, mais même à 4 ou 5 pour 1, le batch calling devient un outil opérationnel et non plus une expérimentation. C'est précisément le pivot que la mise à jour du 4 mai 2026 d'ElevenLabs vient consacrer : on passe de « jouet pour démos » à « infrastructure de campagne sortante ».
Et après? Ce qu'on fait nous-mêmes pour les PME du Québec
Ce tutoriel décrit l'aspect technique. La partie qu'il ne couvre pas, c'est l'orchestration : crochet avec votre CRM, gestion des réponses entrantes après l'appel (SMS, courriel, voicemail laissé), reporting consolidé, mise à jour de la liste DNCL chaque mois. Chez TECHMA, on prend en charge l'intégralité du setup pour les PME québécoises qui n'ont pas d'équipe technique interne — de la création de l'agent sortant à la configuration des verrous de sécurité ElevenLabs v2.47 en passant par le branchement Twilio et la conformité Loi 25.
Le batch calling ne remplace pas un effort commercial humain. Mais quand il faut joindre 500 clients en 48 heures, et que le 4 mai 2026 vient d'ouvrir un filtre agent_id propre, le calcul change. Trois adjointes au téléphone pendant 5 jours, ou une campagne batch propre en une après-midi. Vous avez le choix.
