Correo para desarrolladores frontend
Envía correos directamente desde tu frontend.Paga por tus picos, no todo el año.
Conecta el proveedor de correo que ya usas, crea plantillas HTML con parámetros tipados y llama a send() desde el navegador. Cuando un pico de temporada supera tu cuota, no se descarta nada: los mensajes esperan en la cola de correos retenidos y salen en cuanto recargas.
Plan Free con 300 correos al mes. Sin tarjeta.
contact.js
import { init, sendForm } from '@frontmail/browser';
init({ publicKey: 'pk_live_2Jx8…' });
const form = document.querySelector('#contact');
form.addEventListener('submit', async (event) => {
event.preventDefault();
const { status } = await sendForm('svc_default', 'tpl_contact', form);
// 'queued' – or 'held' when you're out of credits. Never dropped.
});ContactForm.tsx
import { FrontmailProvider, useSendEmail } from '@frontmail/react';
function ContactForm() {
const { send, status } = useSendEmail('svc_default', 'tpl_contact');
return (
<form
onSubmit={(event) => {
event.preventDefault();
const { email, message } = Object.fromEntries(new FormData(event.currentTarget));
send({ email, message });
}}
>
<input name="email" type="email" required />
<textarea name="message" required />
<button disabled={status === 'sending'}>Send</button>
</form>
);
}
const options = { publicKey: 'pk_live_2Jx8…' };
// <FrontmailProvider options={options}><ContactForm /></FrontmailProvider>ContactForm.vue
<script setup lang="ts">
import { reactive } from 'vue';
import { useSendEmail } from '@frontmail/vue';
const { send, status } = useSendEmail('svc_default', 'tpl_contact');
const form = reactive({ email: '', message: '' });
</script>
<template>
<form @submit.prevent="send(form)">
<input v-model="form.email" type="email" required />
<textarea v-model="form.message" required />
<button :disabled="status === 'sending'">Send</button>
</form>
</template>ContactForm.svelte
<script lang="ts">
import { createFrontmail, frontmailForm } from '@frontmail/svelte';
const frontmail = createFrontmail({ publicKey: 'pk_live_2Jx8…' });
const { status } = frontmail;
</script>
<form use:frontmailForm={{ serviceId: 'svc_default', templateId: 'tpl_contact', frontmail }}>
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button disabled={$status === 'sending'}>Send</button>
</form>order-confirmation.ts
import { Frontmail } from '@frontmail/node';
const frontmail = new Frontmail({ privateKey: process.env.FRONTMAIL_PRIVATE_KEY });
await frontmail.send({
serviceId: 'svc_transactional',
templateId: 'tpl_order_confirmation',
params: {
customer_name: 'Jana',
order_id: 'A-1042',
items: [{ title: 'Ceramic mug', qty: 2 }],
},
});Cómo funciona
Del formulario a la bandeja de entrada en tres pasos
Conecta un servicio
Conecta SMTP, Gmail, Outlook o un proveedor transaccional como Mailgun, Postmark o SES. Las credenciales se cifran y se comprueban a diario.
Diseña una plantilla HTML
Escribe HTML completo con Handlebars, define parámetros tipados y mira la vista previa en vivo en escritorio, móvil, modo claro y oscuro.
Envía desde tu código
Llama a send() con tu clave pública desde cualquier framework, o desde tu servidor con una clave privada. Los reintentos y la idempotencia vienen incluidos.
Ningún correo perdido
Quedarte sin créditos nunca significa perder un mensaje
Las cuotas se agotan y los tokens de OAuth caducan. Para Frontmail ambas cosas son un motivo para esperar, nunca para descartar un correo.
frontmail.send()- ¿Hay créditos disponibles?
- SíEn cola y enviadoPrimero la cuota, después el paquete que caduca antes.
- NoMargen de sobregiro+10 % de tu cuota mensual en los planes de pago, facturado en la siguiente factura.
- Retenido, no descartadoLa API responde 202 con el estado «held». Los mensajes esperan hasta 3 días en Free o 14 días en los planes de pago.
- Liberado automáticamenteLa compra de un paquete, una recarga automática, un cambio de plan o un nuevo periodo de facturación envían los correos retenidos, del más antiguo al más reciente.
- ¿El proveedor rechaza tus credenciales?
- Entra en acción el servicio de respaldoLas plantillas pueden indicar un servicio de respaldo para errores de autenticación o permanentes.
- Retenido hasta que se arregleSin respaldo, los mensajes quedan retenidos y se reenvían en cuanto el servicio vuelve a funcionar.
Cola de correos retenidos
¿Sin créditos? La solicitud se acepta y se guarda. Recibes un correo antes de que caduque nada y puedes liberar o descartar los mensajes retenidos en bloque.
Margen de sobregiro
Los planes de pago tienen un margen del 10 % de su cuota mensual, así que un mes algo más ajetreado simplemente sigue enviando.
Recarga automática
Elige un paquete y un umbral, o recarga con el primer mensaje retenido. Los límites de gasto evitan sorpresas en tu tarjeta.
Comprobaciones de estado y respaldo
Cada servicio se comprueba a diario y tras cada error de autenticación. Unas credenciales rotas activan una alerta, un aviso en el panel y el servicio de respaldo.
Alertas de uso al 50, 80 y 100 % y con tu primer mensaje retenido.
Paquetes de créditos
Quédate con un plan pequeño. Compra paquetes para los meses fuertes.
Los paquetes son compras únicas, válidas de 3 a 12 meses, y funcionan en todos los planes, Free incluido. Indica el volumen que esperas cada mes y te buscamos la combinación más barata.
5000 correos
válido 3 meses
10 €
2 € por cada 1000
Comprar este paquete25.000 correos
válido 6 meses
39 €
1,56 € por cada 1000
Comprar este paquete100.000 correos
válido 12 meses
129 €
1,29 € por cada 1000
Comprar este paquete
Nuestra recomendación
Plan Free
Paquetes que comprar
- enero: 1× paquete de 5000 correos10 €
- marzo: 1× paquete de 25.000 correos39 €
- julio: 1× paquete de 25.000 correos39 €
- diciembre: 1× paquete de 25.000 correos39 €
- Plan
- 0 €
- Paquetes
- 127 €
- Total del año
- 127 €
Un plan que cubra tu pico de 25.000 correos todo el año (Business 50k) costaría 468 €. Ahorras 341 € (73 %).
Empieza gratisFunciones
Todo lo que necesita un formulario de contacto, y mucho más
Plantillas HTML con vista previa en vivo
HTML completo, condiciones y bucles de Handlebars, parámetros tipados con validación, versiones con comparación de cambios y vuelta atrás.
Tu proveedor, tu reputación
SMTP, Gmail, Outlook, Mailgun, SES, Postmark, Mailjet, Brevo y Resend, con un servicio de respaldo por plantilla.
Protección antispam incluida
Cloudflare Turnstile en todos tus formularios con un clic, lista de dominios permitidos, límites por IP y por clave, bloqueo de navegadores headless y alertas de anomalías.
Historial con búsqueda
Contenido renderizado, parámetros y una línea de tiempo de eventos para cada mensaje. Reenvío con un clic y exportación a CSV.
Seguimiento de entregas
Entregado, rebotado, marcado como spam, abierto y con clics, directamente desde los webhooks de tu proveedor, y los rebotes duros se bloquean automáticamente.
Equipos, roles y MFA
Invita a tu equipo como propietario, administrador, desarrollador, lector o facturación. TOTP, códigos de respaldo y un registro de auditoría para las acciones sensibles.
SDKs con parámetros tipados
Vanilla JS, React, React Native, Vue, Svelte y Node. Ejecuta npx frontmail types y tu editor conocerá cada parámetro de tus plantillas.
Errores que se explican solos
Un único formato de error con código, mensaje y enlace a la documentación. Los SDKs reintentan los errores de red y los 5xx sin enviar dos veces.
Proveedores
Funciona con el servicio de correo que ya tienes
Buzones personales para sitios pequeños y proveedores transaccionales para escalar, con una guía paso a paso para cada uno en la documentación.
- SMTPZoho, IONOS, tu propio servidor…SMTP
- GmailOAuth
- Outlook / Microsoft 365OAuth
- Amazon SESAPI
- MailgunEU / USAPI
- PostmarkAPI
- MailjetAPI
- BrevoAPI
- ResendAPI
¿Por qué no llamar directamente a la API de tu proveedor?
Amazon SES, Mailgun, Postmark o la API de Gmail entregan el correo. Todo lo que rodea a un formulario público – claves, bots, caídas, plantillas, historial – queda en manos de tu propio backend. Frontmail es ese backend y sigue enviando a través de tu proveedor.
| Lo que necesitas | Solo la API del proveedor | Con Frontmail |
|---|---|---|
| Enviar desde una web o una app móvil | Necesita una clave API secreta o un token OAuth que nunca debe llegar al navegador, así que construyes y mantienes tu propio backend. | Una clave pública y SDK para web, React Native, Kotlin y Swift. Sin servidor que programar ni mantener. |
| Frenar bots en un formulario público | Tu backend tiene que añadir CAPTCHA, límites de peticiones y comprobación de origen. | Turnstile, dominios permitidos, límites por IP y por clave, y contenido bloqueado siempre que el destinatario venga del formulario. |
| Credenciales caducadas o caída del proveedor | El envío falla y tu código decide qué pasa con el correo. | Comprobación diaria de los servicios, un servicio de respaldo por plantilla y los correos fallidos quedan retenidos y se envían al reconectar. |
| Plantillas | Cada proveedor tiene su propio formato y API de plantillas, o el HTML vive en tu código. | Editor HTML con vista previa en vivo, parámetros tipados, versiones y variantes de idioma. La misma plantilla funciona con cualquier proveedor. |
| Historial y eventos de entrega | Cada proveedor informa de los eventos a su manera (webhooks, notificaciones SNS) y tú los guardas. | Un único historial de mensajes con búsqueda y estados entregado, rebotado, denunciado, abierto y clicado para todos los proveedores. |
| Cambiar de proveedor | Reescribir la integración. | Cambias el servicio en el panel y tu código sigue igual. |
Frontmail no sustituye a tu proveedor: los correos siguen saliendo de tu dominio a través de tu cuenta. Si ya tienes un backend que envía grandes volúmenes, llamar directamente a tu proveedor puede salirte más barato. Los nombres de productos son marcas de sus respectivos propietarios.
Si vienes de EmailJS
Cambia un import
El paquete @frontmail/emailjs-compat ofrece las mismas funciones que @emailjs/browser. Vuelve a crear tu servicio y tu plantilla en Frontmail, cambia el import y conserva tu código.
- 1Conecta tu servicio de correo e importa el HTML de tu plantilla.
- 2Sustituye el import del paquete y tus claves.
- 3Publica. Si quieres, pásate más adelante a @frontmail/browser para tener parámetros tipados.
- import emailjs from '@emailjs/browser';
+ import emailjs from '@frontmail/emailjs-compat';
emailjs.init({ publicKey: 'YOUR_PUBLIC_KEY' });
emailjs
.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', '#contact-form')
.then((response) => console.log('SUCCESS', response.status));Cómo se comparan ambos servicios
| Situación | EmailJS* | Frontmail |
|---|---|---|
| Cuota mensual agotada | Las solicitudes siguientes no se envían hasta que se renueva la cuota o se cambia de plan. | Las solicitudes se aceptan y se retienen hasta 14 días (3 días en Free), y se envían automáticamente después de recargar. |
| Límite de peticiones de la API REST | 1 petición por segundo. | De 2 a 50 peticiones por segundo según el plan, más un endpoint de envío por lotes. |
| Pico de temporada | Pasar a un plan superior. | Mantén tu plan y compra un paquete de créditos válido de 3 a 12 meses. |
* Información sobre EmailJS a septiembre de 2026, según emailjs.com/pricing. EmailJS es una marca de su titular; Frontmail no está afiliado a EmailJS.
Comparar Frontmail con otros serviciosPrecios
Planes sencillos. Paquetes para los picos.
Empieza gratis y cambia de plan cuando necesites más. Con la facturación anual ahorras un 20 %.
Free
300 correos / mes
0 €/ mes
Gratis para siempre
Empieza gratis- 3 plantillas
- Sin adjuntos
- Historial: 7 días
- 1 usuario
- 2 peticiones / segundo
- Cola de retenidos: 3 días
- Dominios permitidos y Turnstile
- Pie «Enviado con Frontmail»
Starter
3000 correos / mes
7 €/ mes
84 € facturado anualmente
Elegir Starter- 10 plantillas
- Adjuntos de hasta 1 MB por solicitud
- Historial: 30 días
- 1 usuario
- 5 peticiones / segundo
- Cola de retenidos: 14 días
- Margen de sobregiro del 10 %
- Dominios permitidos y Turnstile
- El más elegido
Pro
10.000 correos / mes
15 €/ mes
180 € facturado anualmente
Elegir Pro- Plantillas ilimitadas
- Adjuntos de hasta 5 MB por solicitud
- Historial: 90 días
- 5 usuarios
- 20 peticiones / segundo
- Cola de retenidos: 14 días
- Margen de sobregiro del 10 %
- Dominios permitidos y Turnstile
Business
50.000 correos / mes
39 €/ mes
468 € facturado anualmente
Elegir Business 50k- Plantillas ilimitadas
- Adjuntos de hasta 25 MB por solicitud
- Historial: 180 días
- Usuarios ilimitados
- 50 peticiones / segundo
- Cola de retenidos: 14 días
- Margen de sobregiro del 10 %
- Dominios permitidos y Turnstile
Niveles Business
Paquetes de créditos
Compra única, disponible en todos los planes. Se usan después de tu cuota mensual, empezando por los que caducan antes.
Compara todos los planes
| Plan | Free | Starter | Pro | Business 50k | Business 100k | Business 200k |
|---|---|---|---|---|---|---|
| Precio / mes | 0 € | 7 € | 15 € | 39 € | 71 € | 127 € |
| Correos / mes | 300 | 3000 | 10.000 | 50.000 | 100.000 | 200.000 |
| Plantillas | 3 | 10 | Ilimitado | Ilimitado | Ilimitado | Ilimitado |
| Adjuntos | – | 1 MB | 5 MB | 25 MB | 25 MB | 25 MB |
| Historial | 7 días | 30 días | 90 días | 180 días | 180 días | 180 días |
| Usuarios | 1 | 1 | 5 | Ilimitado | Ilimitado | Ilimitado |
| Límite de peticiones | 2 rps | 5 rps | 20 rps | 50 rps | 50 rps | 50 rps |
| Sobregiro | – | 10 % | 10 % | 10 % | 10 % | 10 % |
| Cola de retenidos | 3 días | 14 días | 14 días | 14 días | 14 días | 14 días |
Precios sin IVA. A las empresas de la UE con un NIF-IVA válido se les factura con inversión del sujeto pasivo.
Preguntas sobre facturación
¿La cuota que no uso se acumula?
No: la cuota mensual se renueva en cada periodo de facturación. Los paquetes de créditos son distintos: siguen siendo válidos 3, 6 o 12 meses, así que cómpralos cuando los necesites.
¿Qué pasa si me quedo sin créditos?
Los planes de pago usan primero el margen de sobregiro. Después, los mensajes nuevos se retienen (no se rechazan) y salen automáticamente en cuanto compras un paquete, se activa la recarga automática, mejoras tu plan o empieza un nuevo periodo. Si prefieres errores directos, cambia tu organización al modo de rechazo y la API devolverá 402.
¿Cómo se factura el sobregiro?
Los créditos de sobregiro que realmente usaste se añaden a tu siguiente factura. El sobregiro que no usas no cuesta nada.
¿Puedo cambiar o cancelar mi plan?
Las mejoras se aplican al instante con un cargo prorrateado. Los cambios a un plan inferior y las cancelaciones se aplican al final del periodo pagado. Los paquetes que ya compraste siguen siendo válidos hasta que caduquen.
¿En qué moneda pagaré?
Los clientes facturados en la UE pagan en euros; el resto, en dólares estadounidenses. El IVA se calcula al pagar según tu país de facturación y tu NIF-IVA.
¿Cómo puedo pagar?
Con tarjeta, Apple Pay o Google Pay, y con adeudo directo SEPA donde esté disponible. Cada pago incluye una factura que puedes descargar desde el panel.
Preguntas frecuentes
Preguntas frecuentes
¿Es seguro poner una clave pública en mi frontend?
Sí. Una clave pública solo puede enviar con tus plantillas, solo desde los dominios de tu lista de permitidos y siempre detrás de Turnstile y de límites de peticiones. Las claves privadas son solo para servidores y nunca deben estar en el código del navegador.
¿Necesito mi propio proveedor de correo?
Sí: Frontmail envía a través de un servicio que tú conectas, así que los mensajes salen de tu dominio y con tu reputación. Para un sitio pequeño basta con una cuenta personal de Gmail u Outlook.
¿Qué incluye el plan Free?
300 correos al mes, 3 plantillas, protección antispam y 7 días de historial. Los correos llevan un pequeño pie «Enviado con Frontmail». También en Free puedes comprar paquetes de créditos.
¿Dónde se guardan mis datos?
En la región eu-central-1 de AWS (Fráncfort, Alemania). Las credenciales de los proveedores se cifran con AWS KMS. El historial de mensajes se conserva solo el tiempo que permite tu plan.
¿Y si caduca mi conexión con Gmail u Outlook?
Comprobamos cada servicio a diario e inmediatamente después de un error de autenticación. Recibes un correo y un aviso en el panel; los mensajes usan tu servicio de respaldo o esperan retenidos hasta que vuelvas a conectarlo.
¿Puedo enviar también desde un servidor?
Sí. El SDK de Node y la API REST aceptan una clave privada, que omite la comprobación de origen y el CAPTCHA y habilita el envío por lotes de hasta 100 mensajes por solicitud.
¿Por qué Frontmail y no Amazon SES, Mailgun o la API de Gmail?
Los usas juntos. Esas API necesitan una clave secreta, así que no se pueden llamar desde un navegador ni desde una app. Frontmail se sitúa en medio: guarda las credenciales, protege tu formulario de los bots, genera tus plantillas y envía a través del proveedor que conectes.
¿Puedo enviar correos con Amazon SNS?
SNS es un servicio de notificaciones: sus suscripciones de correo envían avisos en texto plano a direcciones que confirmaron la suscripción. Sirve para alertas, no para correos a tus clientes. Para enviar desde tu dominio, conecta Amazon SES: Frontmail convierte sus notificaciones de entrega de SNS en estados de mensaje.
Publica el formulario hoy. Olvídate de preocuparte por la temporada alta.
Plan Free, sin tarjeta y con la API completa. Cambia de plan o añade un paquete cuando tu tráfico lo pida.