Bastidores

Desenvolvimento· Arrumando a casa · parte 7

Decidi mover o envio do Garfim do Resend para a Cloudflare.

O Garfim ainda envia pelo Resend. Explico por que vou mover esse envio para o Cloudflare Email Sending, o que se perde e o que falta resolver.

Hoje, o envio pelo Resend sem Reply-To; no plano, o Email Sending com Reply-To para a caixa do produto.

Quando um cliente responde a um e-mail do Garfim, a resposta volta com erro. Os e-mails transacionais saem pelo Resend, do endereço noreply@updates.garfim.com.br, no plano gratuito, e não há Reply-To na mensagem. O subdomínio updates não recebe e-mail porque não tem registro MX, que é o registro que indica onde um domínio recebe mensagens.

O envio transacional do Garfim é o último que ainda fica fora da Cloudflare. Domínio e recebimento de e-mail já estão lá, como contei nos textos sobre domínios e e-mail dos produtos. Em 30 de outubro decidi migrar esse envio para o Cloudflare Email Sending. A migração ainda está em planejamento, e este texto explica o motivo, o que se ganha, o que se perde e o que falta resolver antes da troca.

Uma resposta que volta com erro é uma falha que o cliente percebe. Antes de decidir, pesei o custo, as peças que saem e o que se perde com a troca.

Sair do Resend tira peças do caminho e evita um recurso pago

No Resend, o plano gratuito atende um time, e esse time é o do Garfim. Cada produto a mais pediria um segundo time, recurso do plano Pro, que custa US$ 20 por mês. O Email Sending está dentro do Workers Paid, plano que eu já pago, e inclui 3.000 envios por mês. Cada mil envios adicionais custa US$ 0,35.

Ou seja, todos os produtos enviam por um plano que já existe, e nenhum produto novo abre uma conta paga.

A troca também deixa um provedor a menos no caminho do e-mail. Saem uma conta externa, com os segredos que ela exige, e o webhook público de eventos. Menos peças são um dos motivos da decisão, porque cada peça a mais precisa ser configurada e mantida.

O Pagenello já envia pelo Email Sending, e outro produto nasceu assim

O Pagenello já envia pelo Email Sending, a partir de mail.pagenello.com. Quando alguém pede um first look no site, o Worker manda um aviso para a caixa do Pagenello e uma confirmação para o cliente. No teste de lançamento, em 30 de outubro, os dois e-mails chegaram.

Um produto que ainda não lancei também teve o envio trocado do Resend para o Email Sending no código, em 29 de outubro. Os dois usam o mesmo caminho que o Garfim vai usar depois da troca.

O padrão tem regras fixas. O transacional sai de mail. e o de marketing de news., cada um com DKIM, SPF e DMARC com p=reject publicados pela Cloudflare. DKIM e SPF autenticam quem envia pelo domínio. O DMARC com p=reject pede ao destinatário que rejeite a mensagem que falhar nessa checagem.

O Reply-To aponta para a caixa humana do produto, e o envio usa o binding send_email do Worker. Com a troca, o Garfim seguiria essas mesmas regras de remetente, autenticação e resposta.

O Email Sending não mostra aberturas e não evita repetições sozinho

Aceito duas perdas. Não há evento de abertura no Email Sending, então não há como saber se a pessoa abriu o aviso. Também não há chave de idempotência no envio.

Uma chave de idempotência é o identificador que permite ao sistema reconhecer que um pedido é repetição de outro. Sem ela, se uma tentativa for repetida, o próprio sistema precisa evitar o e-mail duplicado. Isso fica sob responsabilidade do código do Garfim.

Mesmo assim, aceito as perdas porque o ganho em custo e em peças justifica a troca. Registro as duas aqui para que nenhuma apareça depois como surpresa.

Antes da troca, a cota e o Reply-To precisam estar resolvidos

Dois itens precisam estar prontos antes da troca, e um terceiro vem depois dela:

  1. A cota diária da conta começa em 200 envios e é dividida entre todos os produtos que enviam por ela, inclusive o webmail.
  2. O envio novo passa a ter Reply-To: contato@garfim.com.br, para que a resposta do cliente chegue a uma pessoa.
  3. Depois da troca, saem do DNS os registros do Resend no subdomínio updates.

A cota exige mais atenção, porque a conta é compartilhada. Os 200 envios diários precisam ser planejados para o conjunto de produtos e para o webmail.

O Reply-To é a correção mais simples. Ele é o endereço para onde vai a resposta quando alguém clica em responder, e pode ser diferente do remetente. Hoje a resposta volta com erro. Com o endereço de contato, ela chega a uma pessoa.

A ordem importa: os registros do Resend saem do DNS só depois da troca.

A decisão de 30 de outubro ainda espera a troca

A decisão de migrar foi tomada em 30 de outubro. A troca, porém, ainda não aconteceu. Até lá, o Garfim segue enviando pelo Resend, do mesmo endereço e sem Reply-To.

Registrar a decisão antes da execução tem uma utilidade. Quando a troca acontecer, dá para comparar o que foi planejado com o que de fato saiu, incluindo a cota e as perdas listadas acima.

Quando todos os produtos enviam do mesmo lugar, o padrão de remetente, autenticação e resposta é um só. O Garfim é o último caso que falta para isso. Na parte 8, a série passa ao método de busca para Google e IAs.

