Aller au contenu principal

Guide Lovable

E-mail, SMS et WhatsApp
dans votre app Lovable, gratuitement.

Collez un seul prompt dans Lovable : il écrit une Edge Function qui envoie le même message par e-mail, WhatsApp et SMS, depuis votre propre boîte mail, votre numéro et votre téléphone, avec la clé d'API gardée côté serveur.

Pressé ? Résumez cet article avec une IA

La réponse courte

Comment envoyer e-mail, SMS et WhatsApp depuis une app Lovable ?

Demandez à Lovable de créer une Edge Function Supabase qui appelle un seul endpoint REST, POST https://api.unlimitedmessaging.app/message, avec votre clé d'API stockée dans les Secrets de Lovable. Une requête envoie le même message par e-mail, WhatsApp et SMS, depuis votre boîte mail, votre numéro et votre téléphone Android, sur un plan gratuit sans carte bancaire.

Lovable écrit le frontend React et, via Lovable Cloud ou un projet Supabase connecté, les fonctions backend. Envoyer un message relève du backend : la clé d'API ne doit pas finir dans le bundle du navigateur, l'appel se fait donc dans une Edge Function que votre frontend invoque.

Unlimited Messaging est une API de messagerie qui envoie depuis des comptes que vous possédez déjà : un e-mail depuis votre boîte Gmail ou de domaine en IMAP/SMTP, un message WhatsApp depuis votre numéro lié comme WhatsApp Web, et un SMS depuis la SIM de votre téléphone Android grâce à une app gratuite. Le plan gratuit ne facture rien par message, sur aucun canal ; les messages se terminent par une courte ligne "Sent with UnlimitedMessaging.app".

Lovable propose aussi ses propres solutions : Lovable Emails, intégré, pour l'e-mail transactionnel sur les plans Lovable payants, et des connecteurs Resend et Twilio. Ce sont de bons outils. Ce guide s'adresse à vous si vous voulez les trois canaux derrière un seul appel, sans vérifier de domaine d'envoi ni payer au message pendant vos tests.

Le même message sur plusieurs canaux : e-mail et WhatsApp en une requête d'API. Connecter Gmail : le guide du mot de passe d'application. Des SMS depuis votre téléphone : l'app Android.

Illustration : une requête POST /message qui part vers une bulle de chat et un mail, avec le titre « App Lovable, trois canaux, un appel ».

Pourquoi ne pas tout coder

Pourquoi brancher SMTP, Twilio et Meta soi-même prend autant de temps ?

Chaque canal a son fournisseur, son compte, sa vérification et ses règles. Voici ce que chacun exige avant votre premier vrai message.

  1. E-mail : les ports SMTP sont bloqués dans les Edge Functions

    Supabase n'autorise pas les connexions sortantes vers les ports 25 et 587 depuis les Edge Functions : le classique nodemailer en SMTP y échoue. Vous finissez avec une API d'e-mail comme Resend, qui exige un domaine vérifié : son expéditeur partagé [email protected] ne livre qu'à votre propre adresse.

  2. SMS : un compte fournisseur, un numéro et un enregistrement

    Avec Twilio, vous louez un numéro et payez au segment, 0,0083 $ aux États-Unis plus des frais d'opérateur. Écrire à des numéros américains depuis un numéro long classique exige aussi l'enregistrement A2P 10DLC, avec 4,50 $ de frais de marque et une vérification avant de pouvoir envoyer.

  3. WhatsApp : les règles de la plateforme Business de Meta

    L'API Cloud officielle demande une configuration business chez Meta, un template approuvé pour tout message envoyé hors de la fenêtre de service client de 24 heures (examen en 24 heures maximum), un prix par message template, et les nouveaux comptes démarrent à 250 destinataires uniques par 24 heures.

  4. Trois SDK, trois webhooks, trois factures

    Chaque fournisseur a sa bibliothèque, son format d'erreur et son webhook entrant. Cela fait trois intégrations que votre outil d'IA doit réussir, trois clés à stocker et trois factures au lancement.

