Pular para o conteúdo

Email

Envie e-mails transacionais pelo seu app. Gerencie identidades de remetente e acompanhe as entregas em Admin > Email do seu app.

Todo app do Proyecta pode enviar e-mail transacional. Verifique uma identidade de remetente e depois envie pelo código do seu app — sem precisar de uma conta separada em nenhum provedor de e-mail.

Abra Admin > Email no builder — ou /admin no seu site publicado. Ela tem duas partes:

Parte Para que serve
Identities Adicione e verifique endereços de e-mail ou domínios de remetente
Sent Veja os e-mails enviados com o status de entrega (enviado, entregue, devolvido etc.)

Você pode adicionar uma nova identidade de remetente e consultar o histórico de entregas — tudo sem escrever código.

  1. Crie e verifique uma identidade de remetente (um endereço de e-mail ou um domínio) no seu painel admin
  2. Envie — pelo seu app com useSendEmail(), ou pelo painel admin para campanhas

Envie a partir de um endereço compartilhado (@proyectamail.com)

Seção intitulada “Envie a partir de um endereço compartilhado (@proyectamail.com)”

O caminho mais simples é reservar um único endereço no domínio de envio compartilhado do Proyecta, @proyectamail.com. Ele é verificado no instante em que você o cria — a plataforma já é proprietária desse domínio, portanto não há registros DNS para configurar.

Você faz isso na seção Emails do painel admin do seu app: informe o endereço desejado e ele estará pronto imediatamente.

Endereços individuais funcionam apenas em @proyectamail.com. Solicitar um em outro domínio (por exemplo, hello@myapp.com) será rejeitado — para enviar pelo seu próprio domínio, verifique o domínio inteiro (veja abaixo). Cada endereço compartilhado é reservado globalmente, portanto dois apps não podem enviar como o mesmo remetente @proyectamail.com.

Para enviar pelo seu próprio domínio — usando qualquer endereço nele (hello@, support@, noreply@ etc.) — verifique o domínio completo. Ao contrário de um endereço @proyectamail.com compartilhado, um domínio personalizado não é verificado instantaneamente.

Adicione o domínio na mesma seção Emails. Ele será registrado junto ao provedor de e-mail, que exibirá os registros SPF, DKIM e DMARC para você publicar no seu DNS. O remetente fica como pending até que esses registros se propaguem e o provedor os confirme — então muda para verified. Use o botão de reverificação após publicá-los.

A verificação de domínio baseada em DNS está totalmente implementada — os registros são gerados pelo provedor e cada reverificação consulta novamente o status deles.

Por baixo dos panos: o Proyecta autentica seu domínio de envio junto ao seu provedor de identidade de e-mail (Resend) e entrega suas mensagens por meio do seu provedor transacional (SendGrid). Você nunca precisa gerenciar uma conta em nenhum dos dois.

Nas páginas do seu app, o envio é feito com o hook useSendEmail(). Você escolhe um template e passa as variáveis; a plataforma renderiza a mensagem no idioma do app e a envia:

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>
);
}

Observe o que você não precisa informar: destinatário, assunto ou HTML. Cada template declara o seu próprio público:

  • self (confirmações de reserva/pedido, boas-vindas) → o endereço do próprio usuário conectado, obtido da sessão.
  • owner (owner_alert) → os administradores do seu app.

Ambos exigem uma sessão ativa. Isso é intencional, não uma limitação: a chave publicável que autentica a chamada fica exposta no código-fonte da página, então um envio para destinatários arbitrários permitiria que qualquer pessoa usasse o seu app como relay de spam. Para notificar você mesmo a partir de um visitante anônimo, use um formulário — envios de formulário já enviam e-mail ao proprietário e confirmam ao remetente automaticamente, e esse caminho não é falsificável pelo navegador.

Os erros chegam como PlatformApiError: 401 (sessão necessária), 403 (template não habilitado para este app), 429 (limite de requisições atingido — exiba a mensagem e ofereça uma nova tentativa), 422 (nenhum endereço cadastrado).

A aba Sent no seu painel admin lista tudo o que o seu app enviou com o último evento de entrega — entregue, aberto, clicado, devolvido, marcado como spam — portanto, em geral você não precisa de código para isso.

Cada entrada traz seu status — sent, delivered, opened, clicked, bounced ou complained — e você pode abrir qualquer mensagem para ler o HTML e o texto exatos que foram enviados. Se as entregas estiverem falhando, este é o primeiro lugar para verificar.

Você não precisa fazer isso manualmente:

  • "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."
  • O endereço from deve ser uma identidade verificada. Enviar com um endereço não verificado retorna erro.
  • Limites mensais se aplicam de acordo com o seu plano no Proyecta.
  • Editor de templates — crie templates transacionais visualmente no builder
  • Endpoint de envio em massa/lote para mailings em larga escala