Adicione o Fin Messenger ao seu site Salesforce Experience Cloud (portal) e controle quais dados do usuário conectado são enviados para Fin totalmente por configuração, sem necessidade de editar Apex.
Nota: O que mudou (jun 2026): Anteriormente, este guia pedia para editar a classe JwtGenerator Apex para escolher o identificador do usuário e quais atributos enviar. Isso não é possível em uma organização de produção (Salesforce não permite editar Apex via Setup em produção, e classes empacotadas são sobrescritas na atualização). Agora você configura tudo isso nas Configurações do Fin Messenger (custom setting), com uma interface Apex opcional para casos avançados (veja o Passo 6).
Instale o Fin Messenger em uma página do Salesforce
1. Instale o pacote no Salesforce
Para instalar o Fin Messenger em uma página do Salesforce, criamos um pacote que você pode instalar, que simplesmente cria uma definição de custom setting.
Você precisará instalar o pacote no seu ambiente Salesforce antes de seguir os passos abaixo.
Ou
2. Configure as configurações do Fin Messenger no Salesforce
O pacote adiciona um Fin Messenger Settings custom setting que armazena seu App ID, segredo JWT e (novo) a configuração dos dados do usuário.
A) Abra as configurações
Vá para Setup > Custom Settings.
Abra Fin Messenger Settings.
Clique em Manage.
Clique em New (ou Edit) no Default Organization Level Value.
B) App ID — no Fin, Settings > General; insira no campo App Id.
C) JWT Secret Key — no Fin, Settings > Fin Messenger; insira no campo JWT Secret Key.
Esses dois são os únicos valores obrigatórios. O restante (Passo 6) é opcional.
3. Configure a política de segurança de conteúdo (CSP)
Setup > Digital Experiences > All Sites > (seu site) > Builder > Settings > Security & Privacy.
Defina o Nível de Segurança para Relaxed CSP.
Em Trusted Sites for Scripts, adicione
https://widget.intercom.ioehttps://js.intercomcdn.com.Em Setup → Trusted URLs, adicione as URLs/diretrizes CSP do Intercom, com CSP Context = All ou Experience Builder Sites.
4. Adicione o script de inicialização do Fin Messenger ao seu portal
<script>
window.addEventListener('finMessengerData', function (e) {
var data = e.detail || {};
window.intercomSettings = {
api_base: 'https://api-iam.intercom.io', // regional base — see table
app_id: data.appId,
intercom_user_jwt: data.jwt // omitted/null → boots logged-out
};
window.Intercom && window.Intercom('boot', window.intercomSettings);
});
</script>
Região |
|
EUA |
|
UE |
|
Austrália |
|
5. Adicione o componente Fin Messenger à sua página
Setup > Digital Experiences > All Sites > (seu site) > Builder.
Arraste o componente Fin Messenger para a página do portal.
Publique o site.
6. Configure os dados do usuário enviados para Fin
Tudo configurado no registro Fin Messenger Settings (Passo 2) — sem alterações de código. Deixe um campo em branco para manter o padrão.
Campo | O que controla | Padrão quando em branco |
Campo de ID do Usuário | O campo do Usuário cujo valor se torna o |
|
Campos de Atributos | Atributos extras para enviar (formato abaixo). | nenhum |
Campo de ID da Empresa | O campo do Usuário enviado como | omitido |
Classe Provedora | Avançado: uma classe Apex que retorna atributos personalizados. | não usado |
Formato dos Campos de Atributos
Pares separados por vírgula intercomKey:UserField:
À esquerda dos dois pontos — o nome do atributo Intercom (chave que o Fin recebe).
À direita dos dois pontos — o nome da API do campo de Usuário Salesforce para ler o valor.
Um nome de campo simples usa o nome do campo em minúsculas como chave Intercom.
Campos personalizados usam seu nome de API (
__c). Campos desconhecidos são ignorados.
Exemplo: phone:Phone, job_title:Title, Department, plan:Account_Tier__c produz:
{ "phone": "(555) 123-4567", "job_title": "Account Executive", "department": "Sales", "plan": "Enterprise" }Nota: name, email e user_id são sempre enviados (não os liste aqui).
Avançado: atributos personalizados via Apex
Para valores que você não pode expressar como um único campo de Usuário, implemente FinAttributeProvider em uma classe Apex própria (editável, na sua organização), e então coloque seu nome em Classe Provedora:
global class MyFinAttributes implements finmessenger.FinAttributeProvider {
global Map<String, Object> injectFinCustomAttributes(User currentUser) {
Map<String, Object> attrs = new Map<String, Object>();
attrs.put('locale', currentUser.LanguageLocaleKey);
attrs.put('is_internal',
currentUser.Email != null && currentUser.Email.endsWith('@acme.com'));
// currentUser only has the configured fields — query anything else yourself
Contact c = [
SELECT AccountId, Account.Name, Account.Subscription_Tier__c
FROM Contact WHERE Id = :currentUser.ContactId LIMIT 1
];
attrs.put('plan', c.Account.Subscription_Tier__c);
attrs.put('company', new Map<String, Object>{
'company_id' => c.AccountId, 'name' => c.Account.Name
});
return attrs;
}
}Deve ser
global(chamada em todo o namespace do pacote).currentUsercontém apenas os campos configurados no Passo 6 — consulte qualquer outro.O mapa do provedor é mesclado por último, então suas chaves têm prioridade sobre os Campos de Atributos.
Mantenha leve — ele roda em toda inicialização do messenger (erros são capturados; consultas lentas atrasam a inicialização).
Perguntas Frequentes
Como encontro meu Fin App ID?
Vá para Settings > General. Seu App ID está listado na seção Detalhes do App.
Onde encontro o JWT Secret Key?
Em Settings > Fin Messenger, copie seu JWT Secret Key.
E se o messenger não carregar?
Verifique suas configurações CSP. Certifique-se de que tanto as URLs de script confiáveis quanto as URLs confiáveis estejam configuradas corretamente e o nível de segurança esteja definido para Relaxed CSP.
Posso restringir quais dados do usuário são enviados para Fin?
Sim, isso é o Passo 6. Configure Campo de ID do Usuário, Campos de Atributos, Campo de ID da Empresa e Classe Provedora nas Configurações do Fin Messenger. Apenas name, email, user_id e o que você listar em Campos de Atributos são enviados. Limpe os campos para enviar menos.
Preciso editar Apex?
Não, a configuração padrão no Passo 6 não requer alterações de código. Apex só é necessário se você optar pelo gancho avançado Classe Provedora, que usa uma classe que você escreve na sua própria organização (não o Apex empacotado).
Como resolvo falhas de compilação Apex?
O pacote Salesforce depende de objetos e campos padrão, então se houver falha de compilação pode ser devido a classes Apex órfãs na organização Salesforce.
Nesses casos, clique no acordeão Opções Avançadas durante a instalação.
Selecione Compilar apenas o Apex no pacote e então clique em Instalar.