Côte à côte

Quelle solution choisir pour envoyer des messages depuis Lovable ?

Les quatre options les plus utilisées par les créateurs sur Lovable, sur les points qui comptent pour un prototype.

Quelle solution choisir pour envoyer des messages depuis Lovable ?
Lovable EmailsE-mail transactionnel intégréConnecteur ResendAPI d'e-mailConnecteur TwilioAPI SMS et WhatsAppUnlimited MessagingAPI e-mail, SMS et WhatsApp
CanauxE-mailE-mailSMS et WhatsAppE-mail, WhatsApp et SMS en une requête
Offre gratuitePlans Lovable payants uniquement (50 000 e-mails par mois inclus)3 000 e-mails par mois, 100 par jourCrédit d'essai, puis paiement au messagePlan gratuit, aucun frais par message, ligne de pied de message
Avant le premier vrai envoiVotre domaine et ses enregistrements DNSUn domaine vérifié chez ResendUn numéro Twilio, 10DLC pour les SMS américains, configuration Meta pour WhatsAppLier une boîte mail, scanner un QR code, installer l'app Android
ExpéditeurVotre domaineVotre domaineUn numéro loué ou un identifiant d'expéditeurVotre propre boîte mail, votre numéro et votre SIM
VolumePlafonds horaires (100 e-mails applicatifs par heure sur Pro)Conçu pour le volumeConçu pour le volumeRythme humain : limites de la boîte mail, environ 30 SMS par 30 minutes, pas d'envoi de masse
WhatsApp officielPas de WhatsAppPas de WhatsAppOui, plateforme Business de MetaNon : appareil lié, risque de bannissement si vous spammez

Prix et limites relevés sur la page de chaque fournisseur le 9 novembre 2026. Sur WhatsApp, Twilio répercute aussi les frais de Meta par message template.

Étape par étape

De zéro au premier message en cinq étapes

  1. 01

    Créez un compte gratuit

    Inscrivez-vous sur app.unlimitedmessaging.app avec Google, GitHub ou votre adresse e-mail. Pas de carte bancaire ; le plan Gratuit est permanent.

  2. 02

    Connectez les canaux utiles

    Ajoutez votre boîte mail (Gmail avec un mot de passe d'application, ou tout hébergeur IMAP/SMTP), scannez un QR code pour lier votre numéro WhatsApp, et installez l'app Android sur un téléphone avec une SIM pour les SMS. Un seul canal suffit pour commencer.

  3. 03

    Créez une clé d'API

    Dans le tableau de bord, ouvrez la section API et créez une clé. Copiez-la tout de suite et gardez-la hors de votre code.

  4. 04

    Rangez-la dans les Secrets de Lovable

    Ouvrez Settings, puis Secrets, et ajoutez UM_API_KEY, ou utilisez le champ sécurisé que Lovable affiche quand une fonctionnalité a besoin d'une clé. Lovable l'injecte uniquement dans les Edge Functions.

  5. 05

    Collez le prompt ci-dessous

    Lovable écrit l'Edge Function et le déclencheur qui l'appelle. Envoyez le premier test à votre propre numéro et à votre boîte.

Copier, coller

Quel prompt coller dans Lovable ?

Collez ceci dans le chat de Lovable. Il demande une Edge Function, la clé depuis les Secrets et un message de bienvenue à l'inscription. Adaptez le déclencheur et le texte à votre app.

Prompt pour LovablePrompt
Ajoute l'envoi de messages à cette app avec Unlimited Messaging (API REST, docs : https://docs.unlimitedmessaging.app).

1. Crée une Edge Function Supabase nommée notify-user. Elle lit la clé d'API dans le secret UM_API_KEY : demande-moi de l'ajouter dans Secrets, ne la mets jamais dans le code frontend ni dans une variable VITE_.
2. La fonction appelle POST https://api.unlimitedmessaging.app/message avec l'en-tête "Authorization: Bearer <UM_API_KEY>" et ce corps JSON : { "to": { "phone": "<numéro E.164>", "email": "<email>" }, "subject": "...", "text": "...", "channels": [{ "channel": "EMAIL" }, { "channel": "WHATSAPP" }, { "channel": "SMS" }] }.
3. Garde la vérification JWT activée et n'envoie qu'à l'e-mail et au téléphone de l'utilisateur connecté, chargés côté serveur, jamais à une adresse prise dans le corps de la requête.
4. Appelle la fonction juste après l'inscription avec un court message de bienvenue, et journalise la réponse de l'API pour voir les erreurs.
5. Avant de tester, demande-moi mon numéro de téléphone et mon e-mail.
L'API est du simple HTTPS : le même prompt fonctionne dans Bolt, v0, Cursor ou Claude Code en changeant la première ligne.
Edge FunctionDeno / Supabase
// supabase/functions/notify-user/index.ts
const cors = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',
};

