Um Guia Completo com todas as opções de configuração das Cron Mautic para você configurar e otimizar sua instalação em uma VPS e deixar o Cronjob do Mautic em dia.

Cron Mautic: Tudo sobre a configuração do Cronjob do Mautic

Cron Mautic: Tudo sobre a configuração do Cronjob do Mautic
4.3 (85%) 4 votes

Um Guia Completo com todas as opções de configuração das Cron Mautic para você configurar e otimizar sua instalação em uma VPS.

Ordem de execução da Cron Mautic

Apesar do Mautic normalmente não alocar muitos recursos do servidor é imprescindível utilizar um bom planejamento sobre quando executar determinadas tarefas cron job do mautic a fim de evitar travamento e conflitos entre execuções de tarefas cron 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. 😉

Há muitos anos que venho trabalhando exclusivamente com sistemas Open Source principalmente pela redução óbvia de custos de aquisição de ferramentas e das inúmeras vantagens que este ambiente pode nos proporcionar como a análise, alteração e até mesmo a correção de bugs no código-fonte.

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

Conheça as principais Cron Mautic

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, abaixo eu listo os principais comandos do Mautic que podem ser utilizados como cron Mautic.

Cron para atualização de Listas/Segmentos no Mautic

Este é a primeira cron mautic que configuramos pois é a responsável por atualizar as nossas listas inteligentes  / segmentos que possuem filtros.

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 app/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 app/console mautic:segments:update --batch-limit=500

Cron job para Execução de Campanhas

Perceba que o Mautic separa esta funcionalidade em duas tarefas cron: uma responsável por adicionar os leads nas campanhas mautic:campaigns:update e outra responsável por executar as ações necessárias com estes leads já dentro da campanha mautic:campaigns:trigger.

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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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 app/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:

mautic:integration:fetchleads
mautic:integration:pushactivity
mautic:integration:pushleadactivity
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:

mautic:integration:fetchleads --integration=Hubspot
mautic:integration:pushactivity --integration=Hubspot

Cron Mautic para Integração com Salesforce

Veja abaixo a cron para integração do Mautic com Salesforce:

mautic:integration:fetchleads --integration=Salesforce
mautic:integration:pushactivity --integration=Salesforce
mautic:integration:pushleadactivity --integration=Salesforce
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:

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:

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:

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:

MinutoTarefaTempo MédioOrdem
0Download do IP Lockup – –
1Atualização de Lista3 min1
5Atualização de Campanha3 min2
10Execução da Campanha4 min3
15Disparo do E-mail10 min4
25Leitura do E-mail Monitorado5 min5
30Atualização da Lista3 min1
35Atualização da Campanha3 min2
40Execução da Campanha4 min3
45Disparo do E-mail10 min4
50Leitura do E-mail Monitorado5 min5
55Download 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:

MinutoTarefaTempo MédioOrdem
0Download do IP Lockup – –
1,10,20,30,40,50Atualização de Lista1 min1
2,12,22,32,42,52Atualização de Campanha2 min2
4,14,24,34,44,54Execução da Campanha2 min3
7,17,27,37,47,57Disparo do E-mail3 min4
9,19,29,39,49,59Leitura do E-mail Monitorado2 min5

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:

mautic:segments:update --force
mautic:campaigns:update --force
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!

Artigos relacionados