Produtos fora do CD como indisponíveis
Como adaptar o template da loja quando a regionalização de vitrine passa a exibir — em vez de esconder — os produtos que não estão nos centros de distribuição da região do cliente.
Em lojas com Regionalização de Vitrine ou parceiros, a configuração ExibirProdutosForaCdComoIndisponivel define o tratamento dado aos produtos que não pertencem a nenhum centro de distribuição (CD) da região do cliente: removê-los do resultado ou retorná-los marcados como indisponíveis.
Comportamento
A região do cliente é resolvida pelo partnerAccessToken, que carrega a lista de CDs. O tratamento dos produtos fora desses CDs depende da configuração:
| Configuração desligada (padrão) | Configuração ligada | |
|---|---|---|
| Busca, hotsites e vitrines | Produto não retorna | Produto retorna com available: false |
| Página de produto (PDP) | Retorna 404 | Retorna 200, com available: false |
| Ordenação | — | Produto é rebaixado, junto dos indisponíveis reais |
totalCount e facetas | Não contabilizam o produto | Contabilizam o produto |
| Avise-me | Indisponível, a página não carrega | Disponível na PDP |
Escopo da marcação
A marcação altera apenas o campo available. stock, stocks, variantStock, preOrder, guaranteedPreOrder e prices continuam com os valores vindos do índice. Um produto fora do CD pode apresentar stock > 0 e available: false simultaneamente — available é a fonte de verdade para disponibilidade de compra.
A marcação só reduz disponibilidade, nunca concede: produto que já vinha available: false permanece false.
Condições de ativação
O comportamento novo se aplica quando as duas condições são verdadeiras na requisição:
- a configuração está ligada na loja; e
- o
partnerAccessTokenenviado resolve ao menos um CD.
Requisição sem partnerAccessToken não é regionalizada e não sofre marcação.
Escopo por operação
| Operação | Efeito |
|---|---|
product | Marcação aplicada |
products | Marcação aplicada |
search | Marcação aplicada |
hotsite e multi-hotsite | Marcação aplicada |
autocomplete | Marcação aplicada quando retorna produtos |
Filtros de estoque por CD dentro de filters | Sem alteração — continuam filtrando |
| Endpoints de exportação (ETL) | Sem alteração — continuam filtrando |
Configuração
Disponível no Admin da loja, nas configurações da loja, como "Exibe produtos fora do CD do parceiro ou região como indisponível".
| Chave | Tipo | Padrão |
|---|---|---|
ExibirProdutosForaCdComoIndisponivel | Boolean | False |
Pré-requisito
Exibir-Produtos-Indisponiveis precisa estar true. Com essa configuração em false, a loja recebe produtos marcados como indisponíveis por estarem fora do CD, enquanto os indisponíveis reais permanecem ocultos. A combinação não é bloqueada, mas o resultado é incoerente.
Propagação
A configuração leva até 1 hora para propagar, tanto ao ligar quanto ao desligar. Não há reindexação envolvida em nenhum dos sentidos.
Ordem de ativaçãoA ativação altera o retorno da API para toda a loja. Publique as alterações de template antes de ligar a configuração.
Alterações necessárias no template
1. Enviar o partnerAccessToken
Obtenha o token a partir do CEP informado pelo cliente e persista na sessão:
query PartnerByRegion {
partnerByRegion(input: { cep: "80010-000" }) {
partnerAccessToken
name
}
}Envie o mesmo token em todas as queries de produto e na mutation de Avise-me. Sem ele, nenhum comportamento de regionalização se aplica.
2. Busca, hotsites e vitrines
query Busca($termo: String!, $token: String) {
search(query: $termo, partnerAccessToken: $token) {
products(first: 24) {
totalCount
edges {
node {
productId
productName
available
prices { price }
}
}
}
productAggregations {
filters { field values { name quantity } }
}
}
}No card de produto, quando available for false:
- exibir selo ou tarja de indisponibilidade com contraste próprio, não apenas opacidade;
- desabilitar add-to-cart rápido e compra direta do spot;
- manter o card clicável — é o acesso à PDP onde o Avise-me está.
Valores que mudam com a configuração ligada:
| Campo | Mudança | Tratamento |
|---|---|---|
totalCount | Passa a incluir os produtos fora do CD | Revisar exibições de "N resultados" e "Página X de Y". A paginação por cursor não é afetada. |
| Facetas | Podem listar valores que só existem fora do CD, com contagem | Sem tratamento no front |
| Faixas de preço | Mínimo e máximo podem alargar | Sem tratamento no front |
A ordenação escolhida pelo cliente (preço, nome, lançamento, relevância) continua sendo aplicada dentro de cada grupo: primeiro os disponíveis na região, depois os demais.
3. Página de produto
query Pdp($productId: Long!, $token: String) {
product(productId: $productId, partnerAccessToken: $token) {
productId
productVariantId
productName
available
prices { price listPrice }
images(width: 600, height: 600) { url }
}
}Com available: false, renderizar a página completa — imagens, descrição, ficha técnica e dados de SEO — substituindo apenas o bloco de compra por:
- mensagem de indisponibilidade regional, citando o CEP informado;
- formulário de Avise-me com o
productVariantIdda variante exibida; - ação para alterar o CEP;
- botão de compra removido ou desabilitado, não apenas esmaecido.
Remover do template qualquer redirecionamento ou renderização de página de erro condicionada à indisponibilidade do produto. Esse tratamento anula a entrega.
SEO
- Manter status 200 e a URL canônica.
- Não aplicar
noindexcondicionado à indisponibilidade. - No structured data, manter a marcação de produto e definir a oferta como
https://schema.org/OutOfStockenquanto indisponível na região.
4. Avise-me
A assinatura da mutation não mudou. O partnerAccessToken vincula o cadastro ao parceiro da região e define a regra de disparo.
mutation AviseMe($input: RestockAlertInput!, $token: String, $recaptcha: String) {
productRestockAlert(
input: $input
partnerAccessToken: $token
recaptchaToken: $recaptcha
) {
productVariantId
email
requestDate
}
}{
"input": { "productVariantId": 172190, "name": "Ana", "email": "[email protected]" }
}Regra de disparo:
| Cadastro | Notificação enviada quando |
|---|---|
Com partnerAccessToken | Houver saldo em algum CD que atenda a faixa de CEP da região do parceiro |
Sem partnerAccessToken | A variante tiver estoque disponível, em qualquer CD |
A variante precisa estar ativa no cadastro para qualquer disparo. O formulário deve operar no mesmo contexto de CEP da página: alterada a região, os próximos cadastros valem para a nova região.
Referência da mutation: ProductRestockAlert.
Checklist
-
partnerAccessTokenenviado em todas as queries de produto e na mutation de Avise-me - Decisões de compra baseadas em
available, não emstock,stocksouvariantStock - Redirecionamentos e páginas de erro por indisponibilidade removidos da PDP
- Bloco de indisponibilidade regional e formulário de Avise-me implementados na PDP
- Estado de indisponibilidade no card de vitrine, com add-to-cart desabilitado
- Contadores de resultado e paginação revisados
- PDP em 200, sem
noindexcondicional, oferta comoOutOfStockno structured data -
Exibir-Produtos-Indisponiveisemtrue - Template publicado antes da ativação da configuração
- Janela de 1 hora considerada na validação
Updated about 6 hours ago

