Vincular usuários do Web SDK entre domínios por ID de dispositivo
Passe o ID de dispositivo do Braze Web SDK pela URL de destino quando dois domínios não podem compartilhar cookies, para que sessões anônimas em ambos os sites sejam mapeadas para o mesmo perfil de usuário na Braze.
Sobre este exemplo
A Kitchenerie, uma varejista fictícia de utensílios de cozinha, hospeda um site de marketing (kitchenerie.com) e uma loja (kitchenerie.shop). Cada domínio tem sua própria integração do Braze Web SDK. Cookies do navegador não são compartilhados entre domínios, então a Braze atribui IDs de dispositivo separados — e perfis anônimos separados — quando o mesmo usuário navega do site de marketing para a loja.
Este padrão:
- Lê o ID de dispositivo no domínio de origem com
getDeviceIdapós a inicialização do SDK - Anexa-o aos links de saída como um parâmetro de consulta (por exemplo,
brazeDeviceId) - No domínio de destino, lê esse parâmetro e o passa para
braze.initializepor meio da opçãodeviceId
A transferência é mais importante para usuários anônimos. Depois que o usuário faz login na loja, changeUser com um external_id se torna o identificador durável entre dispositivos. Consulte Definir IDs de usuário.
Ambos os domínios devem usar a mesma chave de API do espaço de trabalho da Braze e o mesmo endpoint de SDK para que os eventos sejam registrados em um único perfil.
Considerações
- O ID de dispositivo é por navegador. Este padrão não vincula atividades entre navegadores, dispositivos ou perfis diferentes. Use
external_idpor meio dechangeUserpara identidade autenticada entre dispositivos. - Recupere o ID de dispositivo somente após o Web SDK ser inicializado no domínio de origem. Chamar
getDeviceIdantes deinitializenão retorna um valor. - O Web SDK lê
deviceIduma única vez eminitialize. Não existe umsetDeviceIdpós-inicialização que altere o ID de dispositivo ativo. Leia o parâmetro da URL no domínio de destino antes de chamarinitialize. - Visitas diretas, favoritos ou referências de terceiros para a loja sem
brazeDeviceIddevem recorrer à atribuição padrão de ID de dispositivo — comportamento esperado quando não há um ID do domínio de origem para herdar. - Parâmetros de consulta aparecem no histórico do navegador e nos logs do servidor.
- Parâmetros de consulta podem vazar por meio de cabeçalhos de referência. O ID de dispositivo não é IPI por si só, mas remova o parâmetro após o consumo se sua equipe de privacidade exigir (consulte a Etapa 2).
- Teste de ponta a ponta. Confirme que os eventos do Domínio 2 usam o ID de dispositivo esperado com inspeção de rede.
- Adapte nomes de host, seletores de links e tratamento de erros ao seu site. Teste em seu ambiente de desenvolvimento antes de ir para produção.
Configuração
Etapa 1: Anexar o ID de dispositivo aos links entre domínios no domínio de origem
Em kitchenerie.com (Domínio 1), inicialize o Web SDK normalmente e, em seguida, anexe o ID de dispositivo atual aos links que apontam para kitchenerie.shop (Domínio 2).
Escolha um nome de parâmetro de consulta que não colida com o seu site (este exemplo usa brazeDeviceId). A mesma ideia se aplica a links renderizados pelo servidor, navegação do lado do cliente ou valores de src de iframe que você controla.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import * as braze from "@braze/web-sdk";
braze.initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
});
braze.openSession();
const destinationHost = "kitchenerie.shop";
braze.getDeviceId(function (deviceId) {
if (!deviceId) {
return;
}
const links = document.querySelectorAll('a[href*="' + destinationHost + '"]');
links.forEach(function (link) {
try {
const url = new URL(link.href);
url.searchParams.set("brazeDeviceId", deviceId);
link.href = url.toString();
} catch (e) {
// Skip malformed hrefs (for example, javascript:, mailto:, or unparsable relative paths).
}
});
});
Se a sua versão do SDK expõe getDeviceId de forma síncrona (sem retorno de chamada), chame-o após a inicialização:
1
const deviceId = braze.getDeviceId();
Consulte Guia do repositório do Web SDK — Obter ID de dispositivo e Opções de inicialização — deviceId.
Etapa 2: Ler o ID de dispositivo e inicializar o Web SDK no domínio de destino
Em kitchenerie.shop (Domínio 2), leia brazeDeviceId da query string antes de initialize e passe-o nas opções de inicialização quando presente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import * as braze from "@braze/web-sdk";
const urlParams = new URLSearchParams(window.location.search);
const passedDeviceId = urlParams.get("brazeDeviceId");
const initOptions = {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
};
if (passedDeviceId) {
initOptions.deviceId = passedDeviceId;
}
braze.initialize("YOUR-API-KEY-HERE", initOptions);
braze.openSession();
// Optional: remove the parameter from the visible URL after consumption.
if (passedDeviceId) {
const cleanUrl = new URL(window.location.href);
cleanUrl.searchParams.delete("brazeDeviceId");
window.history.replaceState({}, document.title, cleanUrl.toString());
}
Quando o usuário fizer login, chame changeUser com o external_id dele para que a atividade futura seja vinculada ao perfil identificado.
Etapa 3: Verificar a transferência
- Abra o Domínio 1 em um navegador onde você não está logado.
- Siga um link entre domínios para o Domínio 2.
- Na guia de rede do navegador, confirme que o Domínio 2 envia eventos com o mesmo ID de dispositivo usado pelo Domínio 1.
- Repita com uma visita direta ao Domínio 2 (sem parâmetro de consulta) e confirme que um novo ID de dispositivo é atribuído.