Teste local verde até no S23, e o staging ainda achou um defeito.08 nov · DesenvolvimentoOutra IA revisou 4.170 traduções da IA em inglês e corrigiu 307.08 nov · Inteligência artificialA conta live do Stripe estava ativa, mas falhou na minha conferência.08 nov · LançamentoTrês regras de HSTS num só domínio: por que deixei o preload de fora.08 nov · DesenvolvimentoUma palavra a menos derrubou 13 páginas que já estavam no ar.08 nov · DesenvolvimentoOutro agente de IA revisou meu código 71 vezes e criou dois defeitos.08 nov · Inteligência artificialDepois de 20 anos de carreira, publiquei meu primeiro pacote no npm.08 nov · LançamentoSozinho com IA: iPhone, Android, SaaS com MCP e CLI, e já faturando.07 nov · BastidoresCopiei a mecânica dos líderes e recusei a mentira deles.07 nov · BastidoresA pergunta de LGPD que trava a venda: e o backup?07 nov · ProdutoA IA calibrou minha câmera pelos números. Ficou cara de lanterna.07 nov · BastidoresUm usuário não via o dia de ontem. Abri todo o passado do Garfim.07 nov · Produto62% baixavam o Garfim. O problema estava antes da página.07 nov · LançamentoO idioma certo na tela pode virar o errado no servidor.07 nov · DesenvolvimentoO limite de 10 por minuto que deixou passar muito mais.07 nov · DesenvolvimentoUm PR do Dependabot travou meu banco e as rotas voltaram 500.07 nov · DesenvolvimentoMeus produtos novos não começam do zero. Começam de um clone.07 nov · DesenvolvimentoTirei uma trava da minha IA e a resposta caiu de 5,5 s para 3,7 s.07 nov · DesenvolvimentoTroquei velocidade por uma auditora que confere cada frase.07 nov · Inteligência artificialEscrevi o método CERNE lendo seis especificações reais.07 nov · Inteligência artificialComo anunciar na Meta e vender online no CPF sem abrir empresa.05 nov · BastidoresPausei anúncios depois de ignorar o resultado anterior.05 nov · BastidoresComo depurei um erro de API sem log no registro do Garfim.05 nov · DesenvolvimentoComo forçar atualização no React Native antes de um defeito grave.05 nov · DesenvolvimentoComo levei o LCP do ClipLeve de 9,9 s para menos de 1,5 s.05 nov · DesenvolvimentoPubliquei 650 páginas contra a regra do meu método.05 nov · Inteligência artificialUma conta para organizar erros, métricas e IA dos meus produtos.05 nov · BastidoresSeparei o painel do site e pus o Access na porta.05 nov · DesenvolvimentoUma lista de 69 itens encontrou requisitos só no papel.05 nov · BastidoresO antispam esperou tanto que parou o formulário.05 nov · DesenvolvimentoCortei a publicação de 17 minutos para 4 na minha máquina.05 nov · DesenvolvimentoEu gravo. A IA corta, legenda e entrega o vídeo curto.05 nov · Inteligência artificialComo criar anúncios UGC com IA usando o método PROVA.05 nov · Inteligência artificialA IA disse que usou as skills. A página provou o contrário.05 nov · Inteligência artificialNove páginas reprovadas antes de encontrar uma identidade.05 nov · Inteligência artificialEm 48 horas, juntei domínios, e‑mail, sites e medição num padrão só.30 out · BastidoresPor que tirei os três sites do GPT Sites.30 out · DesenvolvimentoComo troquei o luisjunior.ai com cerca de 10 segundos fora do ar.30 out · DesenvolvimentoRefiz o luisjunior.ai do zero: cada afirmação com prova.30 out · LançamentoUm padrão para todos os domínios, inclusive os de produtos futuros.30 out · BastidoresTodo o e‑mail dos meus domínios saiu do VPS num só dia.30 out · DesenvolvimentoDecidi mover o envio do Garfim do Resend para a Cloudflare.30 out · DesenvolvimentoO método FONTE para aparecer no Google e nas respostas de IA.30 out · Inteligência artificialTrês sites, três decisões de busca, e uma delas é não gerar páginas.30 out · Inteligência artificialMedição de vários sites num painel só, com consentimento.30 out · BastidoresComo a IA me apresenta mídias para aprovação29 out · Inteligência artificialO Garfim chegou ao Google Play. Agora tem Android e iPhone.22 out · LançamentoConseguir testadores e esperar 14 dias: a reta final do Garfim no Android.22 out · BastidoresO ClipLeve chegou à App Store. O que aprendi até aqui.20 out · LançamentoO ClipLeve foi rejeitado de novo. Dessa vez, por uma palavra.20 out · ProdutoO Garfim foi aprovado. E já está na App Store.16 out · LançamentoA última negativa do Garfim: câmera, assinatura e o caminho inteiro.16 out · LançamentoClipLeve: o cuidado por trás de um vídeo mais leve.12 out · ProdutoPor que restaurar uma assinatura pode falhar em outra conta.12 out · ProdutoQuando um aplicativo pode dizer que sua conta foi excluída?12 out · ProdutoO que a primeira negativa da App Store me fez explicar.08 out · LançamentoO que quero aprender com o teste fechado do Garfim.08 out · ProdutoO trabalho de uma assinatura continua depois da compra.03 out · DesenvolvimentoPor que o Garfim ganhou um plano gratuito.03 out · ProdutoO login funcionou. Por que a tela do Garfim não saiu do lugar?03 out · LançamentoPagenello: um site começa pelo que o visitante veio fazer.03 out · LançamentoComo uma foto do almoço vira um produto.27 set · ConcepçãoAs decisões que continuo tomando ao desenvolver com IA.27 set · DesenvolvimentoApresentar o Garfim ao público também é um teste do produto.27 set · Lançamento

GET luisjunior.ai/llms.txt

Esta é a versão do site escrita para modelos de linguagem: os mesmos fatos, sem layout, prontos para um assistente de IA ler e citar. Agentes no Chrome também encontram aqui ferramentas WebMCP para consultar produtos, textos e contato.

conectando…0 tokens · 0 tok/s