Como criar um lembrete no celular com n8n, sem cadastro

Beber água, tomar um remédio, pagar uma conta, alongar as costas: todo mundo tem algum lembrete que gostaria de receber no celular, sempre no mesmo horário. Neste tutorial você vai fazer o n8n mandar essa notificação sozinho, todos os dias às 9h, usando o ntfy (lê-se “notify”), um serviço gratuito de notificações que não pede cadastro, e-mail nem senha.

O workflow tem só dois nós: um gatilho de horário e um HTTP Request que envia a mensagem. É um ótimo exemplo para aprender a usar o método POST, que serve para enviar dados a um serviço, e não apenas consultar.

O que você vai construir

Este é o workflow final no editor do n8n:

Editor do n8n com o workflow Lembrete no celular (ntfy): nós Schedule Trigger e HTTP Request (POST para ntfy.sh) ligados em sequência
O workflow final “Lembrete no celular (ntfy)” no editor do n8n (versão 2.40.7).
  • Schedule Trigger: dispara o workflow todos os dias às 9h.
  • HTTP Request: faz um POST para o endereço do seu tópico no ntfy.sh, com o texto do lembrete.

Versão usada: n8n 2.40.7. Os nomes de botões e campos aparecem em inglês, exatamente como na interface. Os prints mostram um tópico de exemplo; ao montar o seu, crie um nome novo, como explicamos logo abaixo.

Pré-requisitos

Como o ntfy funciona (e por que o tópico é a sua senha)

No ntfy, as mensagens são organizadas em tópicos. Um tópico é só um nome: quem envia uma mensagem para https://ntfy.sh/nome-do-topico faz com que ela chegue a todos os aparelhos inscritos nesse mesmo nome. Não existe cadastro, e é justamente por isso que o nome do tópico funciona como uma senha: qualquer pessoa que souber o nome pode ler as suas mensagens e também mandar mensagens para você.

Por isso, nunca use nomes óbvios, como “lembrete” ou “meu-celular”. Invente um nome longo e aleatório, com letras sem acento, números e hífens, e não o compartilhe. No exemplo deste tutorial usamos lembrete-aebd460ecc248ff1. Como esse nome agora está publicado aqui, ele deixou de ser secreto: crie o seu, trocando os caracteres depois de “lembrete-” por outros quaisquer. E, como o servidor ntfy.sh é público, evite colocar dados sensíveis no texto das mensagens.


Montando o workflow, nó por nó

Crie um workflow novo e dê a ele o nome Lembrete no celular (ntfy). Depois, adicione os dois nós abaixo, nesta ordem.

Nó 1: Schedule Trigger (todo dia às 9h)

Clique em Add first step, digite “schedule” na busca e escolha Schedule Trigger. Esse gatilho dispara o workflow em horários definidos por você, sem ninguém precisar clicar em nada.

Tela do nó Schedule Trigger com Trigger Interval Days, Days Between Triggers 1, Trigger at Hour 9am e Trigger at Minute 0; à direita, a saída JSON com timestamp, Readable date, Day of week, Hour, Minute e Timezone America/Sao_Paulo (UTC-03:00)
Schedule Trigger configurado para todos os dias às 9h. À direita, a saída de uma execução manual de teste.
CampoValorPor que assim
Trigger IntervalDaysO lembrete é diário.
Days Between Triggers1Um dia entre um disparo e outro, ou seja, todos os dias.
Trigger at Hour9amDispara às 9h da manhã.
Trigger at Minute0Exatamente às 9h00.

Repare no aviso amarelo no topo do nó: “This workflow will run on the schedule you define here once you publish it.” Ou seja, o horário só passa a valer depois que o workflow for publicado (veremos isso no teste). Enquanto isso, você pode testar à vontade clicando em Execute workflow no canvas.

A saída do nó, no print, foi gerada por uma execução manual e mostra a data e a hora do disparo em vários formatos, como Readable date, Day of week e Hour. O campo Timezone merece atenção: no nosso n8n ele apareceu como America/Sao_Paulo (UTC-03:00), o horário de Brasília. Se no seu aparecer outro fuso, o lembrete vai chegar na hora errada; nesse caso, ajuste o fuso em Settings do workflow (campo Timezone) ou na variável GENERIC_TIMEZONE do seu n8n.

Nó 2: HTTP Request (enviar a notificação)

