Um seletor de data de entrega mostra datas. A validação as impõe. No Shopify, validação é uma Cart and Checkout Validation Function: uma verificação que roda nos servidores do Shopify antes do pagamento e barra o pedido se a data estiver ausente, fechada ou lotada. Ela roda em todos os planos do Shopify e em todas as formas de chegar ao checkout, inclusive Shop Pay, Apple Pay e Comprar agora. Só um seletor exibido dentro da página de checkout exige o Plus.
Por que um seletor sozinho deixa passar datas inválidas
Um seletor na página do produto ou do carrinho é só uma exibição. Ele deixa em cinza as datas fechadas e lotadas no navegador do cliente, e nada além disso. Os pedidos ainda passam sem uma data válida quando:
- O cliente usa um botão expresso. Comprar agora, Shop Pay, Apple Pay e Google Pay na página do produto vão direto ao checkout, então o seletor do carrinho nunca roda. Veja Comprar agora pula a data de entrega.
- A data lotou enquanto ele pagava. O seletor mostrava "1 restante" quando a página carregou. Outra pessoa levou a vaga.
- O carrinho é de ontem. Ele escolheu uma data, voltou depois do corte e finalizou a compra.
- O carrinho lateral não mostra o seletor, ou o tema mudou e o bloco do seletor foi removido.
- Alguém edita a data de entrega do carrinho à mão ou com um script.
A opção gratuita do próprio Shopify, um seletor de data adicionado à página do carrinho com código do tema, tem a mesma lacuna: ela coleta uma data, mas nada a verifica no checkout.
As verificações que a validação de data de entrega deve fazer
Estas são as verificações que o OrderRules faz no checkout, com a mensagem que o cliente vê por padrão:
| Verificação | O que ela pega | Mensagem padrão |
|---|---|---|
| Data obrigatória | Nenhuma data, muitas vezes por Comprar agora ou Shop Pay | Escolha uma data de entrega antes de finalizar a compra. |
| Data permitida | Datas passadas, dentro do prazo mínimo ou após o corte, em um dia da semana em que você não entrega, além do seu horizonte de reservas | Essa data de entrega não está mais disponível. Escolha outra. |
| Data fechada | Uma data bloqueada, como um feriado | Não realizamos entregas na data selecionada. Escolha outra. |
| Dia lotado | A data atingiu o seu máximo de pedidos por data de entrega | A entrega em {date} está esgotada. Escolha outra data. |
| Faixa de horário | Nenhuma faixa escolhida, ou a faixa está lotada | Escolha um horário de entrega. / Esse horário de entrega está esgotado. Escolha outro. |
| Limite de produto por data | Mais unidades de um produto do que restam para aquela data | Only {n} left for delivery on {date}. Please reduce the quantity or choose another date. |
| Método | Itens só de retirada e só de entrega misturados, ou o método errado | Alguns itens no seu carrinho exigem métodos de processamento diferentes e não podem ser comprados juntos. |
| Retirada | Sem data, local ou horário de retirada; um dia ou faixa de retirada fechado ou lotado | Escolha uma data de retirada antes de finalizar a compra. (e mais cinco) |
Se a verificação de um app no checkout cobre só a primeira linha, ela barra pedidos sem data, mas não os que excedem a capacidade.
Três formas de ter validação no Shopify
1. Crie sua própria Function de validação. Um desenvolvedor escreve uma Cart and Checkout Validation Function que lê a data de entrega do carrinho e retorna um erro se ela não for permitida. Ela roda em todos os planos. Uma Function não consegue consultar um banco de dados enquanto roda, então as suas datas permitidas e as contagens de reservas precisam ser gravadas antes em um metafield e mantidas atualizadas. Esse é o grosso do trabalho. As Functions de validação do Shopify explicadas cobrem a mecânica.
2. Use um app de seletor de data com validação no checkout. Faça cinco perguntas antes de instalar:
- Ele usa uma Cart and Checkout Validation Function ou só JavaScript do tema?
- Ele barra pedidos de Comprar agora, Shop Pay e Apple Pay sem data?
- Em quais planos do Shopify a verificação roda?
- Ele reconfere datas e faixas lotadas no checkout ou só as esconde no seletor?
- Você pode editar as mensagens em todos os idiomas em que vende?
Nossa comparação de apps de seletor de data de entrega marca quais apps impõem a data no checkout e quais só a exibem.
3. No Shopify Plus, coloque o seletor dentro do checkout. Uma extensão de UI de checkout mostra o calendário na página de checkout, então quem usa pagamento expresso também o vê. Ainda é só uma exibição: combine-a com uma Function de validação, ou uma data pode ser pulada ou ficar desatualizada.
Configure no OrderRules
- No plano Advanced, abra sua regra de disponibilidade e ative Exigir uma data de entrega no checkout (e Exigir uma faixa de horário se você usa faixas).
- No Shopify, abra Configurações → Checkout, role até Regras de checkout e confira se a regra do OrderRules está ligada.
- Defina o que a validação verifica: Máximo de pedidos por data de entrega, Limite/dia em cada faixa de horário, limites de produto contados por Data de entrega e datas bloqueadas.
- Em Mensagens do checkout, edite qualquer mensagem ou aplique um pacote de idiomas.
- Teste sem data, com uma data fechada e com uma data lotada, pelo carrinho, por Comprar agora e pelo Shop Pay. Uma loja de desenvolvimento é o lugar mais seguro para testar primeiro.
O que a validação não pega
- Dois checkouts no mesmo segundo para a última vaga podem passar os dois. A validação lê o que está reservado; ela não mantém um bloqueio.
- Logo após um corte, uma data pode passar no checkout por um curto período até o app atualizar a lista de datas permitidas. O seletor na página tira a data imediatamente.
- Pedidos que pulam o checkout não são verificados: Shopify POS, renovações de assinatura, pedidos criados no admin e marcados como pagos, e pedidos de outros apps ou da Admin API. Eles ainda contam para os seus limites.
- Edições após a compra. Alterar a data de um pedido no admin do Shopify não é verificado e não move a vaga dele.
- CEPs e zonas. O OrderRules não confere o endereço. Para parar de entregar em uma área, deixe-a de fora das suas zonas de envio do Shopify.
Mais em compatibilidade e limitações conhecidas.