Como sincronizar os Dados e E-mail do Cliente com o Usuário Principal (owner) no WHMCS

Jefferson A. Voigt
Atualizado em 17/06/2025

No WHMCS, um cliente pode estar vinculado a um ou mais usuários. Quando um cliente é atualizado pela área administrativa ou pela área do cliente, o Hook abaixo garante que as alterações de nome, sobrenome e e-mail também sejam refletidas no usuário principal (owner) vinculado a ele. Atualmente o WHMCS não permite a alteração dos dados do usuário principal pelo cliente.

1. O que o Hook faz?

O código utiliza o hook ClientEdit, que é executado sempre que os dados de um cliente são atualizados no painel administrativo ou pela área do cliente do WHMCS.

2. Funcionamento

Ao editar um cliente:
- O hook captura os dados alterados (nome, sobrenome e e-mail).
- Em seguida, busca o Usuário Principal (owner) vinculado ao cliente usando a tabela tblusers_clients.
- Se encontrado, ele atualiza as informações do usuário correspondente na tabela tblusers para manter ambos sincronizados.

3. Código do Hook

Crie um arquivo chamado sincronizar_usuario.php e envie para a pasta /includes/hooks do seu WHMCS com o seguinte conteúdo:

<?php

use WHMCS\Database\Capsule;

add_hook('ClientEdit', 1, function($vars) {
    $clientId = $vars['userid'];
    $newEmail = $vars['email'];
    $newFirstName = $vars['firstname'];
    $newLastName = $vars['lastname'];

    try {
        $userLink = Capsule::table('tblusers_clients')
            ->where('client_id', $clientId)
            ->where('owner', 1)
            ->first();

        if (!$userLink) return;

        $userId = $userLink->auth_user_id;

        Capsule::table('tblusers')
            ->where('id', $userId)
            ->update([
                'email' => $newEmail,
                'first_name' => $newFirstName,
                'last_name' => $newLastName,
                'updated_at' => date('Y-m-d H:i:s'),
            ]);
    } catch (Exception $e) {
        logActivity('Erro ao sincronizar dados do usuário principal: ' . $e->getMessage());
    }
});


4. Como identificar Clientes com dados diferentes dos Usuários

Para verificar quais clientes possuem informações divergentes do usuário principal, utilize a seguinte consulta SQL via phpMyAdmin no banco de dados do WHMCS:

SELECT
    c.id AS client_id,
    c.firstname,
    c.lastname,
    c.email AS client_email,
    u.id AS user_id,
    u.first_name AS user_first_name,
    u.last_name AS user_last_name,
    u.email AS user_email
FROM
    tblclients c
INNER JOIN
    tblusers_clients uc ON uc.client_id = c.id AND uc.owner = 1
INNER JOIN
    tblusers u ON u.id = uc.auth_user_id
WHERE
    c.email != u.email
    OR c.firstname != u.first_name
    OR c.lastname != u.last_name;


Se o resultado retornar linhas, significa que os dados do cliente e do usuário principal estão diferentes. Após ativar o hook, qualquer atualização feita em um cliente irá sincronizar essas informações automaticamente.

Este artigo foi útil? 1 usuários acharam isso útil