A Tray é uma provedora de sistema de gerenciamento de conteúdo (CMS) de e-commerce com mais de 20 anos de experiência no mercado de varejo brasileiro. Os comerciantes administram lojas on-line na infraestrutura Tray's, que também oferece serviços e integrações para gerenciar a logística, os pagamentos, as promoções e os relatórios da empresa.
Tray é membro do grupo LWSA e é uma força motriz no setor de comércio eletrônico. A Tray é a escolha de mais de 180 mil clientes que, juntos, geraram mais de US$3 bilhões em GMV no primeiro trimestre de 2024.

Dependência de cookies de terceiros
A arquitetura técnica Tray's usa cookies de terceiros (3PCs) para fornecer funcionalidades de terceiros aos sites dos comerciantes, principalmente para o painel de administração do backoffice do comerciante usado para gerenciar a loja. Esses cookies são essenciais para renderizar conteúdo veiculado de aplicativos de terceiros hospedados em domínios diferentes do do comerciante. A pesquisa Tray's revelou que as mudanças planejadas na forma como os navegadores lidam com 3PCs podem interromper esse recurso. Como o Tray funciona como infraestrutura essencial para muitos varejistas on-line, é fundamental que as empresas continuem a operar normalmente, mesmo com as mudanças importantes na forma como o Chrome e outros navegadores lidam com 3PCs.
Este estudo de caso explica a descoberta de possíveis interrupções da Tray's, a avaliação de possíveis soluções e a solução implementada para garantir que os sites estejam prontos para mudanças em 3PCs.
Arquitetura técnica
Microsserviços
Tray hospeda todos os aplicativos da loja e de back-office no domínio tray.com.br. Os comerciantes podem usar um CNAME para veicular esses aplicativos no próprio domínio personalizado. Com essa configuração, os compradores só vão ver o domínio da loja, como merchant.example. O Tray usa uma arquitetura de microsserviços para oferecer recursos e capabilities. Essa abordagem usa aplicativos independentes e independentes, cada um focado em uma função específica. Esses microsserviços são agrupados em escopos com base nos recursos funcionais:
- Loja:abrange os aplicativos responsáveis pelos recursos da vitrine, como exibição de produtos, pesquisa e gerenciamento de temas.
- Fluxo de compra:gerencia o carrinho de compras, o processo de finalização de compra e as interações do cliente durante a jornada de compra.
- Gerenciamento de lojas:oferece aplicativos de back-office para tarefas como administração, relatórios e importação de dados.
- Integrações:facilitam as conexões com plataformas externas para ativar listagens em vários marketplaces, gerenciar a logística e muito mais.
Aplicativo de back-office
O backoffice é um aplicativo principal na administração da loja, que funciona como o painel de administração central da loja virtual de um vendedor no Tray. Nesse painel, os vendedores podem:
- Registrar produtos
- Configurar os métodos de envio e pagamento
- Crie promoções
- Gerenciar transmissões ao vivo
- Supervisionar o fluxo de pedidos
- Monitorar relatórios de vendas
Como o backoffice reúne muitos microsserviços, alguns operados por Tray e outros por terceiros, em uma única interface, ele é particularmente suscetível a interrupções resultantes de mudanças na forma como os cookies de terceiros são processados.
CNAMEs para personalização do comerciante
O Tray usa registros CNAME para integrar as vitrines de forma simples.
Ao configurar uma nova loja, os comerciantes podem
configurar CNAMEs
para direcionar solicitações a aplicativos hospedados no domínio Tray's,
tray.com.br. Isso significa que, quando um cliente acessa o
site de um comerciante (como example.com
), um registro CNAME o redireciona para
o domínio Tray's, mantendo o URL do comerciante na barra de endereço. Isso
cria uma experiência de usuário tranquila, em que o conteúdo parece ser veiculado diretamente
do site do comerciante.
Entender os CNAMEs
Os registros CNAME funcionam de maneira semelhante ao encaminhamento de chamadas em um smartphone. Imagine ligar para um amigo no número 555-0199, mas ele não atender. A chamada pode ser encaminhada para o correio de voz em um número diferente, como 555-0100. No entanto, você, o autor da chamada, não tem conhecimento desse redirecionamento. O smartphone conecta você sem problemas, e a mensagem de voz ainda mostra o número original do seu amigo (555-0199).
Os CNAMEs funcionam da mesma forma para sites. Quando um usuário acessa o site de um comerciante (como example.com
), um registro CNAME pode redirecionar a solicitação
secretamente para um servidor diferente, como assets.example.com
. Mas, do
ponto de vista do usuário e do navegador, tudo acontece em example.com
. A
barra de endereço mostra o URL do comerciante, e o usuário interage com o site
como se o conteúdo tivesse origem diretamente daquele domínio.
Avaliar possíveis interrupções
A análise Tray's das mudanças planejadas no processamento de 3PC revelou interrupções no aplicativo de backoffice. Quando os 3PCs foram bloqueados, surgiram problemas ao carregar páginas de diferentes domínios em iframes incorporados em páginas de back-end. Isso se aplicava a domínios internos, que pertenciam aos próprios serviços da empresa, e a parceiros externos que desenvolvem aplicativos integrados ao Tray usando a API dele.
Por exemplo, imagine uma página em backoffice.merchant.example
que incorpora
conteúdo hospedado por tray.com.br e outros terceiros.
Os navegadores tratavam esse conteúdo incorporado como de terceiros devido à diferença de domínio, o que poderia restringir o conteúdo a qualquer limitação de terceiros.
Essa configuração pode levar a vários problemas:
- Sessões corrompidas:os 3PCs bloqueados podem causar a interrupção das sessões afetadas, fragmentando a experiência do usuário ao exigir que ele faça login várias vezes ou interrompendo ou causando inconsistências nas páginas do backoffice devido a um mau funcionamento dos iframes.
- Desafios de integração:aplicativos de parceiros e serviços internos que se integram ao back-end do Tray's usando a API podem enfrentar dificuldades semelhantes devido a restrições de 3PC.
A figura a seguir ilustra esse cenário:
- Um usuário acessa o aplicativo de backoffice hospedado em
merchant.example
. - Os aplicativos incorporados residem em domínios diferentes, alguns em
tray.com.br
, que é de propriedade da Tray, e outros em domínios de fornecedores de terceiros (third-party.example
). - Essa diferença de domínio aciona restrições de 3PC, o que pode causar problemas com os aplicativos incorporados.

