Ir al contenido

Email

Envía correos transaccionales desde tu app. Gestiona identidades de remitente y rastrea entregas desde Admin > Email de tu app.

Cualquier app de Proyecta puede enviar correo transaccional. Verifica una identidad de remitente y luego envía desde el código de tu app — sin necesidad de una cuenta separada con un proveedor de correo.

Abre Admin > Email en el builder — o /admin en tu sitio publicado. Tiene dos partes:

Parte Para qué sirve
Identities Agrega y verifica direcciones de correo o dominios como remitente
Sent Consulta los correos enviados con su estado de entrega (enviado, entregado, rebotado, etc.)

Puedes agregar una nueva identidad de remitente y revisar el historial de entregas — todo sin escribir código.

  1. Crea y verifica una identidad de remitente (una dirección de correo o un dominio) en tu panel de administración
  2. Envía — desde tu app con useSendEmail(), o desde el panel de administración para campañas

Envía desde una dirección compartida (@proyectamail.com)

Sección titulada «Envía desde una dirección compartida (@proyectamail.com)»

La opción más sencilla es reclamar una dirección en el dominio de envío compartido de Proyecta, @proyectamail.com. Se verifica en el instante en que la creas — la plataforma ya es dueña de ese dominio, por lo que no necesitas configurar ningún registro DNS.

Esto se hace en la sección Emails del panel de administración de tu app: ingresa la dirección que quieres y estará lista de inmediato.

Las direcciones individuales solo funcionan con @proyectamail.com. Si solicitas una en otro dominio (p. ej., hello@myapp.com), la solicitud será rechazada — para enviar desde tu propio dominio, debes verificar el dominio completo (ver más abajo). Cada dirección compartida se reserva de forma global, por lo que ninguna otra app puede enviar con el mismo remitente de @proyectamail.com.

Para enviar desde tu propio dominio — desde cualquier dirección en él (hello@, support@, noreply@, etc.) — verifica el dominio completo. A diferencia de una dirección compartida de @proyectamail.com, un dominio personalizado no se verifica de manera instantánea.

Agrega el dominio en la misma sección Emails. Se registrará con el proveedor de correo y te mostrará los registros SPF, DKIM y DMARC que debes publicar en tu DNS. El remitente permanece en estado pending hasta que esos registros se propaguen y el proveedor los confirme; luego cambia a verified — usa el botón de re-verificación después de publicarlos.

La verificación de dominios por DNS está completamente implementada — los registros los genera el proveedor y cada re-verificación consulta su estado nuevamente.

Bajo el capó: Proyecta autentica tu dominio de envío con su proveedor de identidad de correo (Resend) y entrega tus mensajes a través de su proveedor transaccional (SendGrid). Nunca necesitas administrar una cuenta con ninguno de los dos.

Desde las páginas de tu app puedes enviar con el hook useSendEmail(). Eliges un template y pasas variables; la plataforma renderiza el mensaje en el idioma de la app y lo envía:

import { useSendEmail } from '@/hooks/useEmail.ts';
function ConfirmButton({ booking }) {
const { send, isPending, error } = useSendEmail();
return (
<button
disabled={isPending}
onClick={() =>
send({
template: 'booking_confirmation',
variables: { date: booking.date, service: booking.service },
})
}
>
Email me the details
</button>
);
}

Nota lo que no debes pasar: un destinatario, un asunto o HTML. Cada template declara su propia audiencia:

  • self (confirmaciones de reservas/pedidos, bienvenida) → la dirección del usuario que tiene sesión iniciada, tomada de su sesión.
  • owner (owner_alert) → los administradores de tu app.

Ambos requieren una sesión activa. Esto es intencional, no una limitación: la clave pública que autentica la llamada está incluida en el código fuente de tu página, por lo que permitir envíos a destinatarios arbitrarios haría que cualquiera pudiera usar tu app como relay de spam. Para notificarte desde un visitante anónimo, usa un formulario — los envíos de formularios ya le envían un correo al dueño y confirman al remitente de forma automática, y esa ruta no puede falsificarse desde el navegador.

Los errores llegan como PlatformApiError: 401 (se requiere sesión), 403 (template no habilitado para esta app), 429 (límite de tasa alcanzado — muestra el mensaje y ofrece reintentar), 422 (no hay dirección registrada).

La pestaña Sent en tu panel de administración lista todo lo que tu app ha enviado con su último evento de entrega — entregado, abierto, con clic, rebotado, con queja — por lo que normalmente no necesitas código para esto.

Cada entrada muestra su estado — sent, delivered, opened, clicked, bounced o complained — y puedes abrir cualquier mensaje para leer el HTML exacto y el texto que se envió. Si las entregas están fallando, este es el primer lugar donde debes buscar.

No necesitas escribir esto a mano:

  • "Verify hello@myapp.com as a sending identity."
  • "Email the customer a confirmation after they finish booking."
  • "After a successful checkout, send the customer their receipt."
  • "Show me the last 20 emails we've sent and whether they bounced."
  • La dirección from debe ser una identidad verificada. Enviar con una dirección no verificada devuelve un error.
  • Se aplican límites mensuales según tu plan de Proyecta.
  • Editor de templates — diseña templates transaccionales de forma visual en el builder
  • Endpoint de envío masivo/por lotes para envíos a gran escala