Deno.serve(async (req) => {
  if (req.method === 'OPTIONS') return new Response('ok', { headers: cors });
  const { phone, email, name } = await req.json();

  const res = await fetch('https://api.unlimitedmessaging.app/message', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${Deno.env.get('UM_API_KEY')}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      to: { phone, email },
      subject: 'Welcome aboard',
      text: `Hi ${name}, your account is ready.`,
      channels: [{ channel: 'EMAIL' }, { channel: 'WHATSAPP' }, { channel: 'SMS' }],
    }),
  });

  return new Response(await res.text(), {
    status: res.status,
    headers: { ...cors, 'Content-Type': 'application/json' },
  });
});
À quoi ressemble l'Edge Function. Version minimale : en production, chargez l'e-mail et le téléphone de l'utilisateur connecté depuis votre base plutôt que de faire confiance au corps de la requête. Retirez de la liste un canal que vous n'avez pas connecté.
supabase.functions.invokeReact
// In a React component: the browser never sees UM_API_KEY
const { data, error } = await supabase.functions.invoke('notify-user', {
  body: { phone: '+33612345678', email: '[email protected]', name: 'Lea' },
});
Le frontend se contente d'appeler la fonction. supabase.functions.invoke envoie le jeton de session de l'utilisateur, et Supabase le vérifie avant d'exécuter la fonction.

Sécurité

Où ranger la clé d'API dans une app Lovable ?

Côté serveur uniquement. La documentation de Lovable trace la limite : les secrets pour les Edge Functions, les variables VITE_ pour les valeurs qui peuvent être publiques.

  1. Dans Secrets, lue par l'Edge Function

    Lovable stocke les secrets chiffrés, les injecte dans les Edge Functions à l'exécution et ne les inclut jamais dans le code frontend. La fonction lit la clé avec Deno.env.get('UM_API_KEY').

  2. Jamais dans une variable VITE_

    La documentation de Lovable indique que les variables VITE_ sont intégrées au bundle client au moment du build. N'importe qui peut les lire dans les outils de développement du navigateur, puis envoyer des messages depuis vos comptes.

  3. Pas dans le chat non plus

    Ne collez pas la clé en clair dans un prompt. Lovable affiche un champ sécurisé quand une fonctionnalité a besoin d'un secret ; utilisez-le, ou la page Secrets.

  4. Pas de relais ouvert

    Une fonction qui envoie n'importe quel texte à n'importe quel numéro tiré du corps de la requête laisse des inconnus utiliser votre WhatsApp et votre boîte mail. Gardez la vérification JWT, cherchez le destinataire côté serveur et limitez les envois par utilisateur.

  5. Une clé par environnement

    Créez une clé pour les tests et une pour la production : vous pourrez révoquer une clé compromise sans casser l'app en ligne.

Réponses

Comment recevoir les réponses dans votre app Lovable ?

Sur tous les plans, les réponses arrivent dans la boîte de réception Unlimited Messaging : e-mails regroupés par fil, conversations WhatsApp et SMS reçus par l'app Android après connexion. Pour les pousser dans votre propre app, il faut des webhooks, inclus dans les plans payants : Moyen à 19 €/mois et Max à 29 €/mois.

