Pré-Venda (Pre-Order) no Storefront

A pré-venda permite vender produtos ainda não disponíveis em estoque, com uma data de lançamento prevista. O cliente pode comprar antecipadamente e o pedido é identificado como pré-venda ao longo de todo o fluxo.

Do ponto de vista da API GraphQL do Storefront, a pré-venda é exposta por campos adicionais em queries já existentes — não há query nova. Estes campos permitem que a loja:

  • identifique produtos/variantes em pré-venda e se ela é garantida;
  • exiba a data de lançamento (mínima/máxima) na vitrine, no produto e no carrinho;
  • filtre produtos por pré-venda garantida;
  • sinalize no pedido que ele é de pré-venda e mostre a data de liberação por envio.

Regra geral: todos os campos de pré-venda são anuláveis. Retornam null (ou false, quando booleano de estoque) quando o produto/pedido não é de pré-venda.


Mapa rápido — Query × campos

QueryOnde (caminho)Campos de pré-venda
products / product / searchnó do produtopreOrder, guaranteedPreOrder, productGuaranteedPreOrder, minimumPreOrderDate, maximumPreOrderDate
products (filtro)filtersguaranteedPreOrder
products / productstocks (estoque por CD)preOrder, preOrderStock, allowsPreOrder, releaseDate
productattributeSelections.selectedVariantguaranteedPreOrder
checkoutproductsminimumPreOrderDate, maximumPreOrderDate
checkoutorders.deliveryreleaseDate
customerorders.items (pedido)isPreVenda
customerorders.items.shippings (envio)releaseDate

1. Produto (products / product / search)

Campos no produto

CampoTipoDescrição
preOrderBooleanIndica se o produto está disponível para pré-venda.
guaranteedPreOrderBooleanIndica se a pré-venda da variante é garantida.
productGuaranteedPreOrderBooleanIndica se a pré-venda do produto é garantida.
minimumPreOrderDateDateTimeData mínima de lançamento entre os itens em pré-venda.
maximumPreOrderDateDateTimeData máxima de lançamento entre os itens em pré-venda.

Filtro por pré-venda garantida

No argumento filters da query products:

FiltroTipoDescrição
guaranteedPreOrderBooleanRetorna apenas variantes cuja pré-venda é garantida.

Estoque por centro de distribuição (stocks)

CampoTipoDescrição
preOrderBooleanIndica se o estoque deste CD está em pré-venda.
preOrderStockIntQuantidade de estoque de pré-venda neste CD.
allowsPreOrderBooleanIndica se este CD permite pré-venda.
releaseDateDateTimeData de lançamento dos produtos em pré-venda neste CD, quando disponível.

Exemplo

query {
  products(first: 10, filters: { guaranteedPreOrder: true }) {
    nodes {
      productId
      productName
      preOrder
      guaranteedPreOrder
      productGuaranteedPreOrder
      minimumPreOrderDate
      maximumPreOrderDate
      stocks {
        distributionCenterId
        preOrder
        preOrderStock
        allowsPreOrder
        releaseDate
      }
    }
  }
}
Mostrar resposta
{
  "data": {
    "products": {
      "nodes": [
        {
          "productId": 123014,
          "productName": "Produto Pré-Venda Exemplo",
          "preOrder": true,
          "guaranteedPreOrder": true,
          "productGuaranteedPreOrder": true,
          "minimumPreOrderDate": "2026-08-01T00:00:00",
          "maximumPreOrderDate": "2026-08-15T00:00:00",
          "stocks": [
            {
              "distributionCenterId": 1,
              "preOrder": true,
              "preOrderStock": 50,
              "allowsPreOrder": true,
              "releaseDate": "2026-08-15T00:00:00"
            }
          ]
        }
      ]
    }
  }
}

Variante selecionada (attributeSelections.selectedVariant)

O campo guaranteedPreOrder também está disponível na variante retornada pelo seletor de atributos da query product:

query {
  product(productId: 123014) {
    productName
    attributeSelections {
      selectedVariant {
        productVariantId
        guaranteedPreOrder
      }
    }
  }
}

2. Carrinho (checkout)

Produtos do carrinho (products)

CampoTipoDescrição
minimumPreOrderDateDateTimeData mínima de lançamento dos produtos em pré-venda.
maximumPreOrderDateDateTimeData máxima de lançamento dos produtos em pré-venda.

Entrega do pedido (orders.delivery)

CampoTipoDescrição
releaseDateDateTimeData de lançamento dos produtos do envio, quando é pré-venda.

Exemplo

query {
  checkout(checkoutId: "02f9aa7a-7832-4664-8e5a-21741aa82133") {
    products {
      productVariantId
      name
      minimumPreOrderDate
      maximumPreOrderDate
    }
    orders {
      delivery {
        name
        releaseDate
      }
    }
  }
}
Mostrar resposta
{
  "data": {
    "checkout": {
      "products": [
        {
          "productVariantId": 354312,
          "name": "Produto Pré-Venda Exemplo",
          "minimumPreOrderDate": "2026-08-01T00:00:00",
          "maximumPreOrderDate": "2026-08-15T00:00:00"
        }
      ],
      "orders": [
        {
          "delivery": {
            "name": "Transportadora Padrão",
            "releaseDate": "2026-08-15T00:00:00"
          }
        }
      ]
    }
  }
}

3. Pedido do cliente (customer)

No pedido (orders.items)

CampoTipoDescrição
isPreVendaBooleanIndica se o pedido é de pré-venda (pedido com data de lançamento).

No envio do pedido (orders.items.shippings)

CampoTipoDescrição
releaseDateDateTimeData de lançamento dos produtos em pré-venda naquele envio.

Exemplo

query($customerAccessToken: String) {
  customer(customerAccessToken: $customerAccessToken) {
    orders {
      items {
        orderId
        date
        isPreVenda
        shippings {
          shippingName
          releaseDate
        }
      }
      totalCount
    }
  }
}
Mostrar resposta
{
  "data": {
    "customer": {
      "orders": {
        "items": [
          {
            "orderId": 471797,
            "date": "2026-06-23T16:00:00.000-03:00",
            "isPreVenda": true,
            "shippings": [
              {
                "shippingName": "Transportadora Padrão",
                "releaseDate": "2026-08-15T00:00:00"
              }
            ]
          }
        ],
        "totalCount": 1
      }
    }
  }
}

O campo isPreVenda também está disponível na consulta de um pedido específico (customer { order(orderId: ...) { isPreVenda } }) e nos pedidos de assinatura do cliente.


Boas práticas de uso

  • Vitrine de lançamentos: use preOrder + minimumPreOrderDate/maximumPreOrderDate para exibir selo de pré-venda e contagem regressiva.
  • Pré-venda garantida: diferencie guaranteedPreOrder (variante) de productGuaranteedPreOrder (produto) ao decidir a comunicação de garantia de entrega.
  • Carrinho: a releaseDate da entrega reflete o item de pré-venda daquele carrinho — trate null como envio sem pré-venda.
  • Pós-compra: use isPreVenda para rotular o pedido na área do cliente e shippings.releaseDate para informar a data de liberação por envio.