Para que um preço promocional seja lido com a data certa, declare a janela da oferta nos dois lugares onde ela vive: no feed, com sale_price_effective_date, e na página, com validFrom mais validThrough ou priceValidUntil no schema. Inclua horário e fuso. É o que a documentação do Google recomenda.
A Black Friday de 2026 cai em 27 de novembro. Faltam menos de seis semanas, e este é o período em que o preço mais muda dentro de um catálogo de eletrônicos. Este guia fecha a janela da promoção em cinco passos.
Por que a janela da promoção importa para a IA?
Uma promoção sem data é uma etiqueta de papel colada na prateleira: ninguém sabe quando ela deveria ter sido arrancada. Quem lê a página, seja uma pessoa, um robô de busca ou um assistente que compara ofertas, precisa adivinhar se aquele valor ainda é o preço corrente.
A documentação de listagens de comerciante do Google dá um sinal de que a data é lida e tem consequência: ela avisa que a listagem pode não ser exibida se priceValidUntil indicar uma data passada. Ou seja, uma data vencida esquecida no código pode tirar o produto da vitrine justamente depois da promoção.
Um limite honesto: essa documentação trata do Google. Nós não sabemos como cada assistente de IA usa essas datas, e o diagnóstico gratuito da Citoriq, uma análise experimental via API, não replica a interface de consumo do ChatGPT. O que dá para afirmar é que declarar a janela é higiene de dado: custa pouco, é verificável e evita que o preço da página e o do feed discordem no pior dia do ano. Já falamos dessa discordância em auditoria de preço e estoque entre feed, página e IA.
Passo 1: monte uma tabela única de promoções
Antes de mexer em código, reúna numa planilha uma linha por SKU com seis campos: preço regular, preço promocional, início, fim, fuso e canal. Use a mesma planilha como fonte para o feed e para a página. Quando cada equipe digita a data por conta própria, aparecem duas Black Fridays diferentes.
No Brasil, escreva o fuso de Brasília (-03:00). Parece detalhe, e o próximo passo mostra por quê.
Passo 2: como preencher a janela no feed?
O atributo sale_price_effective_date usa o padrão ISO 8601, com início e fim separados por uma barra, cada um com horário e fuso. O formato da documentação do Merchant Center é este: 2016-02-24T13:00-0800/2016-02-29T15:30-0800. Para a Black Friday em horário de Brasília, ficaria algo como 2026-11-27T00:00-0300/2026-11-30T23:59-0300.
Duas regras da própria documentação merecem atenção. Se você omitir o horário, a promoção começa à meia-noite da data de início e termina às 23h59 da data de fim. Se omitir o fuso, o Google assume UTC.
Aqui está a armadilha brasileira: meia-noite em UTC corresponde a 21h do dia anterior em Brasília. Uma promoção cadastrada sem fuso para começar em 27 de novembro, na leitura do Google, começa na noite de 26. O inverso vale para o fim. A recomendação oficial é simples: informe horário e fuso sempre.
O atributo é opcional e só faz sentido em produtos que também têm sale_price. A documentação não detalha o que acontece quando ele falta ou expira, então não prometa nenhum comportamento: trate a janela como declaração de intenção e confira o resultado no Merchant Center.
Passo 3: como declarar a janela no schema da página?
No JSON-LD de Offer, o price deve ser o preço promocional corrente. Junto dele entram validFrom, com a data de início, e validThrough ou priceValidUntil para o fim. A documentação pede para usar uma ou outra propriedade de fim, não as duas.
As boas práticas listadas são três: informe início e fim; garanta que o início seja anterior ou igual ao fim; e inclua horário e fuso.
Para mostrar o preço riscado, a documentação usa um UnitPriceSpecification com priceType igual a https://schema.org/StrikethroughPrice e o preço regular. Há também a variante com duas especificações de preço dentro de priceSpecification: uma para o preço promocional, com validFrom e validThrough, e outra para o riscado. Nesse formato, atenção: priceValidUntil não se aplica ao PriceSpecification, então use validThrough.
Se você mantém variantes por voltagem ou cor, repita a janela em cada variante que entra na promoção. Veja o raciocínio de entidade em dados de oferta: preço, frete e devolução.
Passo 4: o que o cliente vê precisa bater com o que o código diz
O schema descreve a página; ele não a substitui. O preço visível, a data de término comunicada no banner e o valor do JSON-LD devem coincidir. Se a sua loja destaca o desconto no Pix, decida qual é o preço principal da oferta e mantenha a mesma regra na página, no feed e no schema. Descrevemos o problema em desconto no Pix: o preço que a IA precisa enxergar.
Passo 5: agende o fim da promoção
A etapa que mais falha não é a de começar, é a de terminar. Combine três rotinas:
- Uma tarefa que, no horário de fim, volta o
priceao valor regular e removevalidFromevalidThroughdo período vencido. - Uma checagem manual na manhã seguinte, com uma amostra de SKUs, em feed e página.
- Uma revisão no Merchant Center para ver se algum item recebeu aviso.
Se a promoção for prorrogada, atualize as duas pontas antes do horário original de fim. Prorrogar só na vitrine e esquecer o schema recria o problema que a data veio resolver.
O que levar daqui
- Declare início e fim da promoção no feed e no schema, sempre com horário e fuso.
- No Brasil, informe -03:00: sem fuso, o Google assume UTC e a oferta começa na noite anterior.
- Use
validThroughoupriceValidUntilnoOffer, nunca as duas, e sóvalidThroughdentro dePriceSpecification. - Agende o fim da promoção com o mesmo cuidado que o começo: data vencida pode tirar a listagem da vitrine.
Perguntas frequentes
Posso usar validThrough e priceValidUntil juntos?
A documentação diz para usar uma ou outra propriedade. Dentro de PriceSpecification, só validThrough se aplica.
Preciso do sale_price_effective_date se já uso schema?
São dois canais diferentes. O atributo vale para o feed no Merchant Center; o schema vale para a página. Declare nos dois para que contem a mesma história.
Declarar a janela garante que a IA cite minha oferta?
Não. A janela organiza o dado e evita contradições. Se o assistente recomenda ou não o produto depende de modelo, prompt e dia, e prontidão de página não é o mesmo que ser recomendado. Nossa metodologia separa as duas coisas.
Quer ver como o preço e a oferta de um produto seu aparecem hoje para a IA antes da Black Friday? Rode o diagnóstico gratuito da Citoriq: é uma análise experimental, mas mostra onde página e feed se contradizem.