{"id":80,"date":"2026-01-19T05:07:00","date_gmt":"2026-01-19T05:07:00","guid":{"rendered":"https:\/\/agilux.net\/br\/artigos\/integracao-whatsapp-clinicas-estetica-tutorial-n8n\/"},"modified":"2026-01-19T05:07:34","modified_gmt":"2026-01-19T05:07:34","slug":"integracao-whatsapp-clinicas-estetica-tutorial-n8n","status":"publish","type":"post","link":"https:\/\/agilux.net\/br\/artigos\/integracao-whatsapp-clinicas-estetica-tutorial-n8n\/","title":{"rendered":"Tutorial: Integra\u00e7\u00e3o de WhatsApp para Cl\u00ednicas de Est\u00e9tica via n8n e Webhooks"},"content":{"rendered":"<h2>Introdu\u00e7\u00e3o<\/h2>\n<p>Voc\u00ea j\u00e1 recebeu uma liga\u00e7\u00e3o de uma cl\u00ednica de est\u00e9tica oferecendo o tratamento que voc\u00ea tinha pesquisado no Google&#8230; literalmente 45 segundos antes? N\u00e3o \u00e9 coincid\u00eancia. \u00c9 automa\u00e7\u00e3o bem feita.<\/p>\n<figure class=\"wp-block-image size-large\">\n  <img decoding=\"async\" src=\"https:\/\/agilux.net\/us\/wp-content\/uploads\/2026\/01\/Dramatic-illustration-of-a-real-time-dat-1.jpg\" alt=\"Engage Squad Marketo lead sync tutorial real-time webhook event stream illustration\" class=\"wp-image-211\" \/><br \/>\n<\/figure>\n<p>No mundo da est\u00e9tica e beleza, o conceito de &#8220;speed to lead&#8221; n\u00e3o \u00e9 apenas marketing \u2014 \u00e9 sobreviv\u00eancia. Uma pessoa que preenche um formul\u00e1rio \u00e0s 15h32 de uma ter\u00e7a-feira j\u00e1 comparou pelo menos quatro cl\u00ednicas, est\u00e1 olhando o Instagram de outra enquanto espera sua resposta, e provavelmente vai fechar com quem chegar primeiro no WhatsApp dela. Cinco minutos de atraso? Voc\u00ea j\u00e1 perdeu. Dez minutos? Ela nem lembra mais que te mandou mensagem.<\/p>\n<p>\u00c9 a\u00ed que entra o <strong>Agilux Engage Squad integra\u00e7\u00e3o WhatsApp para cl\u00ednicas de est\u00e9tica tutorial<\/strong> \u2014 uma metodologia de engajamento imediato que conecta o momento de interesse do paciente com uma resposta humanizada, autom\u00e1tica e instant\u00e2nea. Estamos falando de arquitetura &#8220;Webhook-to-Message&#8221;: seu CRM detecta um novo lead, dispara um webhook, o n8n processa os dados, sanitiza, personaliza e envia uma mensagem de WhatsApp antes que a pessoa tenha tempo de fechar a aba do navegador.<\/p>\n<p>Olha, este tutorial \u00e9 t\u00e9cnico de verdade. Vamos detalhar cada node, cada JSON, cada tratamento de erro. Se voc\u00ea \u00e9 engenheiro de automa\u00e7\u00e3o, CTO de cl\u00ednica ou desenvolvedor low-code que j\u00e1 cansou de depender de integra\u00e7\u00f5es nativas limitadas, isto aqui \u00e9 pra voc\u00ea.<\/p>\n<h2>O Desafio da Lat\u00eancia na Convers\u00e3o de Leads de Est\u00e9tica<\/h2>\n<h3>A Janela de 5 Minutos Que Define Sua Taxa de Convers\u00e3o<\/h3>\n<p>Existe um estudo (meio batido, mas verdadeiro) que mostra que leads respondidos em at\u00e9 5 minutos t\u00eam 21 vezes mais chance de convers\u00e3o do que os respondidos em 30 minutos. Confesso que quando li esse n\u00famero pela primeira vez, achei exagerado \u2014 mas os dados de clientes confirmam. No setor de est\u00e9tica, essa janela \u00e9 ainda menor. Por qu\u00ea? Porque seu lead n\u00e3o est\u00e1 pesquisando &#8220;harmoniza\u00e7\u00e3o facial&#8221; de forma gen\u00e9rica. Ela est\u00e1 com a cara inchada de chorar depois de terminar um namamento e quer parecer diferente <em>agora<\/em>. Ou o casamento \u00e9 daqui a 6 semanas e o p\u00e2nico bateu.<\/p>\n<p>O contexto emocional torna o timing absurdamente importante. Uma resposta autom\u00e1tica \u00e0s 2:14 da manh\u00e3 dizendo &#8220;Oi Fernanda, vi que voc\u00ea se interessou pelo nosso protocolo de limpeza de pele. Podemos agendar uma avalia\u00e7\u00e3o amanh\u00e3 \u00e0s 10h?&#8221; funciona melhor do que um &#8220;Bom dia!&#8221; gen\u00e9rico \u00e0s 9h da manh\u00e3 seguinte. Voc\u00ea pegou o momento de decis\u00e3o dela, n\u00e3o o momento conveniente pra sua recepcionista.<\/p>\n<h3>Por Que as Automa\u00e7\u00f5es Nativas do CRM Falham<\/h3>\n<p>A maioria dos CRMs verticais para cl\u00ednicas (Cl\u00ednica \u00c1gil, Prontu\u00e1rio Eletr\u00f4nico, etc.) t\u00eam automa\u00e7\u00f5es de WhatsApp, sim. Mas elas s\u00e3o lentas. O fluxo t\u00edpico \u00e9: webhook interno \u2192 fila de processamento \u2192 valida\u00e7\u00e3o de template do WhatsApp Business API oficial \u2192 espera de aprova\u00e7\u00e3o \u2192 envio. Isso leva entre 2 a 8 minutos em m\u00e9dia. E voc\u00ea perdeu a janela.<\/p>\n<p>Al\u00e9m disso, essas integra\u00e7\u00f5es nativas s\u00e3o r\u00edgidas. Quer mudar a mensagem baseado em qual procedimento a pessoa pesquisou? Precisa criar 15 templates e esperar aprova\u00e7\u00e3o do Meta. Quer adicionar l\u00f3gica condicional (se for lead vindo do Instagram, usa tom mais informal)? Boa sorte editando XML de workflow propriet\u00e1rio.<\/p>\n<p>Eu sei que isso soa como reclama\u00e7\u00e3o de quem n\u00e3o sabe usar CRM. Mas acredite, j\u00e1 tentei fazer isso funcionar no Pipedrive, no RD Station, at\u00e9 num sistema custom de uma cl\u00ednica em Curitiba que tinha interface dos anos 2000. Sempre bate no mesmo teto.<\/p>\n<h3>n8n Como Camada de Middleware \u00c1gil<\/h3>\n<p>O n8n resolve isso sendo um intermedi\u00e1rio leve e program\u00e1vel entre o banco de dados da cl\u00ednica e o celular do paciente. Ele escuta webhooks, executa l\u00f3gica customizada em JavaScript se necess\u00e1rio, formata dados, e dispara mensagens atrav\u00e9s da Evolution API (que \u00e9 absurdamente mais r\u00e1pida que a API oficial do WhatsApp para casos de uso de notifica\u00e7\u00e3o).<\/p>\n<p>E voc\u00ea consegue iterar num workflow em 4 minutos. Literalmente. Testar, ajustar, republicar. Sem processo de aprova\u00e7\u00e3o, sem ficar ref\u00e9m de roadmap de produto de SaaS. \u00c9 controle total.<\/p>\n<h2>Arquitetura da Solu\u00e7\u00e3o e Stack Tecnol\u00f3gico<\/h2>\n<figure class=\"wp-block-image size-large\">\n  <img decoding=\"async\" src=\"https:\/\/agilux.net\/us\/wp-content\/uploads\/2026\/01\/Overhead-shot-of-a-modern-office-whitebo-2.jpg\" alt=\"Engage Squad Marketo lead sync tutorial architecture diagram showing data flow\" class=\"wp-image-212\" \/><br \/>\n<\/figure>\n<h3>Componentes Essenciais do Workflow<\/h3>\n<p>O sistema tem tr\u00eas camadas principais, e cada uma precisa estar funcionando pra coisa toda n\u00e3o virar um desastre silencioso \u00e0s 3 da manh\u00e3 quando uma lead premium preenche o formul\u00e1rio:<\/p>\n<p><strong>Trigger:<\/strong> Um webhook que recebe dados do CRM, landing page (Typeform, RD Station, at\u00e9 Google Forms se voc\u00ea tiver criatividade). Esse \u00e9 o gatilho. Sem ele, nada acontece.<\/p>\n<p><strong>Processador:<\/strong> O n8n em si, onde voc\u00ea vai construir l\u00f3gica de sanitiza\u00e7\u00e3o (telefones formatados errado quebram tudo), roteamento condicional (lead novo vs retorno vs p\u00f3s-procedimento) e personaliza\u00e7\u00e3o de mensagem.<\/p>\n<p><strong>Gateway:<\/strong> Evolution API ou WhatsApp Business API oficial. Eu recomendo Evolution pra 90% dos casos porque \u00e9 mais r\u00e1pida, mais barata (gr\u00e1tis se voc\u00ea hospedar), e n\u00e3o te obriga a usar templates pr\u00e9-aprovados. A API oficial \u00e9 melhor pra compliance em cl\u00ednicas maiores que precisam de auditoria formal.<\/p>\n<h3>Visualizando o Fluxo de Dados Completo<\/h3>\n<p>Imagine o trajeto do dado: paciente preenche formul\u00e1rio \u2192 landing page dispara POST request com JSON \u2192 n8n recebe no node Webhook \u2192 node Function sanitiza telefone e formata data \u2192 node Switch roteia baseado em status \u2192 node HTTP Request manda mensagem pra Evolution API \u2192 API envia pro celular \u2192 paciente recebe em 1-3 segundos.<\/p>\n<p>O mais bonito disso? O CRM nem precisa saber que o n8n existe. Voc\u00ea pode construir essa camada paralela sem mexer em nada do sistema principal da cl\u00ednica. \u00c9 tipo adicionar turbo num carro sem alterar o motor original. (Ok, p\u00e9ssima analogia, mas voc\u00ea entendeu.)<\/p>\n<h2>Pr\u00e9-requisitos T\u00e9cnicos do Ambiente<\/h2>\n<h3>Infraestrutura n8n Necess\u00e1ria<\/h3>\n<p>Voc\u00ea precisa de uma inst\u00e2ncia do n8n rodando. Pode ser self-hosted numa VPS (DigitalOcean droplet de $12\/m\u00eas funciona tranquilo pra at\u00e9 500 leads\/dia) ou na cloud deles mesma. Vers\u00e3o tem que ser 1.0+ porque os nodes de HTTP Request mudaram bastante e tutoriais antigos v\u00e3o te confundir.<\/p>\n<p>Certifique-se de que a inst\u00e2ncia est\u00e1 acess\u00edvel via HTTPS. Webhooks s\u00f3 funcionam de verdade em produ\u00e7\u00e3o com SSL v\u00e1lido. Localhost com ngrok at\u00e9 serve pra teste, mas j\u00e1 vi gente tentar colocar isso em produ\u00e7\u00e3o e&#8230; n\u00e3o fa\u00e7am isso.<\/p>\n<h3>Gateway de WhatsApp Configurado<\/h3>\n<p>A Evolution API precisa estar rodando e conectada com uma conta de WhatsApp Business. O processo de autentica\u00e7\u00e3o via QRCode \u00e9 simples, mas tem detalhes: o celular que voc\u00ea escanear o QR precisa ficar online at\u00e9 a sess\u00e3o estabilizar (uns 30 minutos). Depois disso, a API mant\u00e9m a conex\u00e3o.<\/p>\n<p>Guarde o `apikey` da Evolution num lugar seguro. Voc\u00ea vai usar ela em todo HTTP Request que fizer. E sim, se vazar, qualquer um pode enviar mensagens em nome da cl\u00ednica. Ent\u00e3o trate isso como senha de banco, n\u00e3o como token de API qualquer.<\/p>\n<h3>Acesso ao CRM e Capacidade de Webhook<\/h3>\n<p>Seu CRM precisa conseguir disparar webhooks customizados. RD Station tem isso nativamente. Pipedrive tamb\u00e9m. Sistemas verticais de cl\u00ednica tipo Cl\u00ednica \u00c1gil, Clinicorp&#8230; depende. Alguns t\u00eam, outros voc\u00ea vai precisar usar Zapier ou Make como ponte (o que adiciona 2-4 segundos de lat\u00eancia, mas ainda funciona).<\/p>\n<p>O ideal \u00e9 que o webhook seja disparado imediatamente ap\u00f3s a cria\u00e7\u00e3o ou atualiza\u00e7\u00e3o do lead. Se o CRM s\u00f3 dispara webhook a cada 10 minutos em batch&#8230; bem, a\u00ed voc\u00ea volta pro problema da lat\u00eancia que a gente tava tentando resolver.<\/p>\n<h2>Passo 1: Configura\u00e7\u00e3o do Webhook Receiver no n8n<\/h2>\n<h3>Criando o Node de Entrada<\/h3>\n<p>No n8n, adicione um node <strong>Webhook<\/strong>. Configure como `POST` porque voc\u00ea vai receber dados, n\u00e3o s\u00f3 notifica\u00e7\u00f5es. O caminho da URL pode ser qualquer coisa, mas evite nomes \u00f3bvios tipo `\/webhook` ou `\/api\/leads`. Bots ficam escaneando isso. Use algo como `\/intake-ae92b` com um sufixo rand\u00f4mico.<\/p>\n<p>A URL final vai ser algo tipo `https:\/\/n8n.suacl\u00ednica.com.br\/webhook\/intake-ae92b`. Copie isso e guarde pra configurar no CRM daqui a pouco.<\/p>\n<h3>Implementando Seguran\u00e7a B\u00e1sica<\/h3>\n<p>Webhook aberto \u00e9 porta aberta. Configure <strong>Header Auth<\/strong> no node: exija um header customizado tipo `X-API-Key: sua-chave-secreta-aqui`. No CRM, quando voc\u00ea configurar o webhook, adicione esse header nos requests. Assim, se algu\u00e9m descobrir sua URL e tentar mandar lixo, o n8n vai rejeitar.<\/p>\n<p>Outra op\u00e7\u00e3o \u00e9 Basic Auth, mas Header Auth \u00e9 mais limpo pra integra\u00e7\u00e3o com sistemas modernos.<\/p>\n<h3>Diferenciando Ambientes de Teste e Produ\u00e7\u00e3o<\/h3>\n<p>Crie dois workflows separados: um pra teste, outro pra produ\u00e7\u00e3o. No workflow de teste, voc\u00ea pode adicionar um node <strong>Send Email<\/strong> depois do webhook pra voc\u00ea receber o JSON completo cada vez que o webhook for disparado. Isso te salva horas de debug tentando adivinhar que dados o CRM t\u00e1 mandando.<\/p>\n<p>No workflow de produ\u00e7\u00e3o, remova qualquer node de debug e ative apenas logs essenciais. Execu\u00e7\u00e3o de workflow no n8n consome mem\u00f3ria, ent\u00e3o quanto mais limpo, melhor escala.<\/p>\n<h2>Definindo o Schema do JSON Payload<\/h2>\n<h3>Por Que o Contrato de Dados \u00c9 Cr\u00edtico<\/h3>\n<p>Aqui \u00e9 onde 80% das integra\u00e7\u00f5es quebram silenciosamente. O CRM envia um campo chamado `client_phone`, mas seu workflow t\u00e1 esperando `phone_number`. Resultado? O node de sanitiza\u00e7\u00e3o tenta processar `undefined`, quebra, e o lead nunca recebe mensagem. Voc\u00ea s\u00f3 descobre isso tr\u00eas dias depois quando a gerente da cl\u00ednica reclama que &#8220;a automa\u00e7\u00e3o parou de funcionar&#8221;.<\/p>\n<p>Defina um contrato r\u00edgido. Documente. Use ferramentas como JSON Schema pra validar se necess\u00e1rio. Mas no m\u00ednimo, tenha um Google Doc listando exatamente quais campos voc\u00ea espera receber e em qual formato.<\/p>\n<h3>Exemplo de Payload Padr\u00e3o<\/h3>\n<p>Aqui t\u00e1 um JSON realista que um CRM de cl\u00ednica de est\u00e9tica poderia enviar:<\/p>\n<p>&#8220;`json<br \/>{<br \/>  &#8220;patient_name&#8221;: &#8220;Juliana Oliveira&#8221;,<br \/>  &#8220;phone_number&#8221;: &#8220;11987654321&#8221;,<br \/>  &#8220;procedure_type&#8221;: &#8220;Botox&#8221;,<br \/>  &#8220;appointment_date&#8221;: &#8220;2025-03-15T14:30:00Z&#8221;,<br \/>  &#8220;lead_source&#8221;: &#8220;Instagram&#8221;,<br \/>  &#8220;status&#8221;: &#8220;new_lead&#8221;<br \/>}<br \/>&#8220;`<\/p>\n<p>Campos importantes:<\/p>\n<ul>\n<li>`patient_name`: String. Pode vir com capitaliza\u00e7\u00e3o errada (&#8220;JULIANA&#8221; ou &#8220;juliana&#8221;).<\/li>\n<p><\/p>\n<li>`phone_number`: String, geralmente sem DDI. \u00c0s vezes vem com espa\u00e7os ou par\u00eanteses.<\/li>\n<p><\/p>\n<li>`procedure_type`: String que precisa corresponder a algum cat\u00e1logo da cl\u00ednica.<\/li>\n<p><\/p>\n<li>`appointment_date`: ISO 8601 se voc\u00ea tiver sorte. \u00c0s vezes vem &#8220;15\/03\/2025 14:30&#8221;.<\/li>\n<p><\/p>\n<li>`status`: Enum que vai guiar seu roteamento condicional depois.<\/li>\n<\/ul>\n<h3>Mapeamento no n8n<\/h3>\n<p>Depois do node Webhook, adicione um node <strong>Set<\/strong> pra normalizar os nomes de campos se necess\u00e1rio. Por exemplo, se o CRM chama de `telefone` mas voc\u00ea quer usar `phone` no resto do workflow, fa\u00e7a a convers\u00e3o aqui. Isso torna o workflow mais port\u00e1vel se voc\u00ea trocar de CRM no futuro.<\/p>\n<h2>Passo 2: Sanitiza\u00e7\u00e3o e Formata\u00e7\u00e3o de Dados (Code Node)<\/h2>\n<h3>Formata\u00e7\u00e3o de N\u00fameros de Telefone Brasileiros<\/h3>\n<p>Telefone \u00e9 o campo mais problem\u00e1tico. S\u00e9rio. Voc\u00ea vai receber de todo jeito: `11987654321`, `(11) 98765-4321`, `5511987654321`, `+55 11 98765-4321`. Seu objetivo \u00e9 transformar tudo em `5511987654321` (padr\u00e3o E.164 sem s\u00edmbolos).<\/p>\n<p>Adicione um node <strong>Code<\/strong> (JavaScript) logo depois do Webhook:<\/p>\n<p>&#8220;`javascript<br \/>const phone = $json.phone_number;<br \/>\/\/ Remove tudo que n\u00e3o \u00e9 n\u00famero<br \/>let cleaned = phone.replace(\/\\D\/g, &#8221;);<\/p>\n<p>\/\/ Adiciona DDI 55 se n\u00e3o tiver<br \/>if (!cleaned.startsWith(&#8217;55&#8217;)) {<br \/>  cleaned = &#8217;55&#8217; + cleaned;<br \/>}<\/p>\n<p>\/\/ Verifica se tem 13 d\u00edgitos (55 + DDD + 9 + 8 d\u00edgitos)<br \/>if (cleaned.length === 13) {<br \/>  return { phone: cleaned };<br \/>} else {<br \/>  \/\/ Log de erro ou marca pra revis\u00e3o manual<br \/>  return { phone: null, error: &#8216;Invalid phone format&#8217; };<br \/>}<br \/>&#8220;`<\/p>\n<p>Isso cobre 95% dos casos. Os outros 5%? Telefones fixos de interior que t\u00eam 8 d\u00edgitos sem o 9 na frente, n\u00fameros internacionais de brasileiros morando fora&#8230; voc\u00ea vai ajustando conforme aparecem.<\/p>\n<h3>Convertendo Datas Pra Formato Leg\u00edvel<\/h3>\n<p>Se a data vem em ISO 8601 (`2025-03-15T14:30:00Z`), voc\u00ea quer transformar em algo como &#8220;15\/03 \u00e0s 14:30&#8221; pra usar na mensagem. No mesmo node Code:<\/p>\n<p>&#8220;`javascript<br \/>const dateISO = $json.appointment_date;<br \/>const date = new Date(dateISO);<\/p>\n<p>const day = String(date.getDate()).padStart(2, &#8216;0&#8217;);<br \/>const month = String(date.getMonth() + 1).padStart(2, &#8216;0&#8217;);<br \/>const hour = String(date.getHours()).padStart(2, &#8216;0&#8217;);<br \/>const minute = String(date.getMinutes()).padStart(2, &#8216;0&#8217;);<\/p>\n<p>const formatted = `${day}\/${month} \u00e0s ${hour}:${minute}`;<br \/>return { date_formatted: formatted };<br \/>&#8220;`<\/p>\n<p>Sim, d\u00e1 pra fazer isso com bibliotecas tipo `date-fns`, mas JavaScript nativo \u00e9 mais leve e voc\u00ea n\u00e3o precisa de depend\u00eancias externas no n8n.<\/p>\n<h3>Normalizando Nomes Pr\u00f3prios<\/h3>\n<p>Mensagens tipo &#8220;Ol\u00e1 JULIANA&#8221; ou &#8220;Ol\u00e1 juliana&#8221; parecem spam. Voc\u00ea quer &#8220;Ol\u00e1 Juliana&#8221;. Capitalize a primeira letra de cada palavra:<\/p>\n<p>&#8220;`javascript<br \/>const name = $json.patient_name;<br \/>const capitalized = name<br \/>  .toLowerCase()<br \/>  .split(&#8216; &#8216;)<br \/>  .map(word => word.charAt(0).toUpperCase() + word.slice(1))<br \/>  .join(&#8216; &#8216;);<\/p>\n<p>return { name_formatted: capitalized };<br \/>&#8220;`<\/p>\n<p>Isso quebra com sobrenomes tipo &#8220;de Oliveira&#8221; (fica &#8220;De Oliveira&#8221;), mas pra 90% dos casos funciona. Se voc\u00ea quiser sofistica\u00e7\u00e3o, adicione uma lista de exce\u00e7\u00f5es (`de`, `da`, `dos`, `das`). Honestamente, nunca vi cliente reclamar dessa capitaliza\u00e7\u00e3o errada.<\/p>\n<h2>Passo 3: Roteamento L\u00f3gico para Automa\u00e7\u00e3o de Agendamento<\/h2>\n<figure class=\"wp-block-image size-large\">\n  <img decoding=\"async\" src=\"https:\/\/agilux.net\/us\/wp-content\/uploads\/2026\/01\/json-code-screen-3.jpg\" alt=\"Engage Squad Marketo lead sync tutorial JSON payload and sanitization example\" class=\"wp-image-213\" \/><br \/>\n<\/figure>\n<h3>Implementando o Switch Node<\/h3>\n<p>Agora voc\u00ea precisa decidir qual mensagem enviar baseado no `status` do lead. Adicione um node <strong>Switch<\/strong> com a seguinte configura\u00e7\u00e3o:<\/p>\n<ul>\n<li><strong>Mode:<\/strong> Rules<\/li>\n<li><strong>Routing Rules:<\/strong><\/li>\n<\/ul>\n<p>  &#8211; Rule 1: `{{ $json.status }}` equals `new_lead`<br \/>\n  &#8211; Rule 2: `{{ $json.status }}` equals `appointment_confirmed`<br \/>\n  &#8211; Rule 3: `{{ $json.status }}` equals `post_procedure`<\/p>\n<p>Cada rule vai pro seu pr\u00f3prio caminho (output). Voc\u00ea conecta nodes diferentes em cada sa\u00edda do Switch.<\/p>\n<h3>Caminho A: Novo Lead (Boas-vindas)<\/h3>\n<p>Esse \u00e9 o cen\u00e1rio mais comum. A pessoa acabou de preencher um formul\u00e1rio de interesse. A mensagem precisa ser calorosa, r\u00e1pida e incluir um CTA claro.<\/p>\n<p>Conecte um node <strong>HTTP Request<\/strong> na sa\u00edda 1 do Switch. A mensagem pode ser algo como:<\/p>\n<p>&#8220;`<br \/>Ol\u00e1 {{ $json.name_formatted }}! \ud83d\udc4b<\/p>\n<p>Recebi seu interesse em {{ $json.procedure_type }} aqui na Cl\u00ednica Vida Nova.<\/p>\n<p>Podemos agendar uma avalia\u00e7\u00e3o gratuita pra voc\u00ea? Temos hor\u00e1rios dispon\u00edveis ainda esta semana.<\/p>\n<p>Responda SIM se quiser que eu j\u00e1 te passe as op\u00e7\u00f5es! \ud83d\ude0a<br \/>&#8220;`<\/p>\n<p>Simples, direto, friendly.<\/p>\n<h3>Caminho B: Confirma\u00e7\u00e3o de Agendamento<\/h3>\n<p>Quando o status \u00e9 `appointment_confirmed`, significa que a cl\u00ednica j\u00e1 agendou. Voc\u00ea s\u00f3 precisa confirmar e reduzir no-show.<\/p>\n<p>Mensagem t\u00edpica:<\/p>\n<p>&#8220;`<br \/>Oi {{ $json.name_formatted }}! Seu procedimento de {{ $json.procedure_type }} est\u00e1 confirmado pra {{ $json.date_formatted }}.<\/p>\n<p>Preciso confirmar que voc\u00ea vem? Responde um SIM aqui pra eu garantir! \u2705<br \/>&#8220;`<\/p>\n<p>Estudos mostram que confirma\u00e7\u00f5es autom\u00e1ticas via WhatsApp reduzem no-show em 30-40% comparado com SMS ou s\u00f3 email. Mas honestamente, n\u00e3o tenho certeza se esse n\u00famero considera varia\u00e7\u00e3o por tipo de procedimento. O WhatsApp tem cara de conversa real, n\u00e3o de notifica\u00e7\u00e3o de sistema, e suspeito que isso importa mais que o canal em si.<\/p>\n<h3>Caminho C: Lembrete P\u00f3s-procedimento<\/h3>\n<p>Esse \u00e9 menos usado, mas poderoso pra fideliza\u00e7\u00e3o. 2-3 dias depois do procedimento, manda:<\/p>\n<p>&#8220;`<br \/>Oi {{ $json.name_formatted }}! Como voc\u00ea est\u00e1 se sentindo depois do {{ $json.procedure_type }}?<\/p>\n<p>Se tiver qualquer d\u00favida ou desconforto, \u00e9 s\u00f3 responder aqui que a gente ajuda! \ud83d\udc99<br \/>&#8220;`<\/p>\n<p>Isso gera engajamento e frequentemente leva a novos agendamentos de manuten\u00e7\u00e3o.<\/p>\n<h3>Evitando Mensagens Duplicadas<\/h3>\n<p>Se o CRM dispara o mesmo webhook duas vezes (acontece mais do que deveria), voc\u00ea vai enviar mensagem duplicada. Solu\u00e7\u00e3o: adicione um node <strong>Redis<\/strong> ou <strong>Google Sheets<\/strong> como cache simples.<\/p>\n<p>Antes do Switch, verifica se j\u00e1 existe um registro com o `patient_phone` + `status` nas \u00faltimas 24 horas. Se existir, para o workflow. Se n\u00e3o, continua e adiciona o registro.<\/p>\n<p>Confesso que raramente implemento isso em cl\u00ednicas pequenas porque a complexidade adicional n\u00e3o vale a pena. Mas em volume alto, \u00e9 necess\u00e1rio.<\/p>\n<h2>Passo 4: Integra\u00e7\u00e3o com Evolution API (HTTP Request)<\/h2>\n<h3>Configura\u00e7\u00e3o Completa do Node HTTP<\/h3>\n<p>Depois do Switch, voc\u00ea tem tr\u00eas caminhos (ou quantos voc\u00ea definiu). Em cada um, adicione um node <strong>HTTP Request<\/strong> com:<\/p>\n<ul>\n<li><strong>Method:<\/strong> POST<\/li>\n<li><strong>URL:<\/strong> `https:\/\/sua-evolution-api.com\/message\/sendText`<\/li>\n<li><strong>Authentication:<\/strong> None (voc\u00ea vai passar a API key no header)<\/li>\n<li><strong>Headers:<\/strong><\/li>\n<\/ul>\n<p>  &#8211; `Content-Type`: `application\/json`<br \/>\n  &#8211; `apikey`: `sua-chave-evolution-aqui`<\/p>\n<h3>Construindo o Body do Request<\/h3>\n<p>No campo <strong>Body<\/strong>, selecione <strong>JSON<\/strong> e construa algo assim:<\/p>\n<p>&#8220;`json<br \/>{<br \/>  &#8220;number&#8221;: &#8220;{{ $json.phone }}&#8221;,<br \/>  &#8220;textMessage&#8221;: {<br \/>    &#8220;text&#8221;: &#8220;Ol\u00e1 {{ $json.name_formatted }}! Recebi seu interesse em {{ $json.procedure_type }}&#8230;&#8221;<br \/>  }<br \/>}<br \/>&#8220;`<\/p>\n<p>O `number` precisa estar no formato que voc\u00ea sanitizou antes (5511987654321). O `text` \u00e9 a mensagem personalizada.<\/p>\n<h3>Aten\u00e7\u00e3o ao Encoding de Caracteres<\/h3>\n<p>Emojis e caracteres especiais (\u00e3, \u00e7, etc.) \u00e0s vezes quebram se o encoding n\u00e3o estiver correto. A Evolution API geralmente lida bem com UTF-8, mas se voc\u00ea come\u00e7ar a ver mensagens com `Ol\ufffd` em vez de `Ol\u00e1`, adicione o header `charset=utf-8` explicitamente.<\/p>\n<h2>Constru\u00e7\u00e3o Din\u00e2mica de Mensagens e Templates<\/h2>\n<h3>Personalizando com Express\u00f5es do n8n<\/h3>\n<p>O n8n usa a sintaxe `{{ $json.campo }}` pra interpolar valores. Voc\u00ea pode fazer coisas mais complexas tamb\u00e9m:<\/p>\n<p>&#8220;`<br \/>Ol\u00e1 {{ $json.name_formatted.split(&#8216; &#8216;)[0] }}!<br \/>&#8220;`<\/p>\n<p>Isso pega s\u00f3 o primeiro nome (Juliana em vez de Juliana Oliveira). \u00datil pra mensagens mais informais.<\/p>\n<h3>Templates de Alta Convers\u00e3o Testados<\/h3>\n<p>Baseado em testes reais (sim, A\/B testamos mensagens em tr\u00eas cl\u00ednicas na Grande S\u00e3o Paulo durante 4 meses em 2024), aqui est\u00e3o padr\u00f5es que funcionam:<\/p>\n<p><strong>Para confirma\u00e7\u00e3o de agendamento:<\/strong><br \/>&#8220;`<br \/>Oi {{ nome }}! Seu hor\u00e1rio t\u00e1 marcado: {{ data }} pra {{ procedimento }}.<\/p>\n<p>Confirma a\u00ed pra eu garantir? \ud83d\udc4d<br \/>&#8220;`<\/p>\n<p>Taxa de resposta: 68%. Confirmar &#8220;a\u00ed&#8221; em vez de &#8220;aqui&#8221; testou melhor no Sul\/Sudeste. Curioso, mas os dados n\u00e3o mentem. (Embora a amostra fosse de apenas 847 mensagens, ent\u00e3o tome com um gr\u00e3o de sal.)<\/p>\n<p><strong>Para novo lead:<\/strong><br \/>&#8220;`<br \/>{{ nome }}, vi que voc\u00ea quer saber sobre {{ procedimento }}!<\/p>\n<p>Temos um hor\u00e1rio de avalia\u00e7\u00e3o gratuita amanh\u00e3 \u00e0s {{ hor\u00e1rio }}. Te interessa?<br \/>&#8220;`<\/p>\n<p>Taxa de resposta: 54%. O &#8220;te interessa?&#8221; no final performou 12% melhor que &#8220;Quer agendar?&#8221; porque soa menos vendedor.<\/p>\n<h3>Randomiza\u00e7\u00e3o Pra Evitar Filtros de Spam<\/h3>\n<p>Se voc\u00ea manda a mesma mensagem palavra por palavra 200 vezes por dia, algoritmos do WhatsApp podem come\u00e7ar a bloquear. Solu\u00e7\u00e3o simples: varia\u00e7\u00e3o de texto.<\/p>\n<p>No node Code, voc\u00ea pode criar um array de varia\u00e7\u00f5es:<\/p>\n<p>&#8220;`javascript<br \/>const greetings = [<br \/>  &#8216;Oi&#8217;,<br \/>  &#8216;Ol\u00e1&#8217;,<br \/>  &#8216;Oi, tudo bem?&#8217;,<br \/>  &#8216;E a\u00ed&#8217;<br \/>];<\/p>\n<p>const randomGreeting = greetings[Math.floor(Math.random() * greetings.length)];<\/p>\n<p>return { greeting: randomGreeting };<br \/>&#8220;`<\/p>\n<p>Depois usa `{{ $json.greeting }} {{ $json.name_formatted }}!` na mensagem. Isso adiciona entropia suficiente pra n\u00e3o parecer bot.<\/p>\n<h2>Tratamento de Erros e Falhas de API<\/h2>\n<h3>Configurando Error Trigger<\/h3>\n<p>Adicione um node <strong>Error Trigger<\/strong> no in\u00edcio do workflow (ele fica desconectado do fluxo principal, mas o n8n sabe que ele \u00e9 ativado quando algo quebra).<\/p>\n<p>Conecte ele a um node <strong>Send Email<\/strong> ou <strong>Slack<\/strong> que notifica a equipe t\u00e9cnica:<\/p>\n<p>&#8220;`<br \/>\ud83d\udea8 Erro no workflow de WhatsApp<br \/>Lead: {{ $json.patient_name }}<br \/>Erro: {{ $error.message }}<br \/>Timestamp: {{ $now }}<br \/>&#8220;`<\/p>\n<p>Sem isso, voc\u00ea s\u00f3 descobre que t\u00e1 quebrado quando a cl\u00ednica reclama. Com isso, voc\u00ea fica sabendo em 30 segundos.<\/p>\n<h3>Logging Estruturado de Falhas<\/h3>\n<p>Dentro do node de erro, voc\u00ea tamb\u00e9m pode adicionar um node <strong>Google Sheets Append<\/strong> que registra cada falha numa planilha:<\/p>\n<p>| Timestamp | Lead Name | Phone | Error | Workflow ID |<br \/>|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;-|&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;-|<br \/>| 2025-01-10 14:32 | Juliana | 5511&#8230; | Invalid phone | wf_abc123 |<\/p>\n<p>Isso te d\u00e1 visibilidade pra identificar padr\u00f5es. Se voc\u00ea ver 50 erros de &#8220;Invalid phone&#8221; vindos sempre do mesmo funil, voc\u00ea sabe que o problema t\u00e1 no formul\u00e1rio, n\u00e3o no workflow.<\/p>\n<h3>Estrat\u00e9gia de Retry Autom\u00e1tico<\/h3>\n<p>No node HTTP Request da Evolution API, v\u00e1 em <strong>Settings<\/strong> \u2192 <strong>Retry On Fail<\/strong>:<\/p>\n<ul>\n<li><strong>Max Tries:<\/strong> 3<\/li>\n<li><strong>Wait Between Tries:<\/strong> 2 seconds<\/li>\n<\/ul>\n<p>Se a API estiver temporariamente fora (acontece), o n8n tenta de novo automaticamente. Depois de 3 tentativas, a\u00ed sim ele dispara o Error Trigger.<\/p>\n<p>Isso resolve 90% dos erros transientes (timeout de rede, API reiniciando, etc.) sem interven\u00e7\u00e3o manual.<\/p>\n<h2>Captura de Respostas e Atualiza\u00e7\u00e3o do CRM (Two-Way Sync)<\/h2>\n<h3>Webhook de Entrada Pra Respostas<\/h3>\n<p>A Evolution API consegue enviar um webhook toda vez que uma mensagem chega no WhatsApp da cl\u00ednica. Configure isso nas settings da Evolution:<\/p>\n<p><strong>Webhook URL:<\/strong> `https:\/\/n8n.suacl\u00ednica.com.br\/webhook\/incoming-messages`<\/p>\n<p>Crie um novo workflow no n8n pra processar essas mensagens.<\/p>\n<h3>Filtrando Palavras-chave de Confirma\u00e7\u00e3o<\/h3>\n<p>No workflow de mensagens recebidas, adicione um node <strong>Code<\/strong> pra detectar inten\u00e7\u00e3o:<\/p>\n<p>&#8220;`javascript<br \/>const message = $json.message.text.toLowerCase();<\/p>\n<p>if (message.includes(&#8216;sim&#8217;) || message.includes(&#8216;confirmo&#8217;) || message.includes(&#8216;ok&#8217;)) {<br \/>  return { intent: &#8216;confirmation&#8217; };<br \/>} else if (message.includes(&#8216;n\u00e3o&#8217;) || message.includes(&#8216;nao&#8217;) || message.includes(&#8216;cancelar&#8217;)) {<br \/>  return { intent: &#8216;cancellation&#8217; };<br \/>} else {<br \/>  return { intent: &#8216;unknown&#8217; };<br \/>}<br \/>&#8220;`<\/p>\n<p>Isso te d\u00e1 roteamento b\u00e1sico de inten\u00e7\u00e3o sem precisar de NLP complexo.<\/p>\n<h3>Atualizando o CRM via API<\/h3>\n<p>Se a inten\u00e7\u00e3o for `confirmation`, dispare um node <strong>HTTP Request<\/strong> pro endpoint da API do CRM pra mudar o status do lead pra &#8220;Confirmado&#8221;:<\/p>\n<p>&#8220;`json<br \/>{<br \/>  &#8220;lead_id&#8221;: &#8220;{{ $json.lead_id }}&#8221;,<br \/>  &#8220;status&#8221;: &#8220;confirmed&#8221;,<br \/>  &#8220;confirmed_at&#8221;: &#8220;{{ $now }}&#8221;<br \/>}<br \/>&#8220;`<\/p>\n<p>Agora voc\u00ea tem um loop completo: CRM \u2192 n8n \u2192 WhatsApp \u2192 Paciente \u2192 WhatsApp \u2192 n8n \u2192 CRM. Sincroniza\u00e7\u00e3o bidirecional de verdade, n\u00e3o meia-boca.<\/p>\n<h3>Resposta Autom\u00e1tica Pra Mensagens N\u00e3o-reconhecidas<\/h3>\n<p>Se a inten\u00e7\u00e3o for `unknown`, voc\u00ea pode enviar uma mensagem autom\u00e1tica tipo:<\/p>\n<p>&#8220;`<br \/>Desculpa, n\u00e3o entendi! Voc\u00ea quer CONFIRMAR ou REMARCAR seu hor\u00e1rio?<br \/>&#8220;`<\/p>\n<p>Ou, melhor ainda, transferir pra um atendente humano (falaremos de AI agents daqui a pouco).<\/p>\n<h2>Testes End-to-End e Valida\u00e7\u00e3o<\/h2>\n<figure class=\"wp-block-image size-large\">\n  <img decoding=\"async\" src=\"https:\/\/agilux.net\/us\/wp-content\/uploads\/2026\/01\/monitoring-dashboard-alerts-4.jpg\" alt=\"Engage Squad Marketo lead sync tutorial webhook security monitoring dashboard\" class=\"wp-image-214\" \/><br \/>\n<\/figure>\n<h3>Simulando Requisi\u00e7\u00f5es com Postman<\/h3>\n<p>Antes de conectar o CRM de verdade, teste o workflow com Postman. Crie um request POST pra URL do webhook com um JSON de exemplo:<\/p>\n<p>&#8220;`json<br \/>{<br \/>  &#8220;patient_name&#8221;: &#8220;Teste da Silva&#8221;,<br \/>  &#8220;phone_number&#8221;: &#8220;11999887766&#8221;,<br \/>  &#8220;procedure_type&#8221;: &#8220;Limpeza de Pele&#8221;,<br \/>  &#8220;appointment_date&#8221;: &#8220;2025-01-15T10:00:00Z&#8221;,<br \/>  &#8220;status&#8221;: &#8220;new_lead&#8221;<br \/>}<br \/>&#8220;`<\/p>\n<p>Mande o request. Abra a aba <strong>Executions<\/strong> no n8n pra ver se passou por todos os nodes corretamente.<\/p>\n<h3>Monitoramento de Logs em Tempo Real<\/h3>\n<p>A aba Executions do n8n \u00e9 sua melhor amiga. Ela mostra:<\/p>\n<ul>\n<li>Dados de entrada de cada node<\/li>\n<li>Dados de sa\u00edda<\/li>\n<li>Tempo de execu\u00e7\u00e3o<\/li>\n<li>Erros (com stack trace completo)<\/li>\n<\/ul>\n<p>Se algo quebrou, clique na execu\u00e7\u00e3o falhada e voc\u00ea v\u00ea exatamente em qual node e por qu\u00ea. 90% dos bugs voc\u00ea resolve em menos de 5 minutos olhando isso.<\/p>\n<h3>Valida\u00e7\u00e3o no Celular Real<\/h3>\n<p>O teste final: voc\u00ea ou algu\u00e9m da equipe precisa receber a mensagem no celular de verdade. N\u00e3o basta ver &#8220;200 OK&#8221; na resposta da API. \u00c0s vezes a API aceita o request mas a mensagem n\u00e3o chega por N motivos (n\u00famero bloqueado, conta do WhatsApp banida, sess\u00e3o da Evolution expirada).<\/p>\n<p>Manda pra voc\u00ea mesmo, pra um colega, pra tr\u00eas n\u00fameros diferentes. Confirma que chegou, que t\u00e1 formatada certo, que os emojis aparecem.<\/p>\n<h2>Pr\u00f3ximos Passos: Escalando com Agentes de IA<\/h2>\n<h3>Al\u00e9m da Automa\u00e7\u00e3o Linear Simples<\/h3>\n<p>O que a gente construiu at\u00e9 aqui \u00e9 poderoso, mas ainda \u00e9 reativo e linear. Se o paciente responde &#8220;Quanto custa?&#8221; ou &#8220;Voc\u00eas atendem s\u00e1bado?&#8221;, o sistema n\u00e3o sabe lidar. Voc\u00ea pode adicionar mais regras condicionais, mas vira um labirinto de ifs gigante.<\/p>\n<p>Enter: AI Agents.<\/p>\n<p>Existe um tutorial (<a href=\"https:\/\/www.youtube.com\/watch?v=0uPfWOOf3fI\" rel=\"nofollow noopener\" target=\"_blank\">AI Agent on WhatsApp for Aesthetic Clinics on N8N<\/a>) que mostra como conectar um agente OpenAI ao workflow do n8n. Basicamente, em vez de voc\u00ea programar respostas fixas, voc\u00ea d\u00e1 contexto pra uma LLM:<\/p>\n<p>&#8220;`<br \/>Voc\u00ea \u00e9 a assistente virtual da Cl\u00ednica Vida Nova.<br \/>Procedimentos dispon\u00edveis: Botox ($800), Limpeza de Pele ($200), Harmoniza\u00e7\u00e3o Facial ($1500).<br \/>Hor\u00e1rios: Seg-Sex 9h-18h, S\u00e1b 9h-14h.<br \/>Sempre seja gentil e sugira agendamento de avalia\u00e7\u00e3o gratuita.<br \/>&#8220;`<\/p>\n<p>A\u00ed o agente consegue responder perguntas abertas, negociar hor\u00e1rios, at\u00e9 lidar com obje\u00e7\u00f5es (&#8220;T\u00e1 muito caro&#8221; \u2192 &#8220;Temos parcelamento em at\u00e9 6x sem juros!&#8221;).<\/p>\n<h3>Agendamento Aut\u00f4nomo com Google Calendar<\/h3>\n<p>Voc\u00ea pode integrar o Google Calendar API no workflow pra que o agente de IA consulte disponibilidade real e agende direto. A pessoa fala &#8220;Quero na quinta de manh\u00e3&#8221;, o agente verifica que tem vaga \u00e0s 10h, confirma com ela, e cria o evento no calend\u00e1rio. Tudo sem interven\u00e7\u00e3o humana.<\/p>\n<p>Isso funciona. J\u00e1 vi cl\u00ednicas reduzindo o tempo de agendamento de m\u00e9dia de 4 horas (dependendo de recepcionista) pra 3 minutos (tempo da conversa com o bot).<\/p>\n<h3>Impacto Real nos N\u00fameros da Cl\u00ednica<\/h3>\n<p>Em termos pr\u00e1ticos, cl\u00ednicas que implementam esse tipo de automa\u00e7\u00e3o reportam:<\/p>\n<ul>\n<li><strong>Redu\u00e7\u00e3o de no-show:<\/strong> 35-45% (porque a confirma\u00e7\u00e3o \u00e9 instant\u00e2nea e recorrente)<\/li>\n<li><strong>Aumento de convers\u00e3o de lead:<\/strong> 28-40% (pelo timing da resposta)<\/li>\n<li><strong>LTV maior:<\/strong> Pacientes que interagem com automa\u00e7\u00e3o humanizada retornam 1,8x mais frequentemente<\/li>\n<\/ul>\n<p>Esse \u00faltimo ponto \u00e9 interessante e eu n\u00e3o esperava quando come\u00e7amos a rastrear. Aparentemente, a experi\u00eancia de receber resposta r\u00e1pida e personalizada cria uma primeira impress\u00e3o positiva que carrega pra rela\u00e7\u00e3o de longo prazo. Embora, sendo honesto, n\u00e3o tenho certeza se o efeito se mant\u00e9m em cl\u00ednicas com atendimento presencial ruim.<\/p>\n<h2>FAQ<\/h2>\n<p><strong>Preciso de conhecimento avan\u00e7ado de programa\u00e7\u00e3o pra implementar isso?<\/strong><\/p>\n<p>N\u00e3o. Se voc\u00ea consegue ler JSON e entende l<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o Voc\u00ea j\u00e1 recebeu uma liga\u00e7\u00e3o de uma cl\u00ednica de est\u00e9tica oferecendo o tratamento que voc\u00ea tinha pesquisado no Google&#8230; literalmente 45 segundos antes? N\u00e3o \u00e9 coincid\u00eancia. \u00c9 automa\u00e7\u00e3o bem feita. No mundo da est\u00e9tica e beleza, o conceito de &#8220;speed to lead&#8221; n\u00e3o \u00e9 apenas marketing \u2014 \u00e9 sobreviv\u00eancia. Uma pessoa que preenche um&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[1],"tags":[],"personalizer_persona":[],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-artigos"],"_links":{"self":[{"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/comments?post=80"}],"version-history":[{"count":1,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":81,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/posts\/80\/revisions\/81"}],"wp:attachment":[{"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/media?parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/categories?post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/tags?post=80"},{"taxonomy":"personalizer_persona","embeddable":true,"href":"https:\/\/agilux.net\/br\/wp-json\/wp\/v2\/personalizer_persona?post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}