Demandez à Lovable une seconde Edge Function, par exemple um-webhook, enregistrez son URL sur la page Webhooks du tableau de bord, et abonnez-vous à message.received (un message entrant) et message.status (envoyé, délivré, lu, échec). C'est Unlimited Messaging qui appelle cette fonction, pas un utilisateur connecté : désactivez la vérification JWT pour elle et vérifiez la signature à la place.

Chaque livraison est signée selon la spécification Standard Webhooks, avec un HMAC-SHA256 dans l'en-tête webhook-signature. Répondez par un 2xx en moins de 10 secondes et faites le travail ensuite. Les livraisons échouées sont relancées pendant un peu plus de 3 jours : dédupliquez sur eventId.

message.receivedJSON
{
  "type": "message.received",
  "eventId": "whd_...",
  "occurredAt": "2026-11-09T10:00:01.000Z",
  "data": {
    "channel": "WHATSAPP",
    "message": {
      "text": "Yes, see you Monday!"
    }
  }
}
Un événement message.received, raccourci. data.message contient l'expéditeur et le texte, plus le sujet et les pièces jointes pour un e-mail.
verify-webhook.tsTypeScript
import { createHmac } from 'node:crypto';
import { Buffer } from 'node:buffer';

// Standard Webhooks signature check, before trusting the body.
export function isValid(rawBody: string, h: Headers, secret: string) {
  const id = h.get('webhook-id');
  const ts = h.get('webhook-timestamp');
  const sig = h.get('webhook-signature') ?? '';
  if (!id || !ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
  const key = Buffer.from(secret.replace(/^whsec_/, ''), 'base64');
  const expected = createHmac('sha256', key)
    .update(`${id}.${ts}.${rawBody}`)
    .digest('base64');
  return sig.split(' ').some((s) => s === `v1,${expected}`);
}
Une vérification de signature qui tourne dans une Edge Function (Deno) ou dans Node.js. Rangez le secret whsec_ dans un second secret, par exemple UM_WEBHOOK_SECRET.

Limites

Quelles sont les limites, honnêtement ?

Unlimited Messaging envoie depuis des comptes personnels, à un rythme humain. Cela convient aux notifications, rappels et conversations, pas aux envois de masse.

  1. WhatsApp est non officiel

    Votre numéro est lié comme un appareil, à la manière de WhatsApp Web, pas via la plateforme Business de Meta. Écrire à des gens qui n'ont rien demandé fait bannir les numéros. Pour du marketing à grande échelle, l'API Cloud officielle de Meta est le bon outil.

  2. L'e-mail suit les limites de votre boîte

    Un compte Gmail personnel envoie jusqu'à 500 e-mails par jour. Passez par une boîte Workspace ou de domaine pour davantage, et par un service d'e-mailing pour les newsletters.

  3. Les SMS au rythme d'Android

    Android demande une confirmation au-delà de 30 SMS en 30 minutes, l'app espace donc les envois. Chaque SMS est décompté de votre forfait opérateur, et le téléphone qui envoie doit être un Android.

  4. Ce que le plan gratuit ne comprend pas

    Sur Gratuit, les messages se terminent par "Sent with UnlimitedMessaging.app". Les médias, les messages vocaux et les webhooks demandent un plan payant, qui retire aussi ce pied de message.

FAQ

Questions sur l'envoi de messages depuis Lovable

Ilian, ingénieur logiciel senior

Écrit par

· Senior Software Engineer

Ingénieur logiciel senior, il fonde et dirige plusieurs sociétés tech. Il conçoit des produits autour des API de messagerie, de l’automatisation et de l’intégration de l’IA, et partage ici ce qu’il apprend en construisant.

Voir le profil LinkedInMis à jour le

Livrez les notifications aujourd'hui. Payez plus tard, ou jamais.

Créez un compte gratuit, connectez une boîte mail, un numéro ou un téléphone, et collez le prompt dans Lovable.