{"id":13781,"date":"2025-05-15T00:00:00","date_gmt":"2025-05-15T00:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/"},"modified":"2026-06-15T10:51:58","modified_gmt":"2026-06-15T10:51:58","slug":"como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/","title":{"rendered":"Criando fluxos de trabalho de e-mail transacional para confirma\u00e7\u00f5es de pedidos com a API do Mailgun"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ao contr\u00e1rio dos e-mails de marketing, os e-mails transacionais (como confirma\u00e7\u00f5es de pedidos, notifica\u00e7\u00f5es de envio e redefini\u00e7\u00f5es de senha) s\u00e3o acionados por a\u00e7\u00f5es espec\u00edficas do usu\u00e1rio e fornecem atualiza\u00e7\u00f5es em tempo real sobre as intera\u00e7\u00f5es deles com sua plataforma. Eles ajudam a criar confian\u00e7a, reduzir as perguntas de suporte e proporcionar uma experi\u00eancia de compra tranquila.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As confirma\u00e7\u00f5es de pedidos s\u00e3o particularmente importantes, pois informam aos seus clientes que a compra foi bem-sucedida e fornecem ao usu\u00e1rio um registro dos detalhes da transa\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste tutorial, voc\u00ea aprender\u00e1 como criar um fluxo de trabalho de e-mail transacional para confirma\u00e7\u00f5es de pedidos usando a API do Mailgun.<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-7743\"><p class=\"h5 m-0\" id=\"toc-title-7743\">Table of contents<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#implementando-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacoes-de-pedidos\">Implementando fluxos de trabalho de e-mail transacional para confirma\u00e7\u00f5es de pedidos<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#a-interface-do-aplicativo\">A interface do aplicativo<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#configurando-a-conexao-do-mailgun\">Configurando a conex\u00e3o do Mailgun<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#projetando-o-modelo-de-e-mail\">Projetando o modelo de e-mail<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#implementando-a-funcionalidade-de-envio-de-e-mail\">Implementando a funcionalidade de envio de e-mail<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#integrando-com-eventos-do-aplicativo\">Integrando com eventos do aplicativo<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#testando-o-fluxo-de-trabalho\">Testando o fluxo de trabalho<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">08<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#monitorando-e-gerenciando-e-mails\">Monitorando e gerenciando e-mails<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">09<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#conclusao\">Conclus\u00e3o<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\"><b>Implementando fluxos de trabalho de e-mail transacional para confirma\u00e7\u00f5es de pedidos<\/b><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de come\u00e7ar, certifique-se de ter o <a href=\"https:\/\/login.mailgun.com\/login\/\" target=\"_tabs\" rel=\"noopener noreferrer\">conta do Mailgun<\/a> e <a href=\"https:\/\/nodejs.org\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Node.js<\/a> instalado em sua m\u00e1quina.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Assim que sua conta estiver registrada e ativada, clique em <b>Get started<\/b> e depois em <b>Create an API Key<\/b> para fornecer uma breve descri\u00e7\u00e3o da chave de API. Depois de gerada, copie e salve a chave de API em um local seguro.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-3951\" width=\"1728\" height=\"924\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/1__2_.png\" alt=\"API Key\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/1__2_.png 1728w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/1__2_-300x160.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/1__2_-768x411.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/1__2_-1024x548.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/1__2_-1536x821.png 1536w\" sizes=\"(max-width: 1728px) 100vw, 1728px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Essa chave ser\u00e1 usada para autenticar suas solicita\u00e7\u00f5es para a API do Mailgun.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para simplificar as coisas, clone o seguinte reposit\u00f3rio de interface de usu\u00e1rio (UI) e configure as vari\u00e1veis de ambiente executando os seguintes comandos do <code>npm<\/code>:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                $ git clone https:\/\/github.com\/Ikeh-Akinyemi\/draftdev-mailgunnerrn$ cd draftdev-mailgunner; npm install rn$ echo -e &quot;MAILGUN_API_KEY=your_api_key_here\nMAILGUN_DOMAIN=your_domain_here\nPORT=8080&quot; &gt;&gt; .env\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Este comando adiciona as bibliotecas mailgun.js, form-data, cors, dotenv e express para uso no servidor backend e cria alguns valores de espa\u00e7o reservado para a chave de API e o dom\u00ednio do Mailgun em um arquivo .env que voc\u00ea atualizar\u00e1 durante o tutorial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O dom\u00ednio do Mailgun oferece a op\u00e7\u00e3o de configurar seu pr\u00f3prio dom\u00ednio personalizado ou usar um sandbox para fins de teste. Voc\u00ea usar\u00e1 um dom\u00ednio sandbox neste tutorial. Voc\u00ea pode encontrar o dom\u00ednio sandbox do Mailgun navegando at\u00e9 <b>Send &gt; Sending &gt; Domain settings<\/b> em seu painel e clicando no bot\u00e3o <b>Select<\/b> na op\u00e7\u00e3o de integra\u00e7\u00e3o da <b>API<\/b>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-3957\" width=\"1746\" height=\"1040\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/2__2_.png\" alt=\"Mailgun API Sandbox\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/2__2_.png 1746w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/2__2_-300x179.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/2__2_-768x457.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/2__2_-1024x610.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/2__2_-1536x915.png 1536w\" sizes=\"(max-width: 1746px) 100vw, 1746px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Seu dom\u00ednio sandbox est\u00e1 inclu\u00eddo nos modelos fornecidos para a configura\u00e7\u00e3o do Mailgun. Lembre-se de atualizar o valor de MAILGUN_DOMAIN (atualmente your_domain_here) dentro do arquivo .env.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-3967\" width=\"1744\" height=\"1038\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/3__2_.png\" alt=\"Domain Update\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/3__2_.png 1744w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/3__2_-300x179.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/3__2_-768x457.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/3__2_-1024x609.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/3__2_-1536x914.png 1536w\" sizes=\"(max-width: 1744px) 100vw, 1744px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea deseja configurar um dom\u00ednio personalizado, siga as instru\u00e7\u00f5es detalhadas n <a href=\"https:\/\/youtu.be\/VI6aXV4YbdI\" target=\"_tabs\" rel=\"noopener noreferrer\">este tutorial do YouTube<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A interface do aplicativo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Neste cen\u00e1rio, voc\u00ea trabalhar\u00e1 com um aplicativo simples de carrinho de compras criado com HTML, CSS e JavaScript. O aplicativo permite que os usu\u00e1rios adicionem itens ao carrinho, ajustem as quantidades e prossigam para o checkout. Quando o usu\u00e1rio confirma sua compra, o aplicativo envia uma solicita\u00e7\u00e3o ao backend para processar o pedido e enviar um e-mail de confirma\u00e7\u00e3o. Para pr\u00e9-visualizar a UI, abra o arquivo <code>ui\/index.html<\/code> no navegador ou execute o comando Python <code>python3 -m http.server -d=.\/ui:<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-3993\" width=\"1750\" height=\"1048\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/4__3_.png\" alt=\"Shopping Cart Example\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/4__3_.png 1750w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/4__3_-300x180.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/4__3_-768x460.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/4__3_-1024x613.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/4__3_-1536x920.png 1536w\" sizes=\"(max-width: 1750px) 100vw, 1750px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Esta interface de usu\u00e1rio foi projetada para ser intuitiva, com foco em fornecer uma experi\u00eancia de checkout perfeita. O backend lida com o trabalho pesado, incluindo o processamento de pedidos e o envio de e-mails de confirma\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando a conex\u00e3o do Mailgun<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para integrar o Mailgun ao seu backend, voc\u00ea precisa inicializar o cliente do Mailgun usando sua chave de API. Veja como configurar a conex\u00e3o em seu backend Node.js:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                const formData = require(&#039;form-data&#039;);rnconst Mailgun = require(&#039;mailgun.js&#039;);rnrnconst mailgun = new Mailgun(formData);rnconst mg = mailgun.client({ username: &#039;api&#039;, key: process.env.MAILGUN_API_KEY });rnconst MAILGUN_DOMAIN = process.env.MAILGUN_DOMAIN;\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo inicializa o cliente do Mailgun, que ser\u00e1 usado para enviar e-mails transacionais. Certifique-se de atualizar o valor de <code>MAILGUN_API_KEY<\/code> (atualmente <code>your_api_key_here<\/code>) dentro do seu arquivo .env antes de continuar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teste a conex\u00e3o enviando um e-mail de teste de amostra:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                mg.messages.create(&#039;&lt;your-domain.com&gt;&#039;, {rn    from: &quot;Excited User &lt;mailgun@your-domain.com&gt;&quot;,rn    to: [&quot;test@example.com&quot;],rn    subject: &quot;Hello&quot;,rn    text: &quot;Testing some Mailgun awesomeness!&quot;rn})rn.then(msg =&gt; console.log(msg)) \/\/ logs response datarn.catch(err =&gt; console.error(err)); \/\/ logs any error\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode usar o dom\u00ednio sandbox fornecido pelo Mailgun para teste, mas precisa adicionar pelo menos um e-mail verificado para teste (at\u00e9 cinco). Para verificar seu endere\u00e7o de e-mail de teste, acesse <b>Send &gt; Sending &gt; Domain settings<\/b> no painel do Mailgun. Em seguida, insira seu endere\u00e7o de e-mail no campo de entrada designado e clique em <b>Add<\/b>. O Mailgun enviar\u00e1 um e-mail de verifica\u00e7\u00e3o para este endere\u00e7o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifique sua caixa de entrada e clique no link de verifica\u00e7\u00e3o <b>I Agree<\/b> para concluir o processo e registrar-se como um destinat\u00e1rio de teste autorizado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4002\" width=\"1738\" height=\"1048\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/5__3_.png\" alt=\"Verification Link\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/5__3_.png 1738w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/5__3_-300x181.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/5__3_-768x463.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/5__3_-1024x617.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/5__3_-1536x926.png 1536w\" sizes=\"(max-width: 1738px) 100vw, 1738px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Projetando o modelo de e-mail<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Os e-mails transacionais costumam exigir um conte\u00fado din\u00e2mico, como o nome do usu\u00e1rio, detalhes do pedido e informa\u00e7\u00f5es de envio. \u00c9 por isso que voc\u00ea precisa criar um modelo em HTML com espa\u00e7os reservados para os dados din\u00e2micos. Aqui est\u00e1 um exemplo de um modelo simples de confirma\u00e7\u00e3o de pedido:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                HTML                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-markup\">\r\n                            <code class=\"language-markup\">\r\n\r\n                                &lt;!DOCTYPE html&gt;rn&lt;html&gt;rn&lt;head&gt;rn    &lt;title&gt;Order Confirmation&lt;\/title&gt;rn&lt;\/head&gt;rn&lt;body&gt;rn    &lt;h1&gt;Thank you for your order, {{name}}!&lt;\/h1&gt;rn    &lt;p&gt;Your order number is {{orderNumber}}.&lt;\/p&gt;rn    &lt;p&gt;We will ship your items to {{shippingAddress}}.&lt;\/p&gt;rn&lt;\/body&gt;rn&lt;\/html&gt;\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode usar um mecanismo de modelo como o <a href=\"https:\/\/handlebarsjs.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Handlebars<\/a> ou <a href=\"https:\/\/ejs.co\/#features\" target=\"_tabs\" rel=\"noopener noreferrer\">EJS<\/a> para substituir os espa\u00e7os reservados por dados reais antes de enviar o e-mail. Voc\u00ea tamb\u00e9m pode usar o <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/6923289387675-Email-Templates-Editor\" target=\"_tabs\" rel=\"noopener noreferrer\">construtor visual intuitivo do Mailgun<\/a> para criar modelos de e-mail bonitos e responsivos sem nenhum conhecimento de coding.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste artigo, voc\u00ea usar\u00e1 a forma mais simples de cria\u00e7\u00e3o de modelos: a interpola\u00e7\u00e3o de strings usando literais de modelo do JavaScript. Esta abordagem permite configurar um modelo de e-mail em HTML preenchido com os dados din\u00e2micos necess\u00e1rios:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                function emailTemplate(order) {rn  \/\/ Format items for emailrn  const itemsList = order.items.map(item =&gt; {rn    return `rn      &lt;tr&gt;rn        &lt;td style=&quot;padding: 10px 0; border-bottom: 1px solid #eee;&quot;&gt;rn          ${item.name}rn        &lt;\/td&gt;rn        &lt;td style=&quot;padding: 10px 0; border-bottom: 1px solid #eee; text-align: center;&quot;&gt;rn          ${item.quantity}rn        &lt;\/td&gt;rn        &lt;td style=&quot;padding: 10px 0; border-bottom: 1px solid #eee; text-align: right;&quot;&gt;rn          $${item.price.toFixed(2)}rn        &lt;\/td&gt;rn        &lt;td style=&quot;padding: 10px 0; border-bottom: 1px solid #eee; text-align: right;&quot;&gt;rn          $${(item.price * item.quantity).toFixed(2)}rn        &lt;\/td&gt;rn      &lt;\/tr&gt;rn    `;rn  }).join(&#039;&#039;);rn};\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo itera sobre os itens de um pedido para gerar um recibo em forma de tabela do pedido do cliente. O valor retornado, <code>itemsList<\/code>, \u00e9 um literal de string que ser\u00e1 usado para construir o restante do modelo de e-mail da seguinte forma:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                function emailTemplate(order) {rn    ...rnrn  \/\/ Create email HTML templatern  const emailHtml = `rn    &lt;!DOCTYPE html&gt;rn    &lt;html&gt;rn    &lt;head&gt;rn      &lt;style&gt;rn        body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }rn        .container { max-width: 600px; margin: 0 auto; }rn        .header { background-color: #f8f9fa; padding: 20px; text-align: center; }rn        .content { padding: 20px; }rn        .order-details { margin-top: 20px; }rn        .order-table { width: 100%; border-collapse: collapse; }rn        .order-table th { text-align: left; padding: 10px 0; border-bottom: 2px solid #ddd; }rn        .footer { margin-top: 30px; text-align: center; font-size: 14px; color: #777; }rn        .total-row { font-weight: bold; }rn      &lt;\/style&gt;rn    &lt;\/head&gt;rn    &lt;body&gt;rn      &lt;div class=&quot;container&quot;&gt;rn        &lt;div class=&quot;header&quot;&gt;rn          &lt;h2&gt;Order Confirmation&lt;\/h2&gt;rn          &lt;p&gt;Thank you for your purchase!&lt;\/p&gt;rn        &lt;\/div&gt;rnrn        &lt;div class=&quot;content&quot;&gt;rn          &lt;p&gt;Hello ${order.customer.name},&lt;\/p&gt;rnrn          &lt;p&gt;Your order has been confirmed. Here are your order details:&lt;\/p&gt;rnrn          &lt;div class=&quot;order-details&quot;&gt;rn            &lt;p&gt;&lt;strong&gt;Order ID:&lt;\/strong&gt; ${order.id}&lt;\/p&gt;rn            &lt;p&gt;&lt;strong&gt;Order Date:&lt;\/strong&gt; ${new Date(order.createdAt).toLocaleString()}&lt;\/p&gt;rnrn            &lt;table class=&quot;order-table&quot;&gt;rn              &lt;thead&gt;rn                &lt;tr&gt;rn                  &lt;th&gt;Item&lt;\/th&gt;rn                  &lt;th style=&quot;text-align: center;&quot;&gt;Qty&lt;\/th&gt;rn                  &lt;th style=&quot;text-align: right;&quot;&gt;Price&lt;\/th&gt;rn                  &lt;th style=&quot;text-align: right;&quot;&gt;Total&lt;\/th&gt;rn                &lt;\/tr&gt;rn              &lt;\/thead&gt;rn              &lt;tbody&gt;rn                ${itemsList}rn                &lt;tr&gt;rn                  &lt;td colspan=&quot;3&quot; style=&quot;text-align: right; padding-top: 20px;&quot;&gt;&lt;strong&gt;Subtotal:&lt;\/strong&gt;&lt;\/td&gt;rn                  &lt;td style=&quot;text-align: right; padding-top: 20px;&quot;&gt;&lt;strong&gt;$${order.subtotal.toFixed(2)}&lt;\/strong&gt;&lt;\/td&gt;rn                &lt;\/tr&gt;rn                &lt;tr&gt;rn                  &lt;td colspan=&quot;3&quot; style=&quot;text-align: right;&quot;&gt;&lt;strong&gt;Tax:&lt;\/strong&gt;&lt;\/td&gt;rn                  &lt;td style=&quot;text-align: right;&quot;&gt;&lt;strong&gt;$${order.tax.toFixed(2)}&lt;\/strong&gt;&lt;\/td&gt;rn                &lt;\/tr&gt;rn                &lt;tr class=&quot;total-row&quot;&gt;rn                  &lt;td colspan=&quot;3&quot; style=&quot;text-align: right; padding-top: 10px;&quot;&gt;&lt;strong&gt;Total:&lt;\/strong&gt;&lt;\/td&gt;rn                  &lt;td style=&quot;text-align: right; padding-top: 10px;&quot;&gt;&lt;strong&gt;$${order.total.toFixed(2)}&lt;\/strong&gt;&lt;\/td&gt;rn                &lt;\/tr&gt;rn              &lt;\/tbody&gt;rn            &lt;\/table&gt;rn          &lt;\/div&gt;rnrn          &lt;div style=&quot;margin-top: 30px;&quot;&gt;rn            &lt;p&gt;&lt;strong&gt;Shipping Address:&lt;\/strong&gt;&lt;\/p&gt;rn            &lt;p&gt;rn              ${order.shipping.address}&lt;br&gt;rn              ${order.shipping.city}, ${order.shipping.state} ${order.shipping.zipCode}rn            &lt;\/p&gt;rn          &lt;\/div&gt;rnrn          &lt;div style=&quot;margin-top: 30px;&quot;&gt;rn            &lt;p&gt;&lt;strong&gt;Payment Method:&lt;\/strong&gt; ${order.payment.method} (ending in ${order.payment.last4})&lt;\/p&gt;rn          &lt;\/div&gt;rnrn          &lt;div style=&quot;margin-top: 30px;&quot;&gt;rn            &lt;p&gt;If you have any questions about your order, please contact our customer support.&lt;\/p&gt;rn            &lt;p&gt;Thank you for shopping with us!&lt;\/p&gt;rn          &lt;\/div&gt;rn        &lt;\/div&gt;rnrn        &lt;div class=&quot;footer&quot;&gt;rn          &lt;p&gt;This is an automated email, please do not reply to this message.&lt;\/p&gt;rn          &lt;p&gt;\u00a9 2025 Your Company. All rights reserved.&lt;\/p&gt;rn        &lt;\/div&gt;rn      &lt;\/div&gt;rn    &lt;\/body&gt;rn    &lt;\/html&gt;rn  `;rnrn  return emailHtml;rn}\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Aqui, voc\u00ea combina o recibo com o restante de uma string de modelo em HTML contendo os detalhes do cliente. O HTML cont\u00e9m um estilo b\u00e1sico para o modelo de e-mail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Saiba mais em nossa <a href=\"https:\/\/www.mailgun.com\/pt\/blog\/email\/transactional-html-email-templates\/\">modelos de e-mail transacional<\/a> p\u00e1gina, incluindo o download de modelos gratuitos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementando a funcionalidade de envio de e-mail<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Agora que seu modelo est\u00e1 pronto, \u00e9 hora de escrever a fun\u00e7\u00e3o que envia o e-mail usando a API do Mailgun. Veja como voc\u00ea pode implementar essa funcionalidade em seu backend:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                async function sendOrderConfirmationEmail(order) {rn  try {rnrn    let emailHtml = emailTemplate(order)rnrn    \/\/ Send email via Mailgunrn    const response = await mg.messages.create(MAILGUN_DOMAIN, {rn      from: `Your Store &lt;orders@${MAILGUN_DOMAIN}&gt;`,rn      to: order.customer.email,rn      subject: `Order Confirmation #${order.id}`,rn      html: emailHtml,rn      &#039;o:tag&#039;: [&#039;order-confirmation&#039;],rn      &#039;o:tracking&#039;: truern    });rnrn    console.log(&#039;Email sent successfully:&#039;, response);rn    return response;rnrn  } catch (error) {rn    console.error(&#039;Error sending confirmation email:&#039;, error);rn    throw error;rn  }rn}\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Esta fun\u00e7\u00e3o recebe um objeto de pedido, constr\u00f3i o conte\u00fado do e-mail e o envia usando a API do Mailgun. As op\u00e7\u00f5es <code>o:tag<\/code> e <code>o:tracking<\/code> permitem rastrear a entrega e o engajamento do e-mail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, vamos testar a implementa\u00e7\u00e3o com um objeto de pedido simples para ver se funciona:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                const testOrder = {rn  id: &quot;TEST123&quot;,rn  customer: {rn    name: &quot;Test User&quot;,rn    email: &quot;your-verified-email@example.com&quot; \/\/ Use one of your verified emails for testingrn  },rn  items: [rn    { name: &quot;Test Product&quot;, quantity: 1, price: 29.99 }rn  ],rn  subtotal: 29.99,rn  tax: 2.99,rn  total: 32.98,rn  shipping: {rn    address: &quot;123 Test Street&quot;,rn    city: &quot;Test City&quot;,rn    state: &quot;TS&quot;,rn    zipCode: &quot;12345&quot;rn  },rn  payment: {rn    method: &quot;Credit Card&quot;,rn    last4: &quot;4242&quot;rn  },rn  createdAt: new Date()rn};rnrnsendOrderConfirmationEmail(testOrder)rn  .then(response =&gt; {rn    console.log(&#039;Test email sent successfully!&#039;);rn    console.log(&#039;Message ID:&#039;, response.id);rn    console.log(&#039;Message status:&#039;, response.status);rn  })rn  .catch(error =&gt; {rn    console.error(&#039;Failed to send test email:&#039;, error.message);rn  });\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Execute este c\u00f3digo com o node <code>.\/src\/server.js<\/code> e verifique sua caixa de entrada (lembre-se de usar um e-mail verificado para o valor de <code>testOrder.customer.email <\/code> se voc\u00ea estiver usando o dom\u00ednio sandbox do Mailgun). Voc\u00ea deve receber um e-mail de confirma\u00e7\u00e3o de pedido b\u00e1sico com os dados de teste:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4021\" width=\"1742\" height=\"1392\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/6__3_.png\" alt=\"Order Confirmation Image\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/6__3_.png 1742w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/6__3_-1024x818.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/6__3_-768x614.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/6__3_-1536x1227.png 1536w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/6__3_-300x240.png 300w\" sizes=\"(max-width: 1742px) 100vw, 1742px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nessa configura\u00e7\u00e3o, qualquer erro que ocorra \u00e9 repassado ao chamador, e o m\u00e9todo <code>.catch <\/code> o registra na sa\u00edda padr\u00e3o. Essa abordagem permite identificar e solucionar rapidamente quaisquer problemas que possam ocorrer durante o processo de envio de e-mail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00f3xima se\u00e7\u00e3o, voc\u00ea conectar\u00e1 isso ao seu frontend para poder enviar dados reais de pedidos dos checkouts do cliente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integrando com eventos do aplicativo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para garantir que o fluxo de trabalho de e-mail seja acionado automaticamente quando um pedido for confirmado, voc\u00ea precisa configurar um <a href=\"https:\/\/nodejs.org\/api\/events.html\" target=\"_tabs\" rel=\"noopener noreferrer\">ouvinte de eventos<\/a> ou <a href=\"https:\/\/expressjs.com\/en\/guide\/routing.html\" target=\"_tabs\" rel=\"noopener noreferrer\">rota<\/a> em seu aplicativo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui, voc\u00ea vai configurar um aplicativo Express.js e definir uma rota que lida com as confirma\u00e7\u00f5es de pedidos enquanto chama a fun\u00e7\u00e3o <code>sendOrderConfirmationEmail<\/code>:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content overflow-hidden\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                            <code class=\"language-PHP\">\r\n\r\n                                const express = require(&#039;express&#039;);rnconst cors = require(&#039;cors&#039;);rn...rnrn\/\/ Load environment variablesrnrequire(&#039;dotenv&#039;).config();rnrn\/\/ Initialize Expressrnconst app = express();rnconst PORT = process.env.PORT || 3000;rnrn\/\/ Middlewarernapp.use(cors());rnapp.use(express.json());rnrnconst orders = [];rnrnapp.post(&#039;\/api\/orders&#039;, async (req, res) =&gt; {rn  try {rn    \/\/ Validate required fieldsrn    if (!req.body.items || !req.body.customer || !req.body.customer.email) {rn      return res.status(400).json({ rn        success: false, rn        error: &#039;Missing required order information&#039; rn      });rn    }rnrn    \/\/ Generate order IDrn    const orderId = Date.now().toString(36) + Math.random().toString(36).substr(2, 5).toUpperCase();rnrn    \/\/ Create order objectrn    const order = {rn      id: orderId,rn      ...req.body,rn      status: &#039;confirmed&#039;,rn      createdAt: new Date()rn    };rnrn    \/\/ Save order (to database in a real app)rn    orders.push(order);rnrn    \/\/ Send confirmation emailrn    await sendOrderConfirmationEmail(order);rnrn    \/\/ Return success responsern    res.status(201).json({rn      success: true,rn      order: {rn        id: order.id,rn        status: order.status,rn        createdAt: order.createdAtrn      },rn      message: &#039;Order created successfully and confirmation email sent.&#039;rn    });rnrn  } catch (error) {rn    console.error(&#039;Error processing order:&#039;, error);rn    res.status(500).json({rn      success: false,rn      error: &#039;Failed to process order&#039;rn    });rn  }rn});\r\n                            <\/code>\r\n                        <\/pre>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">A rota <code>\/api\/orders<\/code> lida com as solicita\u00e7\u00f5es de pedidos recebidas, cria um objeto <code>order<\/code> e envia um e-mail de confirma\u00e7\u00e3o usando a fun\u00e7\u00e3o <code>sendOrderConfirmationEmail<\/code>. O restante da rota inclui uma l\u00f3gica simples de relat\u00f3rio de erros, mas em produ\u00e7\u00e3o, talvez voc\u00ea queira implementar um mecanismo de repeti\u00e7\u00e3o ou um tratador de erros mais robusto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testando o fluxo de trabalho<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para testar a configura\u00e7\u00e3o at\u00e9 agora, voc\u00ea precisa modificar o arquivo <code>\/ui\/index.html<\/code>. Primeiro, encontre a linha de c\u00f3digo onde o objeto <code>orderData<\/code> est\u00e1 definido e atualize a propriedade de e-mail do cliente (<code>orderData.customer.email<\/code>) para usar um de seus e-mails verificados. Voc\u00ea tamb\u00e9m precisa atualizar a constante <code>api<\/code> para apontar para a URL do seu servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, abra o arquivo <code>\/ui\/index.html <\/code> em um navegador e acione o processo de checkout selecionando itens para checkout e clicando no bot\u00e3o <b>Checkout Selected Items<\/b>. Isso deve abrir uma caixa de di\u00e1logo de confirma\u00e7\u00e3o onde voc\u00ea pode clicar em <b>Confirm Purchase<\/b> para concluir o processo de checkout:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5031\" width=\"1734\" height=\"1046\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/7__2_.png\" alt=\"Confirm Order Image\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/7__2_.png 1734w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/7__2_-300x181.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/7__2_-768x463.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/7__2_-1024x618.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/7__2_-1536x927.png 1536w\" sizes=\"(max-width: 1734px) 100vw, 1734px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verifique a caixa de entrada do seu e-mail e verifique se o e-mail foi enviado e renderizado corretamente com o conte\u00fado din\u00e2mico. Se voc\u00ea usou o dom\u00ednio sandbox, pode ser necess\u00e1rio verificar sua pasta de spam:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5032\" width=\"1742\" height=\"1470\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/8__2_.png\" alt=\"Order Confirmation Email Image\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/8__2_.png 1742w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/8__2_-300x253.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/8__2_-768x648.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/8__2_-1024x864.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/8__2_-1536x1296.png 1536w\" sizes=\"(max-width: 1742px) 100vw, 1742px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Lembre-se de testar como seu aplicativo lida com erros, como endere\u00e7os de e-mail inv\u00e1lidos ou tempos de inatividade da API, usando intencionalmente valores incorretos e verificando se o tratamento de erros funciona conforme o esperado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todo o c\u00f3digo usado neste tutorial est\u00e1 dispon\u00edvel no <a href=\"https:\/\/github.com\/Ikeh-Akinyemi\/draftdev-mailgunner\" target=\"_tabs\" rel=\"noopener noreferrer\">GitHub<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monitorando e gerenciando e-mails<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O Mailgun fornece m\u00e9tricas detalhadas e recursos de rastreamento que permitem monitorar o desempenho de seus e-mails transacionais. Voc\u00ea pode rastrear as taxas de entrega e as taxas de abertura, al\u00e9m de lidar com devolu\u00e7\u00f5es ou falhas diretamente no painel do Mailgun.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para acessar os registros de cada e-mail enviado, navegue at\u00e9 a se\u00e7\u00e3o <b>Send &gt; Reporting &gt; Logs<\/b> na sua conta do Mailgun. Aqui, voc\u00ea pode ver o carimbo de data\/hora e o status de cada e-mail enviado, incluindo se ele foi entregue, aberto ou rejeitado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5033\" width=\"1742\" height=\"1050\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/9__2_.png\" alt=\"Email logs image\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/9__2_.png 1742w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/9__2_-300x181.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/9__2_-768x463.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/9__2_-1024x617.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/9__2_-1536x926.png 1536w\" sizes=\"(max-width: 1742px) 100vw, 1742px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode clicar em qualquer entrada de registro para visualizar seus detalhes completos, como <code>geolocation<\/code> para e-mails abertos, <code>delivery-status<\/code> para e-mails entregues e outros:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5034\" width=\"1760\" height=\"1056\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/10__1_.png\" alt=\"Email Log Details Image\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/10__1_.png 1760w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/10__1_-300x180.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/10__1_-768x461.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/10__1_-1024x614.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/10__1_-1536x922.png 1536w\" sizes=\"(max-width: 1760px) 100vw, 1760px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea tamb\u00e9m pode acessar <b>Send &gt; Reporting &gt; Metrics<\/b> para visualizar um detalhamento gr\u00e1fico das principais m\u00e9tricas de e-mail, incluindo a contagem de envios, entregas, falhas e aberturas:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5035\" width=\"1746\" height=\"1058\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/11__1_.png\" alt=\"Key Email Metrics Image\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/11__1_.png 1746w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/11__1_-300x182.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/11__1_-768x465.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/11__1_-1024x620.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/11__1_-1536x931.png 1536w\" sizes=\"(max-width: 1746px) 100vw, 1746px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea acabou de criar um fluxo de trabalho funcional de confirma\u00e7\u00e3o de pedidos com a API do Mailgun. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E-mails transacionais como esses mant\u00eam os clientes informados logo ap\u00f3s o checkout, reduzindo os tickets de suporte e melhorando a confian\u00e7a sem sobrecarga extra. As confirma\u00e7\u00f5es de pedidos n\u00e3o s\u00e3o os \u00fanicos f<a href=\"https:\/\/www.mailgun.com\/blog\/email\/transactional-email-unsung-hero\/\" target=\"_tabs\" rel=\"noopener noreferrer\">luxos de trabalho que importam para os consumidores.<\/a> Confira nosso tutorial sobre <a href=\"https:\/\/www.mailgun.com\/blog\/dev-life\/how-to-build-transactional-password-reset-email-workflows\/\" target=\"_tabs\" rel=\"noopener noreferrer\">redefini\u00e7\u00f5es de senha<\/a> para continuar otimizando seus e-mails transacionais. <\/p>\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_43a8afc41917a57a4abc0be8c62cfd13\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Cadastre-se            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_43a8afc41917a57a4abc0be8c62cfd13\">\r\n                \u00c9 f\u00e1cil come\u00e7ar. E \u00e9 gr\u00e1tis.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">Veja o que voc\u00ea pode alcan\u00e7ar com a melhor plataforma de entrega de e-mail do mundo.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Ao contr\u00e1rio dos e-mails de marketing, os e-mails transacionais (como confirma\u00e7\u00f5es de pedidos, notifica\u00e7\u00f5es de envio e redefini\u00e7\u00f5es de senha) s\u00e3o acionados por a\u00e7\u00f5es espec\u00edficas do usu\u00e1rio e fornecem atualiza\u00e7\u00f5es em tempo real sobre as intera\u00e7\u00f5es deles com sua plataforma. Eles ajudam a criar confian\u00e7a, reduzir as perguntas de suporte e proporcionar uma experi\u00eancia de [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":3952,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[19],"class_list":["post-13781","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Crie fluxos de trabalho de confirma\u00e7\u00e3o de pedidos transacionais com o Mailgun - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Aprenda como criar fluxos de trabalho de e-mail transacional de confirma\u00e7\u00e3o de pedidos usando a API do Mailgun. Acompanhe em nosso tutorial para desenvolvedores as nossas best practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Crie fluxos de trabalho de confirma\u00e7\u00e3o de pedidos transacionais com o Mailgun - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Aprenda como criar fluxos de trabalho de e-mail transacional de confirma\u00e7\u00e3o de pedidos usando a API do Mailgun. Acompanhe em nosso tutorial para desenvolvedores as nossas best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-15T10:51:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/\",\"name\":\"Crie fluxos de trabalho de confirma\u00e7\u00e3o de pedidos transacionais com o Mailgun - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"datePublished\":\"2025-05-15T00:00:00+00:00\",\"dateModified\":\"2026-06-15T10:51:58+00:00\",\"description\":\"Aprenda como criar fluxos de trabalho de e-mail transacional de confirma\u00e7\u00e3o de pedidos usando a API do Mailgun. Acompanhe em nosso tutorial para desenvolvedores as nossas best practices.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Criando fluxos de trabalho de e-mail transacional para confirma\u00e7\u00f5es de pedidos com a API do Mailgun\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Crie fluxos de trabalho de confirma\u00e7\u00e3o de pedidos transacionais com o Mailgun - Transactional Email API Service For Developers | Mailgun","description":"Aprenda como criar fluxos de trabalho de e-mail transacional de confirma\u00e7\u00e3o de pedidos usando a API do Mailgun. Acompanhe em nosso tutorial para desenvolvedores as nossas best practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/","og_locale":"pt_BR","og_type":"article","og_title":"Crie fluxos de trabalho de confirma\u00e7\u00e3o de pedidos transacionais com o Mailgun - Transactional Email API Service For Developers | Mailgun","og_description":"Aprenda como criar fluxos de trabalho de e-mail transacional de confirma\u00e7\u00e3o de pedidos usando a API do Mailgun. Acompanhe em nosso tutorial para desenvolvedores as nossas best practices.","og_url":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-06-15T10:51:58+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/","url":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/","name":"Crie fluxos de trabalho de confirma\u00e7\u00e3o de pedidos transacionais com o Mailgun - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","datePublished":"2025-05-15T00:00:00+00:00","dateModified":"2026-06-15T10:51:58+00:00","description":"Aprenda como criar fluxos de trabalho de e-mail transacional de confirma\u00e7\u00e3o de pedidos usando a API do Mailgun. Acompanhe em nosso tutorial para desenvolvedores as nossas best practices.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/como-criar-fluxos-de-trabalho-de-e-mail-transacional-para-confirmacao-de-pedido\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/pt\/blog\/"},{"@type":"ListItem","position":3,"name":"Criando fluxos de trabalho de e-mail transacional para confirma\u00e7\u00f5es de pedidos com a API do Mailgun"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/pt\/#website","url":"https:\/\/www.mailgun.com\/pt\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!","publisher":{"@id":"https:\/\/www.mailgun.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/pt\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/13781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/users\/7"}],"version-history":[{"count":2,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/13781\/revisions"}],"predecessor-version":[{"id":14000,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/13781\/revisions\/14000"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/3952"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=13781"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog_category?post=13781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}