Enviar uma mensagem pelo ntfy é simples: basta fazer um POST para o endereço do tópico, com o texto da mensagem no corpo da requisição. A URL do exemplo é esta (lembre-se de trocar pelo seu tópico):

https://ntfy.sh/lembrete-aebd460ecc248ff1

E este é o texto do lembrete, que vai no campo Body:

Bom dia! Hora de beber um copo de água e conferir a agenda do dia.

Clique no + à direita do Schedule Trigger, adicione um nó HTTP Request e preencha como na tabela:

Tela do nó HTTP Request com Method POST, URL https://ntfy.sh/lembrete-aebd460ecc248ff1, Send Headers ligado com o cabeçalho Title igual a Lembrete, Send Body ligado, Body Content Type Raw, Content Type text/plain e o texto do lembrete; à direita, a resposta JSON do ntfy com id, time, expires, event message, topic, title e message
HTTP Request enviando o lembrete. À direita (OUTPUT), a confirmação devolvida pelo ntfy.
CampoValorPor que assim
MethodPOSTEstamos enviando uma mensagem, e não consultando dados.
URLa URL do primeiro bloco acimaEndereço do seu tópico no servidor público ntfy.sh.
AuthenticationNoneO ntfy.sh não pede login para tópicos comuns.
Send Query ParametersdesligadoNão são necessários.
Send HeadersligadoPara enviar o título da notificação.
Specify HeadersUsing Fields BelowPreenchemos o cabeçalho em campos, sem escrever JSON.
Headers → Name / ValueTitle / LembreteO ntfy usa o cabeçalho Title como título da notificação. Use um título sem acentos (veja os erros comuns).
Send BodyligadoO texto do lembrete vai no corpo da requisição.
Body Content TypeRawEnviamos o texto puro, do jeito que está.
Content Typetext/plainAvisa ao ntfy que o corpo é um texto simples.
Bodyo texto do segundo bloco acimaÉ a mensagem que aparece na notificação. Aqui acentos funcionam normalmente.
Options(nenhuma)As opções padrão bastam.

Clique em Execute step. Se tudo deu certo, o ntfy devolve 1 item com a confirmação do envio: id (o código da mensagem), time (o momento do envio, contado em segundos), event igual a message, o topic, o title e a message que você mandou. O campo expires indica até quando a mensagem fica guardada no servidor para aparelhos que estavam desligados; no nosso teste, a diferença entre expires e time foi de 43.200 segundos, ou seja, 12 horas.


O workflow completo e o teste

1. Inscreva o celular no tópico

Abra o app ntfy no celular, toque no botão + para se inscrever num tópico, digite o nome exato do seu tópico (no exemplo, lembrete-aebd460ecc248ff1) e mantenha o servidor padrão, ntfy.sh. Pronto: a partir daí, tudo o que for enviado para esse tópico aparece como notificação no celular. Se preferir testar antes pelo computador, abra no navegador o endereço https://ntfy.sh/ seguido do nome do tópico.

2. Execute o workflow

No n8n, clique em Execute workflow. Os dois nós ficam verdes, com 1 item em cada ligação:

Workflow executado com os nós Schedule Trigger e HTTP Request em verde e 1 item em cada ligação
O workflow depois de uma execução manual de teste.

No painel Logs, na barra inferior, selecione o HTTP Request para ver a resposta do ntfy em forma de tabela:

Painel Logs com o HTTP Request selecionado e a tabela com id, time, expires, event message, topic lembrete-aebd460ecc248ff1, title Lembrete e a mensagem Bom dia! Hora de beber um copo de água e conferir a agenda do dia.
A resposta do ntfy no painel Logs: a mensagem foi aceita pelo servidor.

Ao mesmo tempo, a mensagem chegou na página do tópico no ntfy.sh, que estava aberta no navegador, com o título “Lembrete” e o texto do corpo. Nos aparelhos inscritos no tópico, como o seu celular, ela chega como notificação:

Página web do ntfy.sh aberta no tópico lembrete-aebd460ecc248ff1, mostrando a mensagem recebida em 26/09/2026 às 23:41 com o título Lembrete e o texto Bom dia! Hora de beber um copo de água e conferir a agenda do dia.
A mensagem enviada pelo n8n chegando na página do tópico no ntfy.sh.

O aviso “Notificações estão bloqueadas”, à esquerda, aparece porque o navegador usado no teste não tinha permissão para mostrar notificações. Ele não impede a mensagem de chegar; se quiser receber avisos também no computador, basta permitir as notificações do ntfy.sh no seu navegador.

