Guía Lovable
Email, SMS y WhatsApp
en tu app de Lovable, gratis.
Pega un prompt en Lovable: escribe una Edge Function que envía el mismo mensaje por email, WhatsApp y SMS, desde tu propio buzón, tu número y tu móvil, con la clave de API siempre en el servidor.
¿Con prisa? Resume este artículo con una IA
La respuesta corta
¿Cómo envías email, SMS y WhatsApp desde una app de Lovable?
Pide a Lovable que cree una Edge Function de Supabase que llame a un único endpoint REST, POST https://api.unlimitedmessaging.app/message, con tu clave de API guardada en los Secrets de Lovable. Una sola petición envía el mismo mensaje por email, WhatsApp y SMS, desde tu propio buzón, tu número y tu móvil Android, con un plan gratis y sin tarjeta.
Lovable escribe el frontend en React y, a través de Lovable Cloud o de un proyecto de Supabase conectado, las funciones de backend. Enviar un mensaje es trabajo de backend: la clave de API no puede acabar en el bundle del navegador, así que la llamada va en una Edge Function que invoca tu frontend.
Unlimited Messaging es una API de mensajería que envía desde cuentas que ya tienes: un email desde tu buzón de Gmail o de tu dominio por IMAP/SMTP, un WhatsApp desde tu número vinculado como WhatsApp Web, y un SMS desde la SIM de tu móvil Android con una app gratuita. El plan gratis no cobra nada por mensaje en ningún canal; los mensajes terminan con una línea corta "Sent with UnlimitedMessaging.app".
Lovable también tiene sus propias vías: Lovable Emails integrado para el email transaccional en los planes de pago de Lovable, y conectores para Resend y Twilio. Son buenas herramientas. Esta guía es para cuando quieres los tres canales detrás de una sola llamada, sin verificar un dominio de envío ni pagar por mensaje mientras pruebas.
El mismo mensaje en varios canales: email y WhatsApp en una sola petición a la API. Conectar Gmail: la guía de la contraseña de aplicación. SMS desde tu móvil: la app Android.

