Um Guia Completo com todas as opções de configuração das Crons do Mautic para você configurar e otimizar sua instalação em uma VPS.
As Crons do Mautic são responsáveis por executar todos os trabalhos em segundo plano do Mautic. Funciona como uma fila e atualiza campanhas e segmentos, envia e-mails e processa webhooks.
Este artigo está compatível com o Mautic 3 ou posterior.
Ordem de execução das Crons do Mautic
Apesar do Mautic normalmente alocar muitos recursos do servidor é importante utilizar um bom planejamento sobre quando executar determinadas tarefas Crons do Mautic.
Isso evita travamento e conflitos entre execuções Crons do Mautic distintas mas que necessitam uma da outra. A própria documentação do Mautic diz para evitar rodar as tarefas cron ao mesmo tempo. 😉
Analisando o código-fonte do Mautic e entendendo o seu funcionamento compreendi que a seguinte ordem de execução do cron job é fundamental para o funcionamento das listas, campanhas e outros recursos do mautic:
- Atualizações de Lista
- Atualizações de Campanhas
- Execução de Campanhas
- Processamento da Fila de Envio de E-mails
- Processamento da Caixa Monitorada
- Processamento da Atualização do IP Monitorado
- Limpeza de Dados antigos da Base de Dados
O Mautic possui uma extensa lista de comandos que podem ser utilizados para a manutenção do banco de dados, limpeza do cache e atualização da plataforma.
Neste artigo eu listo os principais comandos do Mautic que podem ser utilizados no Mautic 3 e Mautic 4.
Cron para atualização de Listas/Segmentos no Mautic
Este é a primeira cron do mautic que configuramos pois é a responsável por atualizar as nossas listas inteligentes / segmentos que possuem filtros no Mautic.
Lembre-se que o Mautic processa 300 leads por execução desta tarefa e que você pode aumentar ou diminuir este número de contatos dependendo dos recursos disponíveis no seu servidor.
Veja abaixo a configuração padrão para a atualização de listas:
php bin/console mautic:segments:update
Você pode aumentar o número de leads processados por execução do cron com o parâmetro –batch-limit=X, conforme abaixo:
php bin/console mautic:segments:update --batch-limit=500
Desse modo o Mautic consegue processar mais leads no segmento, porém usa mais memória.
Cron job para Execução de Campanhas
O Mautic separa esta funcionalidade em dois comandos:
mautic:campaigns:update
é responsável por adicionar ou remover os leads nas campanhas ;mautic:campaigns:trigger
é responsável por executar as ações necessárias com estes leads que já estão dentro da campanha.
Atualizando os contatos em uma campanha
Logo após a configuração das tarefas de lista nós configuramos a tarefa cron responsável por colocar um lead em uma campanha.
Lembre-se que o Mautic processa 100 eventos por execução desta tarefa e que você pode aumentar ou diminuir este número de contatos dependendo dos recursos disponíveis no seu servidor.
Veja o comando padrão para a tarefa de atualização de campanhas:
php bin/console mautic:campaigns:rebuild
Você pode aumentar o número de eventos processados por execução desta tarefa com o parâmetro –batch-limit=X, conforme abaixo:
php bin/console mautic:campaigns:update --batch-limit=200
Executando eventos de campanhas
Agora vamos para a segunda etapa que é a tarefa de execução das decisões e eventos da campanha.
Veja o comando padrão para a tarefa de execução de campanhas:
php bin/console mautic:campaigns:trigger
Você pode aumentar o número de eventos processados por execução desta tarefa com o parâmetro –batch-limit=X, conforme abaixo:
php bin/console mautic:campaigns:trigger --batch-limit=200
Cron Mautic para Envio de E-mails em Lote no Mautic
Se você utiliza o recurso de fila do Mautic para enviar os e-mails em lotes você deve configurar a tarefa abaixo:
php bin/console mautic:emails:send
Assim o mautic vai enviar os e-mails que estão na fila de acordo com as configurações feitas no próprio painel.
Cron para Envio de Relatórios Agendados
Caso você agende relatórios para serem enviados para clientes, parceiros, etc, você deverá configurar a cron responsável por gerar e enviar os relatórios agendados em segundo plano:
php bin/console mautic:reports:scheduler
Este recurso o Mautic 2.12 é incrível para que seus clientes e colaboradores tenham uma idéia de como está o seu Marketing Digital.
Cron Mautic para Envio de E-mails Broadcast Agendados
Esta tarefa é responsável por enviar os e-mails de broadcast agendados.
Estes e-mails não fazem parte de uma campanha e poderão ter uma data/hora para o início do envio.
O uso básico do comando é:
php bin/console mautic:broadcasts:send
Opcional: Este comando ainda permite o parâmetro –channel onde podemos especificar o canal que vamos utilizar e o –id onde especificamos o id de um canal específico.
Por enquanto o parâmetro –channel aceita somente o valor email. Veja o comando completo:
php bin/console mautic:broadcasts:send --channel=email --id=X
onde x é o ID do seu e-mail de brodcast.
Configurando envios de broadcast em larga escala no Mautic
O comando mautic:broadcasts:send permite ajustes finos para quem realiza envios em grande escala. Aqui na Powertic temos profissionais especializados em resolver grande parte dos problemas de reputação, monitoramento e performance das entregas e o Mautic permite realizar alguns ajustes bem interessantes:
mautic:broadcasts:send –limit=X
O parâmetro –limit=X informa quantos contatos serão adicionados ao comando em cada execução. Por padrão o Mautic inclui 100 contatos o que significa que a cada execução do comando mautic:broadcasts:send 100 contatos são processados e a próxima execução obtém mais 100 contatos e assim por diante.
mautic:broadcasts:send –batch=X
O parâmetro –batch=X informa o tamanho do lote de e-mails processados que serão enviados para o Provedor de Envios (lembre-se que cada provedor possui um limite). O Sparkpost por exemplo permite que sejam enviados 1000 e-mails a cada chamada na API enquanto via SMTP geralmente permite que sejam enviados 10 emails por lote. Lembre-se também que durante o processamento
mautic:broadcasts:send –min-contact-id=X –max-contact-id=X
Estes parâmetros permitem que você informe uma faixa de contatos para que possa rodar comandos paralelos. Desse modo você impede que e-mails repetidos sejam enviados e aumenta o fluxo de vazão de e-mails para grandes envios. Você pode ter por exemplo uma cron que envia para os contatos com ID de 1 a 50000 e outro comando paralelo que envia para 500001 até 100000.
Cron Mautic para Envio de Mensagens de Marketing
Quando um e-mail de campanha do tipo “Marketing” é acionado ou um e-mail de broadcast (e-mail de segmento) e um contato tiver uma regra de freqüência definida ou há um padrão definido nas Configurações do Mautic, o e-mail pode ser enviado para uma fila a ser processada.
As mensagens são colocadas na fila com status pendente, portanto, todas as mensagens pendentes que não atingiram o número máximo de tentativas serão processadas usando este comando.
php bin/console mautic:messages:send
É altamente recomendada a utilização deste comando com a mesma frequência de envio de mautic:broadcasts:send
Cron Mautic para Monitoramento de Bounces no Mautic
O Mautic fornece um recurso incrível de Monitoramento de Bounces que permite marcar um lead como rejeitado após um hard-bounce. Esta funcionalidade também tem uma tarefa cron exclusiva.
Para configurar a tarefa responsável pelo monitoramento de bounces utilize o comando:
php bin/console mautic:email:fetch
Este comando executa uma varredura na sua caixa de entrada monitorada para encontrar e-mails de retorno. Apesar de bastante útil ele consome muitos recursos do servidor. Recomendo usar esse comando com cautela em intervalos de tempo bem espaçados.
Cron Mautic para Importação de Contatos em segundo plano
O Mautic oferece um comando para executar a importação dos contatos em segundo plano, excelente para quem precisa importar uma grande quantidade de contatos e encontrava problemas com timeout.
Para configurar a tarefa responsável pela importação de contatos em segundo plano utilize o comando:
php bin/console mautic:import
Este comando pode demorar algum tempo para ser executado dependendo da quantidade de contatos no arquivo CSV. Em todo caso você receberá uma notificação no Dashboard do Mautic quando a importação estiver concluída.
Cron Mautic para remoção de dados antigos do Mautic
O Mautic 2.1.0 introduziu um novo comando de manutenção de dados chamado maintenance:cleanup. Este comando apaga dados de Leads anônimos com mais de 365 dias. Assim eliminamos dados inúteis da nossa base de dados e consequentemente melhoramos o desempenho da ferramenta.
Este comando remove as entradas do log, IP, notificações de usuários, histórico de visitas de páginas de leads Anônimos. Os leads que já foram identificados na sua base de dados não serão afetados.
Veja o exemplo básico do comando:
php bin/console mautic:maintenance:cleanup
Este comando retorna um output na linha de comando que informa quais dados foram deletados:
+--------------------+------------------+ | Record type | Records affected | +--------------------+------------------+ | Audit log entries | 0 | | UTM tag history | 0 | | User notifications | 0 | | Visitor page hits | 0 | | Visitors | 0 | +--------------------+------------------+
Rodando o comando com o parâmetro --dry-run
você poderá realizar um teste antes de efetivamente apagar os dados. Recomendado quando você não tem certeza do que está fazendo 😉.
php bin/console mautic:maintenance:cleanup --dry-run
O comando possui outro parâmetro onde podemos especificar o número de dias que queremos manter na nossa base de dados (por padrão o comando utiliza 365 dias).
php bin/console mautic:maintenance:cleanup --days-old=90
No exemplo acima o Mautic irá apagar todos os dados anônimos com mais de 90 dias.
Importante: Caso você utilize este comando através de uma tarefa cron, deve aplicar o parâmetro –no-interaction, caso contrário o comando sempre solicitará uma confirmação antes da execução.
Veja um exemplo do comando para utilizar no CRON:
php bin/console mautic:maintenance:cleanup --days-old=365 --no-interaction
Já conhecemos as principais tarefas CRON do Mautic, sendo assim vamos ao próximo passo que é o “dividir para conquistar”!
Configurando cron de integrações do Mautic (plugins)
O mautic possui quatro comandos para executar a sincronização de todas as integrações. Aconselho a utilização de todos estes comandos a cada 5 minutos intercalados, ou seja, não rode estes comandos ao mesmo tempo. Veja abaixo os comandos:
php bin/console mautic:integration:fetchleads php bin/console mautic:integration:pushactivity php bin/console mautic:integration:pushleadactivity php bin/console mautic:integration:synccontacts
Estes comandos funcionam com os plugins de CRM do Zoho, Hubspot, etc.
Caso você utilize diversas integrações e está encontrando problemas de performance em rodar todas elas ao mesmo tempo, você pode especificar qual integração deverá ser executada adicionando o sufixo –integration no comando.
Cron Mautic para Integração com Hubspot
Veja abaixo a cron para integração do Mautic com Hubspot:
php bin/console mautic:integration:fetchleads --integration=Hubspot php bin/console mautic:integration:pushactivity --integration=Hubspot
Cron Mautic para Integração com Salesforce
Veja abaixo a cron para integração do Mautic com Salesforce:
php bin/console mautic:integration:fetchleads --integration=Salesforce php bin/console mautic:integration:pushactivity --integration=Salesforce php bin/console mautic:integration:pushleadactivity --integration=Salesforce php bin/console mautic:integration:synccontacts --integration=Salesforce
Cron Mautic para Integração com SugarCRM
Veja abaixo a cron para integração do Mautic com Sugarcrm para sincronizar todos os leads:
php bin/console mautic:integration:fetchleads --fetch-all --integration=Sugarcrm
Cron Mautic para Integração com Pipedrive CRM
Veja abaixo os comandos para integração do Mautic com Pipedrive:
php bin/console mautic:integration:pipedrive:fetch
mautic:integration:pipedrive:push
Cron Mautic para Integração com Zoho CRM
Veja abaixo a cron para integração do Mautic com Sugarcrm para sincronizar todos os leads:
php bin/console mautic:integration:fetchleads --integration=Zoho
Cron Mautic para Integração com Dynamics CRM
Veja abaixo a cron para integração do Mautic com Sugarcrm para sincronizar todos os leads:
php app/console mautic:integration:fetchleads -i Dynamics
Configurando o cron Mautic
Agora que já conhecemos e sabemos a ordem de execução das tarefas cron do Mautic devemos criar um cronograma para que ao longo do período de 1 hora cada tarefa seja executada completamente em ordem e dando espaço para que a subsequente possa ser executada completamente também e assim evitar atropelamentos ou execuções simultâneas.
Lembre-se que uma tarefa só vai atropelar a outra se você utilizar o parâmetro –force. Caso o mautic tente iniciar uma tarefa enquanto a outra ainda está sendo executada sem o parâmetro –force a nova tarefa irá aguardar o fim da execução da tarefa anterior para ser executada.
Tudo vai depender de você executar manualmente a tarefa e ver quanto tempo demora para ela ser executada, além do número de tarefas concorrentes das outras instalações do Mautic dentro do seu servidor.
Dependendo do tamanho da sua base de leads, da quantidade de listas e campanhas da sua instalação do mautic a abordagem correta pode aumentar significativamente o desempenho da ferramenta no seu servidor.
Cenário 1: Cronograma de Execução em uma lista grande
Utilizamos esta abordagem em instalações com mais de 5 mil leads. Com isso nós desafogamos o servidor de aplicativos, o servidor de banco de dados e também o serviço responsável por enviar os e-mails (Amazon SES) já que ao longo do espaço de 1h nós realizamos diversas execuções com pouca carga.
Lembre-se que num cenário perfeito você deve processar toda a sua base de leads / listas / campanhas num espaço de 1 hora.
Veja o exemplo de uma instalação que temos com 6 mil leads onde executamos todas as tarefas cron 2 vezes por hora:
Minuto | Tarefa | Tempo Médio | Ordem |
0 | Download do IP Lockup | – | – |
1 | Atualização de Lista | 3 min | 1 |
5 | Atualização de Campanha | 3 min | 2 |
10 | Execução da Campanha | 4 min | 3 |
15 | Disparo do E-mail | 10 min | 4 |
25 | Leitura do E-mail Monitorado | 5 min | 5 |
30 | Atualização da Lista | 3 min | 1 |
35 | Atualização da Campanha | 3 min | 2 |
40 | Execução da Campanha | 4 min | 3 |
45 | Disparo do E-mail | 10 min | 4 |
50 | Leitura do E-mail Monitorado | 5 min | 5 |
55 | Download do IP Lockup | – | – |
Assim conseguimos distribuir a execução das tarefas CRON dentro do intervalo de uma hora sem sobrecarregar o servidor e com a certeza que as tarefas seguintes estão preparadas para serem executadas sem atropelamentos.
Exemplo de crontab:
Cenário 2: Cronograma de Execução em uma Lista pequena
Utilizamos esta abordagem em instalações com menos de 5 mil leads. Assim podemos ter uma execução menos espaçada já que estas demoram menos para serem concluídas.
A regra geral para um bom desempenho das tarefas cron é evitar que elas sejam executadas ao mesmo tempo.
Em listas menores nós utilizamos o seguinte cronograma:
Minuto | Tarefa | Tempo Médio | Ordem |
0 | Download do IP Lockup | – | – |
1,10,20,30,40,50 | Atualização de Lista | 1 min | 1 |
2,12,22,32,42,52 | Atualização de Campanha | 2 min | 2 |
4,14,24,34,44,54 | Execução da Campanha | 2 min | 3 |
7,17,27,37,47,57 | Disparo do E-mail | 3 min | 4 |
9,19,29,39,49,59 | Leitura do E-mail Monitorado | 2 min | 5 |
Esse ficou um pouco complicado, vamos lá:
O Mautic recomenda não executar tarefas cron ao mesmo tempo. Sendo assim nós criamos “espaços” de tempo para que uma tarefa seja executada e aí então rodamos a próxima tarefa. Como cada tarefa demora em média 2 minutos para ser executada e temos 5 tarefas diferentes cada tarefa será executada a cada 10 minutos.
Considerações finais
Semanalmente nós rodamos “na mão” cada tarefa cron de cada instalação que nós gerenciamos para ver o log das execuções. Muitas vezes o mautic “trava” uma execução em determinado ponto e a correção é incluir a flag –force ao comando. Veja:
php bin/console mautic:segments:update --force
php bin/console mautic:campaigns:update --force
php bin/console mautic:campaigns:trigger --force
Deixe seu comentário, dúvida ou sugestão. Em breve vou escrever mais artigos sobre configuração e gerenciamento do servidor.
Até a próxima!