3. Publique para valer todos os dias

Até aqui, o lembrete só foi enviado porque você clicou no botão. Para que ele chegue sozinho todos os dias às 9h, clique em Publish, no canto superior direito do editor. Na janela Publish workflow, o n8n sugere um nome de versão (Version name) e oferece um campo opcional para descrever as mudanças (Describe changes (optional)). Clique em Publish para confirmar.

Janela Publish workflow do n8n com o campo Version name preenchido, o campo Describe changes (optional) vazio e os botões Cancel e Publish
A janela de publicação. Depois de publicado, o Schedule Trigger passa a disparar no horário.

Um detalhe importante: o n8n precisa estar ligado no horário do lembrete. Se ele roda no seu computador e o computador estiver desligado às 9h, a notificação daquele dia não será enviada. Para lembretes que não podem falhar, o ideal é um n8n que fique sempre no ar.

Erros comuns

Título e texto com caracteres estranhos. Não aparece erro no n8n, mas a notificação chega embaralhada. No teste abaixo, usamos o título “Atenção”, com cedilha e til, no cabeçalho Title. O ntfy aceitou a mensagem, mas o título virou “Aten” seguido de símbolos sem sentido, e a palavra “água”, no texto, também chegou quebrada. Os cabeçalhos de uma requisição HTTP foram feitos para caracteres simples; por isso, deixe o Title sem acentos e escreva o que precisar de acento no Body.

Nó HTTP Request com o cabeçalho Title igual a Atenção; na resposta do ntfy, o title aparece como Aten seguido de caracteres estranhos e a palavra água também aparece quebrada na message
Erro real: acento no cabeçalho Title embaralha o título e o texto da notificação.

“The resource you are requesting could not be found”, com a mensagem “page not found”. O nome do tópico tem caracteres que o ntfy não aceita. No teste, usamos lembrete do joão, com espaços e acento, e o servidor respondeu 404. Use só letras sem acento, números, hífen e sublinhado.

Nó HTTP Request com a URL https://ntfy.sh/lembrete do joão e o erro The resource you are requesting could not be found com a mensagem page not found
Erro real com espaços e acento no nome do tópico.
  • A mensagem aparece no n8n, mas não no celular. Confira se o nome do tópico no app é exatamente igual ao da URL, letra por letra. Maiúsculas e minúsculas fazem diferença.
  • O lembrete não chega às 9h. Verifique se o workflow foi publicado, se o n8n estava ligado nesse horário e se o campo Timezone da saída do Schedule Trigger mostra o fuso certo.

JSON do workflow para importar

Se preferir, importe o workflow pronto. Baixe o arquivo abaixo ou copie o JSON. No n8n, crie um workflow novo e escolha uma das opções: abra o menu … (três pontinhos) no topo do editor, vá em Import e depois em From file; ou cole o JSON direto no canvas com Ctrl+V.

O download é um arquivo .zip com o lembrete-celular-ntfy.json dentro. Descompacte antes de importar (ou copie o JSON do bloco abaixo).

{
  "name": "Lembrete no celular (ntfy)",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "id": "3c9e7a11-1111-4f6d-8b03-0f0000000001",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://ntfy.sh/lembrete-aebd460ecc248ff1",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Title",
              "value": "Lembrete"
            }
          ]
        },
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "text/plain",
        "body": "Bom dia! Hora de beber um copo de água e conferir a agenda do dia.",
        "options": {}
      },
      "id": "3c9e7a11-2222-4f6d-8b03-0f0000000002",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.5,
      "position": [
        260,
        0
      ]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  }
}

Depois de importar, troque o tópico na URL do HTTP Request pelo nome que você criou; o tópico do exemplo é público. O workflow não usa credenciais.

Recapitulando

  • O Schedule Trigger dispara o workflow num horário fixo, mas só depois que o workflow é publicado.
  • O HTTP Request com POST envia dados a um serviço; no ntfy, basta mandar o texto para o endereço do tópico.
  • O nome do tópico funciona como senha: use um nome longo e aleatório e não o divulgue.
  • O cabeçalho Title define o título da notificação e deve ficar sem acentos.

Com essa mesma base, você pode trocar o texto fixo por dados de outra API, como a cotação do dólar ou os próximos feriados, e receber tudo no celular. Nos próximos tutoriais, vamos continuar montando automações simples e úteis com o n8n.