Por qué no programarlo a mano
¿Por qué es tan lento conectar tú mismo SMTP, Twilio y Meta?
Cada canal tiene su proveedor, su cuenta, su verificación y sus reglas. Esto es lo que pide cada uno antes de que salga tu primer mensaje real.
Email: los puertos SMTP están bloqueados en las Edge Functions
Supabase no permite conexiones salientes a los puertos 25 y 587 desde las Edge Functions, así que el clásico fragmento de nodemailer por SMTP falla ahí. Acabas con una API de email como Resend, que exige un dominio verificado: su remitente compartido [email protected] solo entrega a tu propia dirección.
SMS: una cuenta de proveedor, un número y un registro
Con Twilio alquilas un número y pagas por segmento, 0,0083 $ por segmento en Estados Unidos más las tarifas del operador. Enviar a números de Estados Unidos desde un número largo normal exige además el registro A2P 10DLC, con una tarifa de marca de 4,50 $ y una verificación antes de poder enviar.
WhatsApp: las reglas de la Business Platform de Meta
La Cloud API oficial exige una configuración de empresa en Meta, una plantilla aprobada para cualquier mensaje fuera de la ventana de atención al cliente de 24 horas (la revisión tarda hasta 24 horas), un precio por mensaje de plantilla, y las cuentas nuevas empiezan con 250 destinatarios únicos cada 24 horas.
Tres SDK, tres webhooks, tres facturas
Cada proveedor tiene su librería cliente, su formato de errores y su webhook de entrada. Son tres integraciones que tu constructor con IA tiene que hacer bien, tres claves que guardar y tres facturas cuando lances.
Cara a cara
¿Por qué vía debería enviar mensajes una app de Lovable?
Las cuatro vías que más usan quienes construyen con Lovable, en los puntos que importan para un prototipo.
| Lovable EmailsEmail transaccional integrado | Conector ResendAPI de email | Conector TwilioAPI de SMS y WhatsApp | Unlimited MessagingAPI de email, SMS y WhatsApp | |
|---|---|---|---|---|
| Canales | SMS y WhatsApp | Email, WhatsApp y SMS en una sola petición | ||
| Nivel gratis | Solo planes de pago de Lovable (50.000 emails al mes incluidos) | 3.000 emails al mes, 100 al día | Crédito de prueba, luego pago por mensaje | Plan gratis, sin coste por mensaje, línea de pie en los mensajes |
| Antes del primer envío real | Tu propio dominio y sus registros DNS | Un dominio verificado en Resend | Un número de Twilio, 10DLC para SMS en EE. UU., configuración de Meta para WhatsApp | Vincular un buzón, escanear un QR, instalar la app Android |
| Remitente | Tu dominio | Tu dominio | Un número alquilado o un ID de remitente | Tu propio buzón, tu número y tu SIM |
| Volumen | Límites por hora (100 emails de app por hora en Pro) | Pensado para volumen | Pensado para volumen | Ritmo humano: límites del buzón, unos 30 SMS cada 30 minutos, sin envíos masivos |
| WhatsApp oficial | Sin WhatsApp | Sin WhatsApp | Sí, Business Platform de Meta | No: dispositivo vinculado, riesgo de bloqueo si haces spam |
Precios y límites tomados de la página de cada proveedor, revisados el 9 de noviembre de 2026. En WhatsApp, Twilio repercute además la tarifa de Meta por cada mensaje de plantilla.
Paso a paso
De cero a un primer mensaje en cinco pasos
- 01
Crea una cuenta gratis
Regístrate en app.unlimitedmessaging.app con Google, GitHub o tu email. Sin tarjeta; el plan Gratis es permanente.
- 02
Conecta los canales que necesitas
Añade tu buzón (Gmail con una contraseña de aplicación, o cualquier servidor IMAP/SMTP), escanea un código QR para vincular tu número de WhatsApp e instala la app Android en un móvil con SIM para los SMS. Con un canal basta para empezar.
- 03
Crea una clave de API
En el panel, abre la sección API y crea una clave. Cópiala en el momento y mantenla fuera de tu código.
- 04
Guárdala en los Secrets de Lovable
Abre Settings y luego Secrets y añade UM_API_KEY, o usa el campo seguro que muestra Lovable cuando una función necesita una clave. Lovable la inyecta solo en las Edge Functions.
- 05
Pega el prompt de abajo
Lovable escribe la Edge Function y el disparador que la llama. Envía la primera prueba a tu propio número y a tu bandeja.
Copiar y pegar
¿Qué prompt pegas en Lovable?
Pega esto en el chat de Lovable. Pide una Edge Function, la clave desde Secrets y un mensaje de bienvenida al registrarse. Cambia el disparador y el texto según tu app.
Añade mensajería a esta app con Unlimited Messaging (API REST, documentación: https://docs.unlimitedmessaging.app).
1. Crea una Edge Function de Supabase llamada notify-user. Lee la clave de API del secreto UM_API_KEY: pídeme que lo añada en Secrets, nunca la pongas en el código del frontend ni en una variable VITE_.
2. La función llama a POST https://api.unlimitedmessaging.app/message con la cabecera "Authorization: Bearer <UM_API_KEY>" y este cuerpo JSON: { "to": { "phone": "<número E.164>", "email": "<email>" }, "subject": "...", "text": "...", "channels": [{ "channel": "EMAIL" }, { "channel": "WHATSAPP" }, { "channel": "SMS" }] }.
3. Mantén activada la verificación JWT y envía solo al email y al teléfono del usuario conectado, cargados en el servidor, nunca a una dirección tomada del cuerpo de la petición.
4. Llama a la función justo después del registro con un mensaje corto de bienvenida y registra la respuesta de la API para que los errores se vean.
5. Antes de probar, pídeme mi número de teléfono y mi email.// 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' },
});
});// 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' },
});Seguridad
¿Dónde debe estar la clave de API en una app de Lovable?
Solo en el servidor. La propia documentación de Lovable marca la línea: secretos para las Edge Functions, variables VITE_ para valores que pueden ser públicos.
En Secrets, leída por la Edge Function
Lovable guarda los secretos cifrados, los inyecta en las Edge Functions al ejecutarse y nunca los incluye en el código del frontend. La función lee la clave con Deno.env.get('UM_API_KEY').
Nunca en una variable VITE_
La documentación de Lovable indica que las variables VITE_ se incrustan en el bundle del cliente al compilar. Cualquiera puede leerlas en las herramientas de desarrollo del navegador y enviar mensajes desde tus cuentas.
Tampoco en el chat
No pegues la clave en texto plano en un prompt. Lovable muestra un campo seguro cuando una función necesita un secreto; úsalo, o la página Secrets.
Nada de relé abierto
Una función que envía cualquier texto a cualquier número sacado del cuerpo de la petición deja que desconocidos usen tu WhatsApp y tu buzón. Mantén la verificación JWT, busca el destinatario en el servidor y limita los envíos por usuario.
Una clave por entorno
Crea una clave para pruebas y otra para producción, así puedes revocar una clave filtrada sin romper la app en producción.
Respuestas
¿Cómo recibes las respuestas en tu app de Lovable?
En todos los planes, las respuestas llegan a la bandeja de Unlimited Messaging: emails agrupados por hilo, chats de WhatsApp y SMS recibidos por la app Android después de iniciar sesión. Para llevarlas a tu propia app necesitas webhooks, incluidos en los planes de pago: Medium a 19 € al mes y Max a 29 € al mes.
Pide a Lovable una segunda Edge Function, por ejemplo um-webhook, registra su URL en la página Webhooks del panel y suscríbete a message.received (un mensaje entrante) y message.status (enviado, entregado, leído, fallido). A esta función la llama Unlimited Messaging, no un usuario conectado, así que desactiva la verificación JWT para ella y comprueba la firma en su lugar.
Cada entrega va firmada según la especificación Standard Webhooks, con un HMAC-SHA256 en la cabecera webhook-signature. Responde con un 2xx en menos de 10 segundos y haz el trabajo después. Las entregas fallidas se reintentan durante algo más de 3 días, así que deduplica por eventId.
{
"type": "message.received",
"eventId": "whd_...",
"occurredAt": "2026-11-09T10:00:01.000Z",
"data": {
"channel": "WHATSAPP",
"message": {
"text": "Yes, see you Monday!"
}
}
}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}`);
}Límites
¿Cuáles son los límites, sinceramente?
Unlimited Messaging envía desde cuentas personales a ritmo humano. Encaja con notificaciones, recordatorios y conversaciones, no con envíos masivos.
WhatsApp no es oficial
Tu número se vincula como un dispositivo, igual que WhatsApp Web, no a través de la Business Platform de Meta. Escribir a gente que no lo ha pedido hace que bloqueen números. Para marketing a gran escala, la herramienta adecuada es la Cloud API oficial de Meta.
El email sigue los límites de tu buzón
Una cuenta personal de Gmail envía hasta 500 emails al día. Usa un buzón de Workspace o de tu dominio para más, y un proveedor de email para las newsletters.
Los SMS van al ritmo de Android
Android pide confirmación a partir de 30 SMS en 30 minutos, así que la app espacia los mensajes. Cada SMS cuenta en tu plan del operador, y el móvil que envía tiene que ser Android.
Lo que deja fuera el plan gratis
Los mensajes del plan Gratis terminan con "Sent with UnlimitedMessaging.app". Los archivos multimedia, las notas de voz y los webhooks requieren un plan de pago, que además quita el pie.
FAQ
Preguntas sobre la mensajería desde Lovable
Fuentes
Fuentes y referencias
Para verificar por ti mismo la información de este artículo:
- Secrets (cifrados, inyectados en las Edge Functions, las variables VITE_ acaban en el bundle del cliente)Documentación de Lovable
- Lovable Emails (planes de pago, 50.000 emails al mes, límites de envío por hora)Documentación de Lovable
- Conector Resend (dominio verificado, remitente de prueba [email protected])Documentación de Lovable
- Conector TwilioDocumentación de Lovable
- Límites de las Edge Functions (conexiones salientes a los puertos 25 y 587 no permitidas)Documentación de Supabase
- Variables de entorno y secretos de las Edge FunctionsDocumentación de Supabase
- Precios de Resend (Free: 3.000 emails al mes, 100 al día)Resend
- Precios de SMS en Estados Unidos (0,0083 $ por segmento)Twilio
- A2P 10DLC Brand Registration (tarifa de marca de 4,50 $)Twilio
- Revisión de plantillas de mensajes (decisión en 24 horas)Meta for Developers
- Límites de mensajería de WhatsApp (250 destinatarios únicos cada 24 horas al empezar)Meta for Developers
- Límites de envío y recepción de correo (500 emails al día)Ayuda de Gmail
- SmsUsageMonitor (umbral de 30 SMS en 30 minutos)Android Open Source Project
- Especificación Standard WebhooksStandard Webhooks

Escrito por
Ilian · Ingeniero de software senior
Ingeniero de software senior, funda y dirige varias empresas tecnológicas. Diseña productos en torno a las API de mensajería, la automatización y la integración de la IA, y comparte aquí lo que aprende construyendo.
Lanza las notificaciones hoy. Paga después, si acaso.
Crea una cuenta gratis, conecta un buzón, un número o un móvil, y pega el prompt en Lovable.