Ajuda > Sem categoria > Como utilizar Hooks

Como utilizar Hooks

Um Hook (gancho) permite que você “pendure” o seu próprio código em momentos específicos dessa engrenagem sem precisar alterar os arquivos principais do sistema. É como se você dissesse para o sistema: “Quando o cliente se cadastrar (evento), envie um e-mail de boas vindas (sua ação).
Existem dois tipos principais:

  • onBefore… (Antes de): Executa antes da ação ser concluída. Ótimo para validar dados ou impedir que algo aconteça.
  • onAfter… (Depois de): Executa logo após a ação terminar. Perfeito para enviar notificações, logs ou integrar com APIs externas.

Como usar um Hook em 3 passos simples
Para fazer isso no sistema, você só precisa seguir este passo a passo:

  1. Crie o lugar onde o código vai ficar
    Abra a pasta do seu sistema, procure por uma pasta chamada hooks e, dentro dela, crie um arquivo de texto chamado scriptTest.php. É dentro dele que você vai escrever as suas regras.
  2. Escreva o comando para “ficar de olho” no evento
    Dentro desse arquivo, você vai usar uma função chamada add_hook. Ela serve para avisar o sistema o que deve ser feito. O formato padrão é este aqui:

PHP
add_hook(‘NOME_DO_EVENTO’, 1, function (array $vars): void { // escreva sua lógica aqui });

  1. Entenda o que preencher (As Regras Rápidas)
    Para esse comando funcionar, você precisa preencher três informações importantes:

NOME_DO_EVENTO‘: É o momento exato em que você quer analisar. Você precisa digitar o nome exatamente como o sistema conhece.

Exemplo: Se você quer fazer algo logo após os dados de um cliente serem atualizados pelo painel de administração, o sistema chama esse momento de onAfterAdminClientUpdate.

O número 1 (Prioridade): Se você criar várias ações para o mesmo momento, o sistema precisa saber quem vai primeiro. Quanto menor o número, mais rápido ele é executado. Um hook com prioridade 1 roda antes de um com prioridade 10.

A caixinha $vars: Quando o evento acontece, o sistema te joga uma caixinha cheia de informações úteis sobre aquele momento (chamada de array).

Exemplo: No evento de atualizar o cliente, dentro de $vars pode vir o nome do cliente, o e-mail dele, etc. Se o evento for algo simples que não precisa de dados, essa caixinha vem vazia ([]).

onAfterAdminActivateExtension
Executa depois de uma extensão ser ativada.
Parâmetros:
id (int): ID do registro da extensão (tabela extension)
Exemplo:
add_hook(‘onAfterAdminActivateExtension’, 1, function (array $vars): void {
error_log(‘Extensão ativada: ‘ . json_encode($vars));
});

onAfterAdminBatchSuspendOrders
Executa depois da rotina em lote que suspende pedidos expirados.
Parâmetros:
(nenhum): este evento é disparado sem parâmetros
Exemplo:
add_hook(‘onAfterAdminBatchSuspendOrders’, 1, function (array $vars): void {
// $vars normalmente vem como [] (sem params)
error_log(‘Batch suspend finalizado’);
});

onAfterAdminClientDelete
Executa depois de um cliente ser removido.
Parâmetros:
id (int): ID do cliente removido
Exemplo:
add_hook(‘onAfterAdminClientDelete’, 1, function (array $vars): void {
error_log(‘Cliente removido: ‘ . json_encode($vars));
});

onAfterAdminClientPasswordChange
Executa depois de um admin alterar a senha do cliente.
Parâmetros
id (int): ID do cliente
password (string): nova senha (texto puro) — cuidado ao registrar isso
em log
Exemplo:
add_hook(‘onAfterAdminClientPasswordChange’, 1, function (array $vars): void {
// Evita logar $vars[‘password’] em produção.
error_log(‘Senha alterada para cliente id=’ . ($vars[‘id’] ?? ‘n/a’));
});

onAfterAdminClientUpdate
Executa depois de atualizar os dados do cliente.
Parâmetros:
id (int): ID do cliente atualizado
Exemplo:
add_hook(‘onAfterAdminClientUpdate’, 1, function (array $vars): void {
error_log(‘Cliente atualizado: ‘ . json_encode($vars));
});

onAfterAdminCloseTicket
Executa depois que um admin encerra um ticket.
Parâmetros:
id (int): ID do ticket encerrado
Exemplo:
add_hook(‘onAfterAdminCloseTicket’, 1, function (array $vars): void {
error_log(‘Ticket encerrado: ‘ . json_encode($vars));
});

onAfterAdminCreateClient
Executa depois que um admin cria um cliente.
Parâmetros:
id (int): ID do cliente criado
password (string): senha inicial (texto puro) — cuidado ao registrar isso
em log
Exemplo
add_hook(‘onAfterAdminCreateClient’, 1, function (array $vars): void {
// Evite logar $vars[‘password’] em produção.
error_log(‘Cliente criado id=’ . ($vars[‘id’] ?? ‘n/a’));
});

onAfterAdminCronRun
Executa depois que o cron termina de rodar.
Parâmetros:
(nenhum): este evento é disparado sem params
Exemplo:
add_hook(‘onAfterAdminCronRun’, 1, function (array $vars): void {
error_log(‘Cron finalizado’);
});

onAfterAdminDeactivateExtension
Executa depois que uma extensão é desativada.
Parâmetros:
id (string): ID da extensão (ex.: hook, client, huraga, etc.)
type (string): tipo da extensão (ex.: mod, theme, gateway, …)

Exemplo:
add_hook(‘onAfterAdminDeactivateExtension’, 1, function (array $vars): void {
error_log(‘Extensão desativada: ‘ . json_encode($vars));
});

onAfterAdminDeleteCurrency
Executa depois que uma moeda/câmbio é removida.
Parâmetros:
code (string): código da moeda (ex.: BRL, USD)
Exemplo
add_hook(‘onAfterAdminDeleteCurrency’, 1, function (array $vars): void {
error_log(‘Moeda removida: ‘ . json_encode($vars));
});

onAfterAdminExtensionConfigSave
Executa depois que um admin salva a configuração de uma extensão.
Parâmetros
ext (string): nome/identificador da extensão (ex.: mod_cron, mod_hook,
etc.)
public (array): valores públicos (quando enviados)
private (array): valores privados (quando enviados)
Observação: este hook recebe o mesmo array $data usado no save
da configuração (pode conter outras chaves).
Exemplo
add_hook(‘onAfterAdminExtensionConfigSave’, 1, function (array $vars): void {
error_log(‘Config da extensão salva: ‘ . json_encode([‘ext’ => $vars[‘ext’] ?? null]));
});

onAfterAdminGenerateRenewalInvoice
Executa depois que o sistema gera uma fatura de renovação para um pedido.
Parâmetros:
order_id (int): ID do pedido (client_order)
id (int): ID da fatura gerada (invoice)
Exemplo
add_hook(‘onAfterAdminGenerateRenewalInvoice’, 1, function (array $vars): void {
error_log(‘Renovação gerada: ‘ . json_encode($vars));
});

onAfterAdminInstallExtension
Executa depois que uma extensão é instalada (download + extração).
Parâmetros:
id (string): ID da extensão
type (string): tipo da extensão (ex.: mod, theme, gateway, …)
Exemplo:
add_hook(‘onAfterAdminInstallExtension’, 1, function (array $vars): void {
error_log(‘Extensão instalada: ‘ . json_encode($vars));
});

onAfterAdminInvoiceApprove
Executa depois que uma fatura é aprovada.
Parâmetros:
id (int): ID da fatura aprovada
Exemplo:
add_hook(‘onAfterAdminInvoiceApprove’, 1, function (array $vars): void {
error_log(‘Fatura aprovada: ‘ . json_encode($vars));
});

onAfterAdminInvoiceDelete
Executa depois que uma fatura é removida por um admin.
Parâmetros:
id (int): ID da fatura removida
Exemplo:
add_hook(‘onAfterAdminInvoiceDelete’, 1, function (array $vars): void {
error_log(‘Fatura removida: ‘ . json_encode($vars));
});


onAfterAdminInvoiceRefund
Executa depois que um admin estorna uma fatura.
Parâmetros:
id (int): ID da fatura estornada
Exemplo:
add_hook(‘onAfterAdminInvoiceRefund’, 1, function (array $vars): void {
error_log(‘Fatura estornada: ‘ . json_encode($vars));
});


onAfterAdminInvoiceReminderSent
Executa depois que um lembrete de pagamento de fatura é enviado.
Parâmetros
id (int): ID da fatura
Exemplo:
add_hook(‘onAfterAdminInvoiceReminderSent’, 1, function (array $vars): void {
error_log(‘Lembrete enviado: ‘ . json_encode($vars));
});


onAfterAdminInvoiceUpdate
Executa depois que um admin atualiza uma fatura.
Parâmetros:
id (int): ID da fatura atualizada
Exemplo:
add_hook(‘onAfterAdminInvoiceUpdate’, 1, function (array $vars): void {
error_log(‘Fatura atualizada: ‘ . json_encode($vars));
});


onAfterAdminLogin
Executa depois que um admin faz login.
Parâmetros:
id (int): ID do admin
ip (string): IP do login
Exemplo:
add_hook(‘onAfterAdminLogin’, 1, function (array $vars): void {
error_log(‘Admin logou: ‘ . json_encode($vars));
});


onAfterAdminNotificationAdd
Executa depois que uma notificação interna é criada.
Parâmetros:
id (int): ID do registro criado (extension_meta)
Exemplo:
add_hook(‘onAfterAdminNotificationAdd’, 1, function (array $vars): void {
error_log(‘Notificação criada: ‘ . json_encode($vars));
});


onAfterAdminOpenTicket
Executa depois que um admin abre um novo ticket.
Parâmetros:
id (int): ID do ticket criado
Exemplo:
add_hook(‘onAfterAdminOpenTicket’, 1, function (array $vars): void {
error_log(‘Ticket aberto: ‘ . json_encode($vars));
});


onAfterAdminOrderActivate
Executa depois que um pedido é ativado.
Parâmetros:
id (int): ID do pedido (ou do addon, quando ativando addons)
Observação: em algumas ativações o evento pode incluir chaves extras além de id, dependendo do serviço.
Exemplo:
add_hook(‘onAfterAdminOrderActivate’, 1, function (array $vars): void {
error_log(‘Pedido ativado: ‘ . json_encode($vars));
});


onAfterAdminOrderCancel
Executa depois que um pedido é cancelado.
Parâmetros:
id (int): ID do pedido cancelado
Exemplo:
add_hook(‘onAfterAdminOrderCancel’, 1, function (array $vars): void {
error_log(‘Pedido cancelado: ‘ . json_encode($vars));
});


onAfterAdminOrderCreate
Executa depois que um pedido é criado por um admin.
Parâmetros
id (int): ID do pedido criado
Exemplo:
add_hook(‘onAfterAdminOrderCreate’, 1, function (array $vars): void {
error_log(‘Pedido criado: ‘ . json_encode($vars));
});


onAfterAdminOrderDelete
Executa depois que um pedido é excluído por um admin.
Parâmetros:
id (int): ID do pedido excluído
Exemplo:
add_hook(‘onAfterAdminOrderDelete’, 1, function (array $vars): void {
error_log(‘Pedido excluído: ‘ . json_encode($vars));
});

onAfterAdminOrderRenew
Executa depois que um pedido é renovado.
Parâmetros
• id (int): ID do pedido renovado
Exemplo
add_hook(‘onAfterAdminOrderRenew’, 1, function (array $vars): void {
error_log(‘Pedido renovado: ‘ . json_encode($vars));
});


onAfterAdminOrderSuspend
Executa depois que um pedido é suspenso.
Parâmetros
• id (int): ID do pedido suspenso
Exemplo
add_hook(‘onAfterAdminOrderSuspend’, 1, function (array $vars): void {
error_log(‘Pedido suspenso: ‘ . json_encode($vars));
});


onAfterAdminOrderUncancel
Executa depois que o cancelamento de um pedido é desfeito (pedido reativado).
Parâmetros
• id (int): ID do pedido
Exemplo
add_hook(‘onAfterAdminOrderUncancel’, 1, function (array $vars): void {
error_log(‘Cancelamento desfeito: ‘ . json_encode($vars));
});


onAfterAdminOrderUnsuspend
Executa depois que um pedido é reativado (suspensão removida).
Parâmetros
• id (int): ID do pedido reativado

Exemplo
add_hook(‘onAfterAdminOrderUnsuspend’, 1, function (array $vars): void {
error_log(‘Pedido reativado (unsuspend): ‘ . json_encode($vars));
});
onAfterAdminOrderUpdate
Executa depois que um admin atualiza um pedido.
Parâmetros
• id (int): ID do pedido atualizado
Exemplo
add_hook(‘onAfterAdminOrderUpdate’, 1, function (array $vars): void {
error_log(‘Pedido atualizado: ‘ . json_encode($vars));
});


onAfterAdminPublicTicketClose
Executa depois que um admin encerra um ticket público (SupportPTicket).
Parâmetros
• id (int): ID do ticket público
Exemplo
add_hook(‘onAfterAdminPublicTicketClose’, 1, function (array $vars): void {
error_log(‘Ticket público encerrado: ‘ . json_encode($vars));
});


onAfterAdminPublicTicketOpen
Executa depois que um admin abre um ticket público (SupportPTicket) para
um visitante/contacto.
Parâmetros
• id (int): ID do ticket público criado
Exemplo
add_hook(‘onAfterAdminPublicTicketOpen’, 1, function (array $vars): void {
error_log(‘Ticket público aberto: ‘ . json_encode($vars));
});


onAfterAdminPublicTicketReply
Executa depois que um admin responde a um ticket público.
Parâmetros
• id (int): ID do ticket público (SupportPTicket)
Exemplo
add_hook(‘onAfterAdminPublicTicketReply’, 1, function (array $vars): void {
error_log(‘Resposta em ticket público: ‘ . json_encode($vars));
});


onAfterAdminReplyTicket
Executa depois que um admin responde a um ticket normal de suporte
(SupportTicket).
Parâmetros
• id (int): ID do ticket (SupportTicket)
Exemplo
add_hook(‘onAfterAdminReplyTicket’, 1, function (array $vars): void {
error_log(‘Ticket respondido pelo admin: ‘ . json_encode($vars));
});


onAfterAdminSettingsUpdate
Executa depois que as configurações gerais do sistema são salvas (painel
admin).
Parâmetros
• (nenhum): este evento é disparado sem params
Exemplo
add_hook(‘onAfterAdminSettingsUpdate’, 1, function (array $vars): void {
error_log(‘Configurações atualizadas’);
});


onAfterAdminStaffApiKeyChange
Executa depois que a chave de API (token) de um funcionário/admin é
gerada novamente.
Parâmetros
• id (int): ID do funcionário (Admin) cuja API key foi alterada
Observação: o token em si não é enviado no evento; apenas o id.
Exemplo
add_hook(‘onAfterAdminStaffApiKeyChange’, 1, function (array $vars): void {
error_log(‘API key alterada para staff id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterAdminStaffCreate
Executa depois que um novo funcionário (staff) é criado.
Parâmetros
• id (int): ID do novo registro (Admin)
Exemplo
add_hook(‘onAfterAdminStaffCreate’, 1, function (array $vars): void {
error_log(‘Staff criado: ‘ . json_encode($vars));
});


onAfterAdminStaffDelete
Executa depois que um funcionário é removido.
Parâmetros
• id (int): ID do funcionário que foi excluído
Exemplo
add_hook(‘onAfterAdminStaffDelete’, 1, function (array $vars): void {
error_log(‘Staff removido: ‘ . json_encode($vars));
});


onAfterAdminStaffPasswordChange
Executa depois que a senha de um funcionário é alterada (fluxo de staff no
módulo Staff).
Parâmetros
• id (int): ID do funcionário
Observação: a senha nova não é enviada neste evento (só o id).
Exemplo
add_hook(‘onAfterAdminStaffPasswordChange’, 1, function (array $vars): void {
error_log(‘Senha de staff alterada id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterAdminStaffProfilePasswordChange
Executa depois que o usuário logado altera a própria senha via perfil (módulo, Profile ou método legado staff_profile_change_password).
Parâmetros
• id (int): ID do funcionário (Admin)
Observação: o evento onAfter… envia só id. A senha nova
aparece apenas no onBeforeAdminStaffProfilePasswordChange
no fluxo do Profile\Service (evite logar isso em produção).
Exemplo
add_hook(‘onAfterAdminStaffProfilePasswordChange’, 1, function (array $vars): void {
error_log(‘Senha do perfil alterada id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterAdminStaffProfileUpdate
Executa depois que o usuário logado atualiza dados do próprio perfil (email,
nome, assinatura).
Parâmetros
• id (int): ID do funcionário (Admin)
Observação: o evento onAfter… envia só id. Os campos enviados
pelo formulário ficam no onBeforeAdminStaffProfileUpdate.
Exemplo
add_hook(‘onAfterAdminStaffProfileUpdate’, 1, function (array $vars): void {
error_log(‘Perfil atualizado id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterAdminStaffUpdate
Executa depois que um admin atualiza os dados de outro funcionário (painel de gestão de staff).
Parâmetros
• id (int): ID do funcionário alterado
Exemplo
add_hook(‘onAfterAdminStaffUpdate’, 1, function (array $vars): void {
error_log(‘Staff atualizado pelo admin: ‘ . json_encode($vars));
});


onAfterAdminSubscriptionCreate
Executa depois que uma inscrição/assinatura (Subscription) é criada via
painel/API de faturação.
Parâmetros
• id (int): ID do registro de inscrição (subscription)
Exemplo
add_hook(‘onAfterAdminSubscriptionCreate’, 1, function (array $vars): void {
error_log(‘Assinatura criada: ‘ . json_encode($vars));
});


onAfterAdminSubscriptionDelete
Executa depois que uma inscrição/assinatura (Subscription) é removida.
Parâmetros
• id (int): ID da assinatura excluída
Exemplo
add_hook(‘onAfterAdminSubscriptionDelete’, 1, function (array $vars): void {
error_log(‘Assinatura removida: ‘ . json_encode($vars));
});


onAfterAdminTransactionCreate
Executa depois que uma transação de pagamento (Transaction) é
criada/registrada (ex.: entrada de dados do gateway / IPN).
Parâmetros
• id (int): ID da nova transação
Exemplo
add_hook(‘onAfterAdminTransactionCreate’, 1, function (array $vars): void {
error_log(‘Transação criada: ‘ . json_encode($vars));
});


onAfterAdminTransactionProcess
Executa depois que uma transação foi processada com sucesso no fluxo
preProcessTransaction (após o processamento pelo gateway/modulo).
Parâmetros
• id (int): ID da transação processada
Exemplo
add_hook(‘onAfterAdminTransactionProcess’, 1, function (array $vars): void {
error_log(‘Transação processada: ‘ . json_encode($vars));
});


onAfterAdminTransactionUpdate
Executa depois que os dados de uma transação são atualizados (admin).
Parâmetros
• id (int): ID da transação atualizada
Exemplo
add_hook(‘onAfterAdminTransactionUpdate’, 1, function (array $vars): void {
error_log(‘Transação atualizada: ‘ . json_encode($vars));
});


onAfterAdminUninstallExtension
Executa depois que uma extensão é desinstalada (removida do sistema pelo
admin).
Parâmetros
• id (int): ID do registro na tabela extension
Exemplo
add_hook(‘onAfterAdminUninstallExtension’, 1, function (array $vars): void {
error_log(‘Extensão desinstalada: ‘ . json_encode($vars));
});


onAfterClientCalledExampleModule
Evento de exemplo, disparado no método Example\Api\Client::get_info
quando o cliente chama a API de exemplo do módulo Example.
Parâmetros
• key (string): exemplo fixo ‘value’ (apenas para demonstração no código
atual)
Exemplo
add_hook(‘onAfterClientCalledExampleModule’, 1, function (array $vars): void {
error_log(‘Exemplo disparado: ‘ . json_encode($vars));
});


onAfterClientChangeNameservers
Executa depois que um cliente altera os nameservers do domínio (servicedomain).
Parâmetros
O mesmo $data recebido na API servicedomain.update_nameservers, em
geral:
• order_id (int): ID do pedido do domínio
• ns1 / ns2 (string): hosts dos nameservers
• ns3 / ns4 (string, opcionais): nameservers extras
Exemplo
add_hook(‘onAfterClientChangeNameservers’, 1, function (array $vars): void {
error_log(‘NS alterados: ‘ . json_encode($vars));
});


onAfterClientCloseTicket
Executa depois que um cliente encerra um ticket de suporte (SupportTicket).
Parâmetros
• id (int): ID do ticket
Exemplo
add_hook(‘onAfterClientCloseTicket’, 1, function (array $vars): void {
error_log(‘Cliente encerrou ticket: ‘ . json_encode($vars));
});


onAfterClientLogin
Executa depois que um cliente faz login com sucesso (Guest::login).
Parâmetros
• id (int): ID do cliente
• ip (string): IP do login
Exemplo
add_hook(‘onAfterClientLogin’, 1, function (array $vars): void {
error_log(‘Cliente logou: ‘ . json_encode($vars));
});


onAfterClientOpenTicket
Executa depois que um cliente abre um novo ticket de suporte.
Parâmetros
• id (int): ID do ticket criado
Observação: dados enviados pelo formulário (assunto, conteúdo,
etc.) ficam no onBeforeClientOpenTicket.
Exemplo
add_hook(‘onAfterClientOpenTicket’, 1, function (array $vars): void {
error_log(‘Cliente abriu ticket: ‘ . json_encode($vars));
});


onAfterClientOrderCreate
Executa depois que um pedido é criado no checkout do carrinho (cliente
área).
Parâmetros
• id (int): ID do pedido principal gerado no checkout
• client_id (int): ID do cliente
• ip (string): IP na hora do checkout
Exemplo
add_hook(‘onAfterClientOrderCreate’, 1, function (array $vars): void {
error_log(‘Pedido do cliente criado: ‘ . json_encode($vars));
});


onAfterClientProfilePasswordChange
Executa depois que o cliente logado altera a senha no perfil (módulo Profile
ou API legada client.change_password).
Parâmetros
• id (int): ID do cliente
Observação: no onAfter… a senha nova não é enviada (apenas
id). No onBeforeClientProfilePasswordChange podem existir dados sensíveis como password.
Exemplo
add_hook(‘onAfterClientProfilePasswordChange’, 1, function (array $vars): void {
error_log(‘Senha do cliente alterada id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterClientProfileUpdate
Executa depois que o cliente logado atualiza o perfil na área do cliente.
Parâmetros
• id (int): ID do cliente
Observação: campos alterados costumam estar no onBeforeClientProfileUpdate
(Profile\Service ou fluxo antigo em Client\Api\Client).
Exemplo
add_hook(‘onAfterClientProfileUpdate’, 1, function (array $vars): void {
error_log(‘Perfil do cliente atualizado id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterClientReplyTicket
Executa depois que um cliente responde a um ticket de suporte normal
(SupportTicket).
Parâmetros
• id (int): ID do ticket
18
Exemplo
add_hook(‘onAfterClientReplyTicket’, 1, function (array $vars): void {
error_log(‘Cliente respondeu ticket: ‘ . json_encode($vars));
});


onAfterClientSignUp
Executa depois que uma conta de cliente é criada via cadastro público
(guestCreateClient).
Parâmetros
• id (int): ID do novo cliente
• password (string): senha definida no cadastro (texto puro) — evite registrar isso em log em produção
Exemplo
add_hook(‘onAfterClientSignUp’, 1, function (array $vars): void {
error_log(‘Novo cadastro id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onAfterGuestPublicTicketClose
Executa depois que um visitante (guest) encerra um ticket público
(SupportPTicket).
Parâmetros
• id (int): ID do ticket público
Exemplo
add_hook(‘onAfterGuestPublicTicketClose’, 1, function (array $vars): void {
error_log(‘Guest fechou ticket público: ‘ . json_encode($vars));
});


onAfterGuestPublicTicketOpen
Executa depois que um visitante abre um ticket público (formulário público
de suporte).
Parâmetros
• id (int): ID do ticket público criado
Observação: nome, email e mensagem iniciais ficam no
onBeforeGuestPublicTicketOpen.
Exemplo
add_hook(‘onAfterGuestPublicTicketOpen’, 1, function (array $vars): void {
error_log(‘Ticket público aberto por guest: ‘ . json_encode($vars));
});


onAfterGuestPublicTicketReply
Executa depois que um visitante envia uma nova mensagem em um ticket
público.
Parâmetros
• id (int): ID do ticket público (SupportPTicket)
Exemplo
add_hook(‘onAfterGuestPublicTicketReply’, 1, function (array $vars): void {
error_log(‘Guest respondeu ticket público: ‘ . json_encode($vars));
});


onAfterProductAddedToCart
Executa depois que um produto (e addons associados ao fluxo) foi adicionado
ao carrinho.
Parâmetros
É o mesmo array montado antes do fire como $event_params:
• cart_id: ID do carrinho
• product_id: ID do produto principal
• Demais chaves vindas dos dados enviados na adição ($data), conforme
formulário/checkout (ex.: period, quantity, campos personalizados,
domain, etc.)
Observação: o mesmo conjunto-base é utilizado antes em
onBeforeProductAddedToCart.
Exemplo
add_hook(‘onAfterProductAddedToCart’, 1, function (array $vars): void {
error_log(‘Produto ao carrinho: cart=’ . ($vars[‘cart_id’] ?? ”) . ‘ product=’ . ($vars});


onBeforeAdminActivateExtension
Executa antes de uma extensão ser ativada.
Parâmetros
• id (int): ID do registro da extensão na tabela extension
Exemplo
add_hook(‘onBeforeAdminActivateExtension’, 1, function (array $vars): void {
error_log(‘Antes de ativar extensão: ‘ . json_encode($vars));
});


onBeforeAdminBatchSuspendOrders
Executa antes da rotina em lote que suspende pedidos expirados.
Parâmetros
• (nenhum): disparado sem params
Exemplo
add_hook(‘onBeforeAdminBatchSuspendOrders’, 1, function (array $vars): void {
error_log(‘Antes do batch suspend’);
});


onBeforeAdminClientDelete
Executa antes de um admin remover um cliente.
Parâmetros
• id (int): ID do cliente que será removido
Exemplo
add_hook(‘onBeforeAdminClientDelete’, 1, function (array $vars): void {
error_log(‘Antes de apagar cliente: ‘ . json_encode($vars));
});


onBeforeAdminClientPasswordChange
Executa antes de um admin alterar a senha do cliente no painel.
Parâmetros
O objeto $data da API, em geral:
• id (int): ID do cliente
• password (string): nova senha
• password_confirm (string): confirmação
Observação: contém texto de senha em claro — evite registrar em
logs em produção.
Exemplo
add_hook(‘onBeforeAdminClientPasswordChange’, 1, function (array $vars): void {
error_log(‘Antes de trocar senha do cliente id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminClientUpdate
Executa antes de persistir a atualização do perfil do cliente pelo admin.
Parâmetros
O objeto $data da API admin/client/update, em geral:
• id (int): ID do cliente
• Demais campos opcionais enviados no formulário/API (ex.: email,
first_name, status, endereço, group_id, custom_, etc.), conforme a documentação do método Observação: o onAfterAdminClientUpdate envia só id; os dados do formulário ficam neste onBefore…. Exemplo add_hook(‘onBeforeAdminClientUpdate’, 1, function (array $vars): void { error_log(‘Antes de atualizar cliente id=’ . ($vars[‘id’] ?? ‘n/a’)); }); onBeforeAdminCreateClient Executa antes de criar o cliente pelo admin (antes de gravar no banco). Parâmetros O objeto $data passado para a criação, em geral os campos do cadastro admin (ex.: email, password, nome, endereço, currency, custom_, etc.).
Observação: pode incluir senha em texto claro — evite registrar
em logs em produção. Depois da criação, onAfterAdminCreateClient
envia id e password.
Exemplo
add_hook(‘onBeforeAdminCreateClient’, 1, function (array $vars): void {
error_log(‘Antes de criar cliente email=’ . ($vars[‘email’] ?? ‘n/a’));
});

onBeforeAdminCronRun
Executa antes da sequência principal de jobs do cron administrativo.
Parâmetros
• (nenhum): disparado sem params
Exemplo
add_hook(‘onBeforeAdminCronRun’, 1, function (array $vars): void {
error_log(‘Antes do cron admin’);
});


onBeforeAdminDeactivateExtension
Executa antes de desativar uma extensão.
Parâmetros
• id (int): ID do registro da extensão na tabela extension
Observação: diferente do onAfterAdminDeactivateExtension, que
envia id (string, identificador da extensão) e type.
Exemplo
add_hook(‘onBeforeAdminDeactivateExtension’, 1, function (array $vars): void {
error_log(‘Antes de desativar extensão (registro): ‘ . json_encode($vars));
});


onBeforeAdminDeleteCurrency
Executa antes de remover uma moeda/câmbio.
Parâmetros
• code (string): código da moeda que será removida (ex.: BRL, USD)
Exemplo
add_hook(‘onBeforeAdminDeleteCurrency’, 1, function (array $vars): void {
error_log(‘Antes de remover moeda: ‘ . json_encode($vars));
});


onBeforeAdminExtensionConfigSave
Executa antes de salvar a configuração de uma extensão.
Parâmetros
O mesmo array $data usado para salvar a configuração, em geral:
• ext (string): nome/identificador da extensão (ex.: mod_cron, mod_hook,
etc.)
• public (array, opcional): valores públicos (quando enviados)
• private (array, opcional): valores privados (quando enviados)
Observação: este hook recebe o $data completo que será persistido na extension_meta (pode conter outras chaves além de
public/private).
Exemplo
add_hook(‘onBeforeAdminExtensionConfigSave’, 1, function (array $vars): void {
error_log(‘Antes de salvar config: ‘ . json_encode([‘ext’ => $vars[‘ext’] ?? null]));
});


onBeforeAdminGenerateRenewalInvoice
Executa antes de gerar a fatura de renovação para um pedido.
Parâmetros
• order_id (int): ID do pedido (client_order)
Exemplo
add_hook(‘onBeforeAdminGenerateRenewalInvoice’, 1, function (array $vars): void {
error_log(‘Antes de gerar renovação: ‘ . json_encode($vars));
});


onBeforeAdminInstallExtension
Executa antes de instalar uma extensão (download + extração).
Parâmetros
• id (string): ID da extensão
• type (string): tipo da extensão (ex.: mod, theme, gateway, …)
Exemplo
add_hook(‘onBeforeAdminInstallExtension’, 1, function (array $vars): void {
error_log(‘Antes de instalar extensão: ‘ . json_encode($vars));
});


onBeforeAdminInvoiceApprove
Executa antes de aprovar uma fatura.
Parâmetros
• id (int): ID da fatura
Exemplo
add_hook(‘onBeforeAdminInvoiceApprove’, 1, function (array $vars): void {
error_log(‘Antes de aprovar fatura: ‘ . json_encode($vars));
});


onBeforeAdminInvoiceDelete
Executa antes de um admin remover uma fatura.
Parâmetros
• id (int): ID da fatura
Exemplo
add_hook(‘onBeforeAdminInvoiceDelete’, 1, function (array $vars): void {
error_log(‘Antes de remover fatura: ‘ . json_encode($vars));
});


onBeforeAdminInvoiceRefund
Executa antes de estornar/refund uma fatura.
Parâmetros
• id (int): ID da fatura
Exemplo
add_hook(‘onBeforeAdminInvoiceRefund’, 1, function (array $vars): void {
error_log(‘Antes de estornar fatura: ‘ . json_encode($vars));
});


onBeforeAdminInvoiceSendReminder
Executa antes de enviar um lembrete de pagamento para uma fatura.
Parâmetros
• id (int): ID da fatura
25
Exemplo
add_hook(‘onBeforeAdminInvoiceSendReminder’, 1, function (array $vars): void {
error_log(‘Antes de enviar lembrete: ‘ . json_encode($vars));
});


onBeforeAdminInvoiceSendReminders
Executa antes de iniciar o envio em lote dos lembretes de pagamento das faturas
atrasadas.
Parâmetros
• (nenhum): este evento é disparado sem params
Exemplo
add_hook(‘onBeforeAdminInvoiceSendReminders’, 1, function (array $vars): void {
error_log(‘Antes do envio em lote de lembretes’);
});


onBeforeAdminInvoiceUpdate
Executa antes de atualizar os dados de uma fatura (admin).
Parâmetros
O objeto $data enviado no update da fatura via API do admin, em geral (depende do formulário):
• id (int, opcional): ID da fatura (quando enviado)
• Campos opcionais como gateway_id, text_1, text_2, seller_, buyer_, paid_at, due_at, serie, nr, status, taxrate, taxname,
approved, notes, new_item, items, etc.
Observação: o evento recebe o array completo params antes do processamento; então podem existir outras chaves além das listadas
acima.
Exemplo
add_hook(‘onBeforeAdminInvoiceUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar fatura: ‘ . json_encode($vars));
});


onBeforeAdminLogin
Executa antes do admin efetuar login.
Parâmetros
O array $event_params montado no fluxo de login, em geral:
• email (string): email informado
• password (string): senha em texto puro (texto digitado) — evite registrar em logs em produção
• ip (string): IP de origem do login
Exemplo
add_hook(‘onBeforeAdminLogin’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Login admin antes de autorizar para email=’ . ($vars[‘email’] ?? ‘n/a’));
});


onBeforeAdminOpenTicket
Executa antes do admin abrir/criar um novo ticket (suporte).
Parâmetros
O mesmo array $data enviado no fluxo Support\Api\Admin::ticket_create,
em geral:
• client_id (int): ID do cliente
• support_helpdesk_id (int): ID do helpdesk
• subject (string): assunto do ticket
• content (string): conteúdo/mensagem do ticket
• status (string, opcional): status do ticket (default: “on hold”, dependendo
do sistema)
Exemplo
add_hook(‘onBeforeAdminOpenTicket’, 1, function (array $vars): void {
// Evite logar conteúdo se houver dados sensíveis.
error_log(‘Abrindo ticket para client_id=’ . ($vars[‘client_id’] ?? ‘n/a’));
});


onBeforeAdminOrderActivate
Executa antes de um pedido (incluindo addons) ser ativado.
Parâmetros
• id (int): ID do registro ClientOrder que será ativado (pode ser o pedido
principal ou um addon)
27
Observação: dependendo da implementação do serviço acionado no
activateOrder, o evento pode receber chaves extras além de id,
pois o sistema faz merge do retorno do serviço no array de parâmetros.
Exemplo
add_hook(‘onBeforeAdminOrderActivate’, 1, function (array $vars): void {
error_log(‘Antes de ativar ordem/addon id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderCancel
Executa antes de um admin cancelar um pedido.
Parâmetros
• id (int): ID do pedido (ClientOrder)
Exemplo
add_hook(‘onBeforeAdminOrderCancel’, 1, function (array $vars): void {
error_log(‘Antes de cancelar ordem id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderCreate
Executa antes de criar um pedido para o cliente (admin).
Parâmetros
O objeto $data recebido na API Order\Api\Admin::create (repasse como
params no hook), em geral:
• client_id (int): ID do cliente
• product_id (int): ID do produto
• config (array, opcional): configurações dependentes do tipo de produto
• quantity (int, opcional): quantidade (default 1)
• price (float, opcional): preço unitário (override)
• period (string, opcional): billing period (ex.: 1Y)
• group_id (string|int, opcional): ID de grupo (addons)
• currency (string, opcional): moeda do pedido
• title (string, opcional): título do pedido (default: título do produto)
• activate (bool, opcional): ativa imediatamente
• invoice_option (string, opcional): no-invoice ou issue-invoice
• nfse_option (string, opcional): opção NFSe (default: default)
• suspend_option (int|string, opcional): opção de suspensão (default: 1)
• skip_validation (bool, opcional): ignora validação do config
28
• notes (string, opcional): notas
• created_at / updated_at (string, opcional): datas para os campos
• meta (array, opcional): meta properties do pedido
Observação: diferentes produtos podem exigir chaves específicas dentro de config.
Exemplo
add_hook(‘onBeforeAdminOrderCreate’, 1, function (array $vars): void {
error_log(‘Antes de criar order client_id=’ . ($vars[‘client_id’] ?? ‘n/a’) . ‘ product_});


onBeforeAdminOrderDelete
Executa antes de excluir um pedido.
Parâmetros
• id (int): ID do pedido (ClientOrder)
Exemplo
add_hook(‘onBeforeAdminOrderDelete’, 1, function (array $vars): void {
error_log(‘Antes de excluir order id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderRenew
Executa antes de renovar um pedido.
Parâmetros
• id (int): ID do pedido (ClientOrder)
Exemplo
add_hook(‘onBeforeAdminOrderRenew’, 1, function (array $vars): void {
error_log(‘Antes de renovar order id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderSuspend
Executa antes de suspender um pedido.
Parâmetros
• id (int): ID do pedido (ClientOrder)
29
Exemplo
add_hook(‘onBeforeAdminOrderSuspend’, 1, function (array $vars): void {
error_log(‘Antes de suspender order id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderUncancel
Executa antes de des-fazer um cancelamento de pedido (pedido volta para
active).
Parâmetros
• id (int): ID do pedido (ClientOrder)
Exemplo
add_hook(‘onBeforeAdminOrderUncancel’, 1, function (array $vars): void {
error_log(‘Antes de uncancel order id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderUnsuspend
Executa antes de remover a suspensão de um pedido.
Parâmetros
• id (int): ID do pedido (ClientOrder)
Exemplo
add_hook(‘onBeforeAdminOrderUnsuspend’, 1, function (array $vars): void {
error_log(‘Antes de unsuspend order id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminOrderUpdate
Executa antes de atualizar os dados de um pedido (admin).
Parâmetros
O objeto $data enviado no update da order via admin, em geral:
• id (int): ID do pedido
• period (string, opcional): billing period (ex.: 1Y)
• created_at (string, opcional): data de criação (parsável por strtotime)
• activated_at (string, opcional): data de ativação
• expires_at (string, opcional): data de expiração
30
• nfse_option (string, opcional): opção NFSe
• invoice_option (string, opcional): opção de fatura (no-invoice /
issue-invoice)
• suspend_option (int|string, opcional): opção de suspensão
• title (string, opcional): título
• price (float|string, opcional): preço
• status (string, opcional): status manual
• notes (string, opcional): observações
• reason (string, opcional): motivo
• meta (array, opcional): meta propriedades do pedido (name => value)
Observação: o evento recebe o $data completo; podem existir outras
chaves dependendo do formulário/integração.
Exemplo
add_hook(‘onBeforeAdminOrderUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar order id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminPublicTicketOpen
Executa antes do admin abrir/criar um ticket público.
Parâmetros
O objeto $data enviado no fluxo Support\Service::publicTicketCreate, em
geral:
• name (string): nome do autor
• email (string): email do autor
• subject (string): assunto
• message (string): conteúdo/mensagem
Exemplo
add_hook(‘onBeforeAdminPublicTicketOpen’, 1, function (array $vars): void {
error_log(‘Antes de abrir ticket público email=’ . ($vars[‘email’] ?? ‘n/a’));
});


onBeforeAdminSettingsUpdate
Executa antes de atualizar as configurações gerais do sistema (painel admin).
Parâmetros
O array $data com os pares chave => valor dos settings que serão persistidos
(via setParamValue).
Observação: pode incluir chaves derivadas de uploads (ex.:
company_logo_dark, company_logo, logo_url, company_favicon),
além de quaisquer outras configurações enviadas na requisição.
Exemplo
add_hook(‘onBeforeAdminSettingsUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar settings: ‘ . json_encode(array_keys($vars)));
});


onBeforeAdminStaffApiKeyChange
Executa antes de uma chave de API (token) de um staff/admin ser gerada
novamente.
Parâmetros
• id (int): ID do staff/admin (Admin) que terá a API key alterada
Observação: o token em si não é enviado neste evento; apenas o id.
Exemplo
add_hook(‘onBeforeAdminStaffApiKeyChange’, 1, function (array $vars): void {
error_log(‘Antes de gerar nova API key para staff id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminStaffCreate
Executa antes de criar um novo funcionário (staff).
Parâmetros
O objeto $data da API Staff\Api\Admin::create, em geral:
• email (string): email do staff
• password (string): senha em texto puro — evite registrar isso em log em
produção
• name (string): nome
• admin_group_id (int|string): ID do grupo
• signature (string, opcional): assinatura
• status (string, opcional): status (quando enviado)
32
Exemplo
add_hook(‘onBeforeAdminStaffCreate’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Antes de criar staff email=’ . ($vars[‘email’] ?? ‘n/a’));
});


onBeforeAdminStaffDelete
Executa antes de remover um funcionário (staff).
Parâmetros
• id (int): ID do staff/admin (Admin) que será removido
Exemplo
add_hook(‘onBeforeAdminStaffDelete’, 1, function (array $vars): void {
error_log(‘Antes de remover staff id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminStaffPasswordChange
Executa antes de alterar a senha de um funcionário (staff) via gestão de staff.
Parâmetros
• id (int): ID do staff/admin (Admin)
Observação: a senha nova não é enviada neste evento. (A
senha em texto puro aparece apenas no fluxo de perfil:
onBeforeAdminStaffProfilePasswordChange.)
Exemplo
add_hook(‘onBeforeAdminStaffPasswordChange’, 1, function (array $vars): void {
error_log(‘Antes de trocar senha do staff id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminStaffProfilePasswordChange
Executa antes do usuário logado (staff/admin) alterar a própria senha via
perfil.
Parâmetros
O objeto $event_params do fluxo de perfil, em geral:
• id (int): ID do staff/admin (Admin)
33
• password (string): nova senha em texto puro — evite registrar em
logs em produção
• password_confirm (string, opcional): confirmação (presente no fluxo
legado Staff\Api\Admin::profile_change_password)
Exemplo
add_hook(‘onBeforeAdminStaffProfilePasswordChange’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Antes de trocar senha do perfil staff id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminStaffProfileUpdate
Executa antes do usuário logado atualizar os dados do próprio perfil (email,
nome, assinatura).
Parâmetros
O objeto $event_params do fluxo de perfil, em geral:
• id (int): ID do staff/admin (Admin)
• email (string, opcional): novo email
• name (string, opcional): novo nome
• signature (string, opcional): nova assinatura
Exemplo
add_hook(‘onBeforeAdminStaffProfileUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar perfil staff id=’ . ($vars[‘id’] ?? ‘n/a’));
});
onBeforeAdminStaffUpdate
Executa antes de um admin atualizar os dados de outro funcionário (gestão
de staff).
Parâmetros
• id (int): ID do funcionário (Admin) que será atualizado
Observação: este evento envia apenas id. Os campos atualizados
(email, status, grupo, etc.) não são enviados aqui.
Exemplo
add_hook(‘onBeforeAdminStaffUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar staff (admin): id=’ . ($vars[‘id’] ?? ‘n/a’));
});

onBeforeAdminTransactionCreate
Executa antes de uma transação de pagamento ser criada/registrada.
Parâmetros
O objeto $data usado para criar a transação (IPN/retorno do gateway), em
geral:
• bb_invoice_id (int, opcional): ID da fatura (quando validação não é
ignorada)
• bb_gateway_id (int, opcional): ID do gateway (quando validação não
é ignorada)
• txn_id (string, opcional): identificador no gateway
• gateway (string, opcional): identificador interno do gateway (quando
enviado)
• http_raw_post_data (string, opcional): payload bruto
• get / post (array, opcionais): dados HTTP
• server (array|string, opcional): dados do servidor
• note (string, opcional): nota
• skip_validation (bool, opcional): ignora validação de invoice/gateway
Observação: o evento recebe o $data completo; as chaves variam
conforme o gateway/integração.
Exemplo
add_hook(‘onBeforeAdminTransactionCreate’, 1, function (array $vars): void {
error_log(‘Antes de criar transação: ‘ . json_encode([‘bb_invoice_id’ => $vars[‘bb_invoi});


onBeforeAdminTransactionProcess
Executa antes de processar uma transação.
Parâmetros
• id (int): ID da transação (Transaction)
Exemplo
add_hook(‘onBeforeAdminTransactionProcess’, 1, function (array $vars): void {
error_log(‘Antes de processar transação id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminTransactionUpdate
Executa antes de atualizar os dados de uma transação.
Parâmetros
• id (int): ID da transação (Transaction)
Exemplo
add_hook(‘onBeforeAdminTransactionUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar transação id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeAdminUninstallExtension
Executa antes de uma extensão ser desinstalada (removida do sistema pelo
admin).
Parâmetros
• id (int): ID do registro na tabela extension
Exemplo
add_hook(‘onBeforeAdminUninstallExtension’, 1, function (array $vars): void {
error_log(‘Antes de desinstalar extensão: ‘ . json_encode($vars));
});


onBeforeClientChangeNameservers
Executa antes de um cliente alterar os nameservers do domínio (servicedomain).
Parâmetros
O mesmo $data recebido na API servicedomain.update_nameservers, em
geral:
• order_id (int): ID do pedido do domínio
• ns1 / ns2 (string): hosts dos nameservers
• ns3 / ns4 (string, opcionais): nameservers extras
Exemplo
add_hook(‘onBeforeClientChangeNameservers’, 1, function (array $vars): void {
error_log(‘Antes de alterar NS: ‘ . json_encode($vars));
});


onBeforeClientCheckout
Executa antes do checkout do carrinho (criação de pedido(s) e fatura) na área do cliente.
Parâmetros
• ip (string): IP do cliente
• client_id (int): ID do cliente
• cart_id (int): ID do carrinho (Cart)
Exemplo
add_hook(‘onBeforeClientCheckout’, 1, function (array $vars): void {
error_log(‘Antes do checkout: ‘ . json_encode($vars));
});


onBeforeClientInvoiceDelete
Executa antes de um cliente remover uma fatura.
Parâmetros
• id (int): ID da fatura
Exemplo
add_hook(‘onBeforeClientInvoiceDelete’, 1, function (array $vars): void {
error_log(‘Antes de remover fatura (cliente) id=’ . ($vars[‘id’] ?? ‘n/a’));
});


onBeforeClientLogin
Executa antes do cliente efetuar login.
Parâmetros
O array $event_params montado no fluxo de login, em geral:
• email (string): email informado
• password (string): senha em texto puro (texto digitado) — evite registrar em logs em produção
• ip (string): IP de origem do login
Exemplo
add_hook(‘onBeforeClientLogin’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Login cliente antes de autorizar para email=’ . ($vars[‘email’] ?? ‘n/a’));
});


onBeforeClientOpenTicket
Executa antes de um cliente abrir um novo ticket de suporte.
Parâmetros
O mesmo $event_params do fluxo de criação do ticket, em geral:
• client_id (int): ID do cliente
• subject (string): assunto do ticket
• content (string): conteúdo/mensagem do ticket
• support_helpdesk_id (int): ID do helpdesk
• rel_id / rel_type / rel_task / rel_new_value (misto, opcionais):
dados de tarefa vinculada ao ticket (quando enviados)
Observação: este evento recebe os dados do formulário; o
onAfterClientOpenTicket envia apenas id.
Exemplo
add_hook(‘onBeforeClientOpenTicket’, 1, function (array $vars): void {
error_log(‘Antes de abrir ticket client_id=’ . ($vars[‘client_id’] ?? ‘n/a’));
});


onBeforeClientProfilePasswordChange
Executa antes do cliente logado alterar a senha no perfil.
Parâmetros
• id (int): ID do cliente
• password (string): nova senha em texto puro — evite registrar em
logs em produção
Exemplo
add_hook(‘onBeforeClientProfilePasswordChange’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Antes de trocar senha do cliente id=’ . ($vars[‘id’] ?? ‘n/a’));
});

onBeforeClientProfileUpdate
Executa antes do cliente logado atualizar dados do próprio perfil.
Parâmetros
O objeto $event_params do update do perfil, em geral:
• id (int): ID do cliente
• Campos opcionais enviados no update (ex.: email, first_name,
last_name, endereço, phone, custom_*, etc.)
38
Observação: o evento recebe o $data completo. O conjunto de
chaves depende do formulário/integração.
Exemplo
add_hook(‘onBeforeClientProfileUpdate’, 1, function (array $vars): void {
error_log(‘Antes de atualizar perfil do cliente id=’ . ($vars[‘id’] ?? ‘n/a’));
});

onBeforeClientSignUp
Executa antes de criar uma conta de cliente via cadastro público (guest signup).
Parâmetros
O objeto $event_params do cadastro, em geral:
• Campos enviados no signup (ex.: email, password, first_name, etc.)
• ip (string): IP do cliente (adicionado pelo sistema antes do evento)
Observação: pode conter senha em texto puro — evite registrar
em logs em produção.
Exemplo
add_hook(‘onBeforeClientSignUp’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Antes do signup email=’ . ($vars[‘email’] ?? ‘n/a’) . ‘ ip=’ . ($vars[‘ip’] ?});
onBeforeGuestPasswordResetRequest
Executa antes de processar uma solicitação de reset de senha (guest).
Parâmetros
• email (string): email informado na solicitação
Exemplo
add_hook(‘onBeforeGuestPasswordResetRequest’, 1, function (array $vars): void {
error_log(‘Antes do reset request para email=’ . ($vars[‘email’] ?? ‘n/a’));
});

onBeforeGuestPublicTicketOpen
Executa antes de um visitante (guest) abrir um ticket público.
39
Parâmetros
O objeto $event_params do fluxo público, em geral:
• name (string): nome do autor
• email (string): email do autor
• subject (string): assunto
• message (string): mensagem inicial
• ip (string): IP (adicionado antes do evento)
Observação: o listener pode retornar um array para alterar valores
como status, subject e message no fluxo do ticket público.
Exemplo
add_hook(‘onBeforeGuestPublicTicketOpen’, 1, function (array $vars): void {
error_log(‘Antes de abrir ticket público (guest) email=’ . ($vars[‘email’] ?? ‘n/a’));
});

onBeforeProductAddedToCart
Executa antes de um produto (e addons associados ao fluxo) ser adicionado ao
carrinho.
Parâmetros
É o mesmo array montado como $event_params:
• cart_id (int): ID do carrinho
• product_id (int): ID do produto principal
• Demais chaves vindas dos dados enviados na adição ($data), conforme
formulário/checkout (ex.: period, quantity, campos personalizados,
domain, addons, etc.)
Exemplo
add_hook(‘onBeforeProductAddedToCart’, 1, function (array $vars): void {
error_log(‘Antes de adicionar ao carrinho: ‘ . json_encode([‘cart_id’ => $vars[‘cart_id});

onEventAdminLoginFailed
Executa quando a tentativa de login do admin falha (credenciais inválidas).
Parâmetros
• email (string): email informado
• password (string): senha em texto puro — evite registrar em logs em
produção
40
• ip (string): IP de origem do login
Exemplo
add_hook(‘onEventAdminLoginFailed’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Login admin falhou email=’ . ($vars[‘email’] ?? ‘n/a’) . ‘ ip=’ . ($vars[‘ip});

onEventClientLoginFailed
Executa quando a tentativa de login do cliente falha (credenciais inválidas).
Parâmetros
• email (string): email informado
• password (string): senha em texto puro — evite registrar em logs em
produção
• ip (string): IP de origem do login
Exemplo
add_hook(‘onEventClientLoginFailed’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Login cliente falhou email=’ . ($vars[‘email’] ?? ‘n/a’) . ‘ ip=’ . ($vars[‘i});

onEventBeforeInvoiceIsDue
Executa para faturas a vencer (antes do vencimento) ao rodar a rotina de “due
events”.
Parâmetros
• id (int): ID da fatura
• days_left (int|string): dias restantes até o vencimento
Exemplo
add_hook(‘onEventBeforeInvoiceIsDue’, 1, function (array $vars): void {
error_log(‘Invoice a vencer id=’ . ($vars[‘id’] ?? ‘n/a’) . ‘ days_left=’ . ($vars[‘days});

onEventAfterInvoiceIsDue
Executa para faturas vencidas (após o vencimento) ao rodar a rotina de “due
events”.
Parâmetros
• id (int): ID da fatura
• days_passed (int|string): dias passados desde o vencimento
Exemplo
add_hook(‘onEventAfterInvoiceIsDue’, 1, function (array $vars): void {
error_log(‘Invoice vencida id=’ . ($vars[‘id’] ?? ‘n/a’) . ‘ days_passed=’ . ($vars[‘day});


onBeforeAdminUpdateCore
Executa antes de atualizar o core do sistema.
Parâmetros
• (nenhum): este evento é disparado sem params
Exemplo
add_hook(‘onBeforeAdminUpdateCore’, 1, function (array $vars): void {
error_log(‘Antes de atualizar core’);
});

onAfterAdminUpdateCore
Executa depois de atualizar o core do sistema.
Parâmetros
• (nenhum): este evento é disparado sem params
Exemplo
add_hook(‘onAfterAdminUpdateCore’, 1, function (array $vars): void {
error_log(‘Depois de atualizar core’);
});

onBeforeAdminUpdateExtension
Executa antes de atualizar uma extensão existente.
Parâmetros
O objeto do modelo de extensão (resultado de toArray do model), em geral
com chaves como:
• id (int): ID do registro na tabela extension
• name (string): nome/identificador
• type (string): tipo (ex.: mod, theme, gateway, …)
• status (string): status
Observação: o formato exato depende do model Extension/RedBean.
Exemplo
add_hook(‘onBeforeAdminUpdateExtension’, 1, function (array $vars): void {
error_log(‘Antes de atualizar extensão: ‘ . json_encode($vars));
});

onAfterAdminUpdateExtension
Executa depois de atualizar uma extensão existente.
Parâmetros
O objeto do model atualizado (array), em geral semelhante ao do onBefore….
Exemplo
add_hook(‘onAfterAdminUpdateExtension’, 1, function (array $vars): void {
error_log(‘Depois de atualizar extensão: ‘ . json_encode($vars));
});

onBeforeAdminClientCreate
Executa antes de criar um cliente via API do admin (Client\Api\Admin::create).
Parâmetros
O objeto $data da criação via admin, em geral:
• Dados do cadastro (ex.: email, password, nome, endereço, CPF/CNPJ,
etc.)
Observação: pode incluir senha em texto puro — evite registrar
em logs em produção.
Exemplo
add_hook(‘onBeforeAdminClientCreate’, 1, function (array $vars): void {
// Evite logar $vars[‘password’]
error_log(‘Antes de criar cliente (admin api) email=’ . ($vars[‘email’] ?? ‘n/a’));
});

onAfterAdminClientCreate
Executa depois de criar um cliente via API do admin (Client\Api\Admin::create).
Parâmetros
O mesmo $data enviado na criação (inclui campos do cadastro).
Observação: este evento (nesta implementação) recebe o $data original; o ID do cliente é o retorno do método. Para receber só o id,
use onAfterAdminCreateClient.
Exemplo
add_hook(‘onAfterAdminClientCreate’, 1, function (array $vars): void {
error_log(‘Depois de criar cliente (admin api): ‘ . json_encode([‘email’ => $vars[‘email});