Em algum momento você pode precisar interromper uma campanha já em execução — porque erro foi detectado, situação mudou, ou simplesmente quer parar pra ajustar e retomar. O Syncro tem 2 operações distintas:
- Pausar — interrompe temporariamente. Pendentes ficam congelados, podem ser retomados depois.
- Cancelar — encerra definitivamente. Pendentes viram
skippede campanha vai pra statuscanceled.
Esse artigo explica cada uma e quando usar.
Diferença essencial
| Operação | Status final | Recipients pendentes | Reversível? |
|---|---|---|---|
| Pausar | paused |
Ficam pending (congelados) |
✅ Sim (retomar) |
| Cancelar | canceled |
Viram skipped (skip_reason='campaign_canceled') |
❌ Não |
Pausar campanha
Quando usar
- Você notou alta taxa de erro e quer investigar antes de continuar.
- Lead errado entrou na lista (ex: cliente que pediu opt-out) e quer remover antes que receba.
- Mudou texto da promoção e quer ajustar variações.
- Empresa precisa parar disparos por X horas (politica interna).
Como pausar
- Acesse o dashboard da campanha (
/disparos/{id}). - No header, clique em Pausar.
- Sistema:
- Atualiza
campaign.status = 'paused'. - Recipients
pendingcontinuam pending (não viram skipped). - Jobs já enfileirados chegam no horário programado, mas o
SendMassMessageJobdetecta statuspausede re-agenda 5 min depois.
- Status pill no header muda pra "Pausada" (cinza).
O que acontece com recipients pendentes
- Pending fica pending: nenhuma mudança no banco.
- Jobs no Redis continuam delayed pros horários originais.
- Quando o horário chega, job tenta executar:
- Detecta
campaign.status='paused'. - Re-enfileira pra 5 min depois.
- Se ainda
paused, repete. - Loop continua até você retomar ou cancelar.
💡 Dica: pausa não bloqueia mensagens já em voo (sendo enviadas no momento da pausa). Pode haver até 1-2 envios depois do clique em "Pausar".
Retomar campanha
- No dashboard, clique em Retomar (botão aparece no lugar de "Pausar").
- Sistema:
- Atualiza
campaign.status = 'running'. - Próximo job que executar vê status running e processa normalmente.
- Pendentes começam a ser enviados conforme horários originais.
- Status pill volta pra "Em execução" (azul/verde).
⚠️ Atenção: retomar não recalcula horários — usa os já agendados. Se você pausou por 2h, os recipients que deveriam ser enviados nas últimas 2h são processados de uma vez (ritmo acelerado pra recuperar atraso). Isso pode parecer "explosão" momentânea.
Cancelar campanha
Quando usar
- Decisão definitiva de não continuar.
- Erro grave detectado (ex: link errado na mensagem, oferta com preço errado).
- Problema com número WhatsApp (suspeita de banimento iminente).
- Mudou estratégia e quer criar campanha nova do zero.
Como cancelar
- No dashboard, clique em Cancelar.
- Confirme: "Tem certeza? Esta ação não pode ser desfeita.".
- Confirme.
- Sistema:
- Atualiza
campaign.status = 'canceled'. - Atualiza
campaign.canceled_at = now. - Bulk update dos recipients pendentes:
status='skipped'skip_reason='campaign_canceled'- Jobs no Redis: quando processarem, detectam status
cancelede marcam recipient como skipped (ou pulam se já foi atualizado).
- Status pill muda pra "Cancelada" (cinza).
O que acontece com mensagens já enviadas
Mensagens já entregues continuam entregues. Cancelar não desfaz o que já foi feito.
- 200 mensagens enviadas + cancelar com 800 pendentes:
- 200 ficam como
sentno histórico. - 800 viram
skippedcom motivo "campaign_canceled".
Cancelar campanha agendada (não iniciada)
Se você criou campanha agendada pro futuro e quer cancelar antes de iniciar:
- Mesmo dashboard.
- Clique em Cancelar.
- Status passa direto pra
canceled. - Recipients (criados na hora da criação da campanha) viram
skipped.
Nada é enviado.
Diferenças nos guards (validações)
Cada operação tem guards que verificam se é permitido executar:
canPause
Permite pausar se status é:
runningscheduled
Não permite pausar se já está paused, completed, canceled, failed.
canResume
Permite retomar se status='paused'.
canCancel
Permite cancelar se status é:
draftscheduledrunningpaused
Não permite cancelar completed, canceled, failed (já estão em estado final).
Se você tentar operação não permitida, sistema retorna 422 Unprocessable Entity com mensagem.
Histórico de pausas/cancelamentos
Hoje a UI não tem histórico granular de "quem pausou e quando". Mas:
- Status atual sempre visível no dashboard.
canceled_atregistra timestamp do cancelamento.- Audit Log registra a ação (quem clicou + quando).
Múltiplas pausas
Você pode pausar e retomar várias vezes numa mesma campanha:
- Pausa → ajusta → Retoma.
- Pausa → investiga → Retoma.
Cada par pause/resume é registrado no Audit Log. Não há limite formal de quantas vezes pausar.
Cancelar com sucesso parcial
Se 200 leads receberam sucesso e 800 viraram skipped por cancelamento, isso é operação parcial saudável:
- KPIs mostram: 200 enviadas, 800 puladas.
- Skip reason mostra: 800 com motivo "campaign_canceled".
- Você consegue investigar quais 200 receberam (talvez crie nova campanha pros 800 restantes).
Não há "rollback" de envio
Mensagens já enviadas não são desenviadas. WhatsApp não tem API pra "desfazer mensagem após X minutos" (o delete pra todos é manual no app).
Se você cancelou após mensagens com erro grave terem ido:
- Comunique pessoalmente clientes afetados pra esclarecer (corrigir preço, etc).
- Não fica plano B automático no Syncro.
Erros comuns
"Não consigo pausar — botão cinza"
Provavelmente status já é paused ou completed. Confirme no dashboard.
"Pausei mas mensagens continuaram chegando por mais 2 minutos"
Comportamento esperado. Mensagens em voo (sendo enviadas agora ao Meta) terminam. Pausa bloqueia novas, mas não interrompe as em curso.
"Cancelei e mensagens continuaram"
- Verifique se realmente clicou em Cancelar (não Pausar).
- Aguarde alguns minutos — jobs precisam ser processados pelo worker pra ver o status
canceled. - Se persistir após 10 minutos, contate suporte.
"Quero pausar e ressomar com ritmo diferente"
Hoje você não consegue mudar configurações (intervalo, batch) de uma campanha em execução. Pra mudar:
- Cancele a campanha atual.
- Crie nova campanha com lista filtrada (excluindo quem já recebeu).
- Configure ritmo novo.
Quando usar pausa vs cancelamento
| Situação | Pausa? | Cancelamento? |
|---|---|---|
| Detectei erro pequeno na mensagem | ✅ — investigue, ajuste se possível, retome | — |
| Detectei erro grave (link quebrado, preço errado) | — | ✅ — pare e refaça |
| Hora do almoço, pausar 1h | ✅ — retome depois | — |
| Decidi parar campanha definitivamente | — | ✅ |
| Suspeita de banimento iminente | ✅ inicialmente, depois cancelamento se confirmar | ✅ |
| Mudou estratégia / oferta | — | ✅ — crie campanha nova |
Próximos passos
- Pra criar nova campanha após cancelar, veja Criar campanha.
- Pra entender progressão da execução, veja Acompanhar tempo real.