E-mail da loja
Como a loja envia e-mails transacionais, como personalizar cabeçalho, rodapé e fragmentos e como auditar o que foi entregue ou falhou.
Toda loja Venddor envia e-mails para clientes e para a própria equipe: confirmação de pedido, mudança de status, carrinho abandonado, avisos de CRM. Esta seção cobre as peças ao redor dos modelos de e-mail: o envio manual de uma mensagem avulsa, o layout (cabeçalho e rodapé que moldura todo e-mail), os fragmentos (trechos de HTML reutilizáveis) e o log de entrega, onde você descobre se uma mensagem saiu, falhou e por quê.
Como funciona
Um e-mail da plataforma é montado em três camadas: o modelo do evento (por exemplo "pedido criado"), o layout que envolve o modelo com cabeçalho e rodapé, e os fragmentos que o modelo inclui pelo código. Os modelos têm seção própria; aqui você gerencia as outras duas camadas e o resultado.
Cada linha do log tem um destes status:
status | Significado |
|---|---|
queued | Na fila, aguardando envio ou reenvio. |
sent | Entregue ao provedor de e-mail. |
failed | O provedor recusou ou a conexão falhou. A causa fica em error_message. |
bounced | O destinatário rejeitou a mensagem. |
Fluxo típico de operação
- Ver a saúde do envio
Chame Estatísticas do log para ver quantos e-mails saíram e quantos falharam hoje.
- Investigar falhas
Liste o log com
status=failed, abra uma linha e leiaerror_message. Erros de configuração do SMTP aparecem aqui em texto claro. - Corrigir e reenviar
Depois de corrigir a configuração, reenvie a linha. O mesmo registro volta para
queuede termina emsentoufailedde novo.
Conceitos-chave
Layout: cabeçalho e rodapé
Os dois HTMLs são trechos de tabela (<tr>...</tr>) que a plataforma encaixa antes e depois do corpo do modelo. Aceitam marcadores no formato {{store_name}}, {{logo_url}}, {{store_url}}, {{support_email}} e {{current_year}}. A prévia usa dados de exemplo, não os da sua loja.
Fragmentos
Um fragmento é um pedaço de HTML com um code (por exemplo email_footer). Os modelos o incluem com {{snippet "code"}}. O idioma do fragmento é fixado na criação e não pode ser trocado depois.
Status em letra ou em palavra
O banco guarda o status do log e do fragmento em uma letra, mas a API do log devolve a palavra (failed). Nos filtros, aceite-se tanto a palavra quanto a letra (failed, f). Nos fragmentos, o status é A (ativo) ou D (desativado) e a API devolve a letra.
Datas
Todas as datas saem em RFC 3339 em UTC (2026-10-11T21:03:49Z). No filtro date_to o dia informado entra por inteiro, até 23:59:59 UTC.
Endpoints
| Método e caminho | Para que serve | Autenticação | Página |
|---|---|---|---|
POST /api/v1/admin/email | Envia uma mensagem avulsa | administrador | Enviar e-mail |
GET /api/v1/admin/email-layout | Lista cabeçalhos e rodapés | administrador | Layout |
GET /api/v1/admin/email-layout/preview | Prévia renderizada | administrador | Layout |
PUT /api/v1/admin/email-layout/{type} | Altera o HTML | administrador | Layout |
POST /api/v1/admin/email-layout/{type}/reset | Volta ao padrão | administrador | Layout |
GET /api/v1/admin/email-snippets | Lista fragmentos | administrador | Fragmentos |
POST /api/v1/admin/email-snippets | Cria fragmento | administrador | Fragmentos |
PUT /api/v1/admin/email-snippets/{id} | Altera fragmento | administrador | Fragmentos |
DELETE /api/v1/admin/email-snippets/{id} | Apaga fragmento | administrador | Fragmentos |
GET /api/v1/admin/email-logs | Lista o histórico | administrador | Log de entrega |
GET /api/v1/admin/email-logs/stats | Totais do dia | administrador | Log de entrega |
GET /api/v1/admin/email-logs/{id} | Detalhe de uma linha | administrador | Log de entrega |
POST /api/v1/admin/email-logs/{id}/resend | Reenvia uma falha | administrador | Log de entrega |
Erros comuns
- Achar que
200emPOST /emailsignifica entregue. Com o módulo de e-mail desligado, ou com o provedorconsole(ambientes de teste), a resposta é200 "email sent"e nada sai. Leiaproviderelogna resposta. - Mandar
typediferente deheaderoufooterno layout. É400. - Esperar que
PUT /email-snippets/{id}limpe um campo. Campos vazios são ignorados, então não dá para esvaziarcontentpor aqui. - Tentar apagar um fragmento de sistema. Responde
500(veja a página de fragmentos). - Reenviar um e-mail com status
sent. Sófailedebouncedsão aceitos. - Paginar o log pedindo
per_pagemaior que 100. Valores fora de 1 a 100 voltam silenciosamente para 20.