Testes A/B da página de produto
Lê quais testes A/B estão rodando para o visitante, com a versão dele em cada um, e registra que ele viu o teste.
A loja pode comparar duas versões de um elemento da página de produto para ver qual vende mais. Um teste A/B (experimento) tem um elemento testado, uma variante a (o que existe hoje) e uma variante b (o valor novo). O servidor decide a variante de cada visitante com uma conta fixa sobre o id do teste e o id do visitante: o mesmo visitante cai sempre na mesma variante, em qualquer aparelho em que esteja logado. A porcentagem que vai para a b é configurada pela loja.
Os elementos testáveis são um conjunto fechado de quatro: cta_label (texto do botão de compra), social_proof_badges (selos de prova social), price_history_badge (selo do histórico de preço) e reviews_position (posição das avaliações). As conversões (adicionar ao carrinho, pedido, receita) são contadas pelo servidor; o front-end só informa que o visitante viu o teste.
Quem é o visitante: o cliente logado (pelo token) ou, sem login, o valor do cabeçalho X-Session-ID.
Ler os testes ativos
/api/v1/storefront/pdp-experiments/activeAutenticadaConsulta os testes A/B em andamento e a variante do visitante
Devolve todos os testes em andamento e, para cada um, a variante deste visitante. Sem identificação do visitante (nem token, nem X-Session-ID), a lista vem vazia: não é erro. A resposta tem Cache-Control: private, max-age=60.
Cabeçalhos
AuthorizationstringBearer <token> do cliente logado. Opcional.X-Session-IDstringExemplo de requisição
curl "$BASE_URL/api/v1/storefront/pdp-experiments/active" \
-H "X-Session-ID: $SESSION_ID"Resposta
{
"experiments": [
{
"id": "9d1f4c1e-2b3a-4a58-8e0b-3f2a6d5b7c10",
"element_key": "cta_label",
"variant": "b",
"variant_b_value": "Quero esse!"
}
]
}Na loja de teste não havia testes em andamento, e a resposta real foi {"experiments":[]}. O exemplo acima ilustra o formato.
Campos da resposta
experimentsarrayexperiments[].iduuid{id} de Registrar exposição.experiments[].element_keystringcta_labelsocial_proof_badgesprice_history_badgereviews_positionexperiments[].variantstringabexperiments[].variant_b_valuestringb (por exemplo, o novo texto do botão). Use quando variant for b; na a, mantenha o seu valor atual.Erros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha ao ler | {"error":"failed to resolve experiments","detail":"..."} |
Registrar que o visitante viu o teste
/api/v1/storefront/pdp-experiments/{id}/exposureAutenticadaRegistra que o visitante viu um teste A/B
Grava o evento "exposição": o visitante foi exposto a este teste, na variante que o servidor calcula para ele. Chame uma vez por sessão e teste, quando o elemento testado aparece. É idempotente: repetir não duplica. Se o teste não está em andamento (terminou, parou ou ainda é rascunho), a resposta é 200 mas nada é gravado. Sem corpo.
Parâmetros de caminho
iduuidobrigatórioexperiments[].id).Cabeçalhos
AuthorizationstringBearer <token> do cliente logado. Opcional.X-Session-IDstringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/storefront/pdp-experiments/$EXPERIMENT_ID/exposure" \
-H "X-Session-ID: $SESSION_ID"Resposta
{ "ok": true }Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Sem token e sem X-Session-ID | {"error":"experiment id and subject required"} |
| 404 | O teste não existe | {"error":"experiment not found"} |
| 500 | id que não é UUID | {"error":"failed to record exposure","detail":"o valor \"xyz\" não é um uuid válido. ..."} |