Como analisar dependências e soluções de cookies de terceiros
Como testar jornadas ideais do usuário
O objetivo dos testes e análises de Tray's era melhorar a performance do site e a experiência do usuário, com foco em integrações de terceiros e preparação para um futuro em que muitos usuários navegam sem 3PCs.
Tray usou a Ferramenta de análise de dados do Sandbox de privacidade (PSAT, na sigla em inglês) e as Ferramentas do desenvolvedor do Chrome para analisar os principais fluxos de usuários para clientes e comerciantes. Isso envolveu testar o carregamento da página em iframes, verificar se as sessões do usuário permaneceram válidas e garantir que os aplicativos de terceiros continuassem funcionando como esperado. Os testes incluíram várias funções de usuário, dispositivos e navegadores (incluindo Chrome, Firefox e Safari) para identificar possíveis problemas de compatibilidade entre navegadores. Tray usou a PSAT e as ferramentas do Chrome DevTools para categorizar cookies e avaliar o impacto deles na experiência do usuário.
Essa análise foi uma etapa vital para garantir uma experiência de usuário tranquila e consistente, se adaptando a um futuro em que os cookies de terceiros podem ser limitados ou indisponíveis.
Como analisar as soluções do Sandbox de privacidade
API Storage Access
Embora a API Storage Access (SAA) possa resolver interrupções de Tray's e seja compatível com todos os principais navegadores, ela não era a melhor opção para a empresa por dois motivos principais:
- O conteúdo incorporado só precisava acessar cookies na origem em que ele foi incorporado, não para acessar os mesmos cookies em vários sites.
- As solicitações do navegador associadas ao SAA não eram ideais, principalmente porque os cookies não estavam sendo usados para rastrear usuários em vários sites.
CHIPS
O CHIPS oferece uma solução sólida com uma excelente experiência
do usuário para incorporações entre sites. O atributo Partitioned
foi
fácil de implementar e não teve impacto perceptível na interação do usuário
no Chrome. O CHIPS não tinha suporte de outros navegadores importantes quando Tray estava
fazendo mudanças no serviço. Por isso, eles decidiram mover as
incorporações próprias para o mesmo site do aplicativo de nível superior para
oferecer uma experiência consistente em todos os navegadores. O conteúdo incorporado de terceiros
depende do CHIPS no Chrome e abre uma nova janela (contexto próprio) em outros
navegadores. No entanto, desde a implementação inicial do Tray's, o Firefox confirmou
planos para enviar o CHIPS em breve, e o Safari começou a
adicionar suporte
ao atributo Particionado, começando com a prévia de tecnologia.
Achamos que o CHIPS era uma solução elegante e ficamos felizes em saber que ele está sendo adotado em vários navegadores. Decidimos manter a solução CHIPS e transferir as coisas para sites próprios para que possamos oferecer suporte a todos os navegadores antes mesmo que eles adotem o CHIPS.
— Takashi Tanaka, CTO da Tray
Compatibilidade com navegadores, W3C e padrões
O Chrome desempenha um papel fundamental na comunidade de padrões. A participação ativa em grupos de trabalho e grupos da comunidade do W3C, como o PrivacyCG, é crucial para influenciar o ecossistema de navegadores mais amplo a adotar novas tecnologias da Web.
O Sandbox de privacidade trabalha com o ecossistema da Web para evolucionar APIs como o CHIPS com base no feedback e no engajamento do setor. Essa abordagem transparente e orientada a padrões foi fundamental para impulsionar a adoção do CHIPS em outros principais navegadores.
Solução permanente para dependências de cookies de terceiros
O Tray oferece suporte a comerciantes e clientes em todos os tipos de dispositivos e navegadores. Uma abordagem baseada apenas no CHIPS seria a preferida, mas outras mudanças também foram feitas para oferecer suporte a outros navegadores que não ofereciam suporte ao CHIPS na época.
A abordagem Tray's para lidar com as interrupções causadas quando os 3PCs não estão disponíveis envolveu duas estratégias principais.
1. Aplicativos internos
Os microsserviços Tray totalmente operados, incluindo a loja ao vivo, o dropshipping e o emissor de faturas, foram atualizados para que a origem do conteúdo incorporado herde o CNAME configurado pelo comerciante. Simplificando, o conteúdo incorporado foi atualizado para ser de primeiro nível com a página que o incorpora, garantindo que não houve interrupções devido a mudanças de cookies de terceiros.
2. Aplicativos de terceiros
Para aplicativos de terceiros acessados pelo Backoffice, o Tray implementou uma abordagem mais dinâmica. Veja como funciona:
- Implementação de atributo particionado:a implementação do
atributo de cookie
Partitioned
foi mantida para fornecedores confiáveis, permitindo que os aplicativos de terceiros definam cookies de maneira eficaz em navegadores compatíveis com o CHIPS. - Quando os cookies de terceiros são bloqueados:se o navegador do usuário bloquear cookies de terceiros, o aplicativo de terceiros será aberto em uma nova janela (primária). Isso evita problemas de abertura e garante a continuidade da operação, mesmo com restrições de 3PC.
- Quando os cookies de terceiros são permitidos:se o navegador do usuário permitir cookies de terceiros, o aplicativo continuará sendo aberto em iframes como antes.
Como visualizar a solução
A figura a seguir ilustra a solução. Ao herdar o domínio principal
da loja (merchant.example
), todos os aplicativos incorporados parecem ter origem
da mesma fonte. Isso faz com que todos os widgets sejam primários uns para os outros,
o que significa que as restrições de terceiros não são um fator. Como todos esses frames
se tornam primários entre si, os princípios de privacidade são os mesmos dos outros
cookies primários: eles só são acessíveis no contexto primário e
limitam o potencial de rastreamento entre sites.
Todos os serviços de terceiros que não são de propriedade de Tray usam o atributo Partitioned
para
definir cookies CHIPS, o que significa que eles também só são acessíveis no contexto em
que foram definidos e limitam o potencial de rastreamento entre sites.

Conclusão
- Não existe uma solução única para a privacidade na Web. Há muitas maneiras de alcançar experiências de usuário sem atrito e, ao mesmo tempo, preservar a privacidade.
- A consolidação de recursos no mesmo domínio de nível superior permite que os cookies funcionem mesmo com restrições de cookies de terceiros.
- O CHIPS pode ser uma solução mais fácil do que migrar todos os recursos para o mesmo site de nível superior.
- A solução Tray's é durável e funciona em vários navegadores. Como outros navegadores implementam suporte para CHIPS, ele pode ser considerado uma solução confiável entre navegadores para cenários como Tray's.