Ir para o conteúdo principal

Sistema de Produtos e Quotas no Pretix

Este tutorial explica em profundidade como funciona o sistema de Produtos (itens) e Quotas no Pretix, com foco em:

  • Como modelar ingressos e itens (produtos)
  • Como controlar capacidade (quotas)
  • Como isso afeta disponibilidade na loja, status de esgotado e check-in
  • Cenários reais, incluindo eventos únicos e séries de eventos / time slots

💡 Regra de ouro (gravíssima):
Nenhum produto aparece para venda se não estiver associado a pelo menos uma quota.
Produto sem quota é produto invisível e invendável.


🧩 Visão geral: Produtos x Quotas

🧾 Produtos (itens)

No Pretix, tudo o que pode ser vendido (ingresso, camiseta, refeição, pacote, credencial etc.) é chamado internamente de item (produto).

Exemplos de produtos:

  • Ingresso Inteira
  • Ingresso Meia-entrada
  • Ingresso Cortesia
  • Almoço no evento
  • Camiseta do evento
  • Pacote 3 dias (bundle)
  • Visita guiada em museu

Um produto define o que está sendo vendido e com quais características (nome, preço, variações, se dá direito de entrada, etc.).


📦 Quotas (capacidade)

Uma quota é um “pote de capacidade” que define quantas vezes um produto pode ser vendido.

  • É a quota que define “até quantos ingressos” podem ser vendidos.
  • Vários produtos podem consumir a mesma quota (ex.: inteira + meia + cortesia todos consumindo do mesmo auditório de 100 lugares).
  • Um produto pode estar em várias quotas (para regras mais avançadas, como early-bird por número de ingressos).

Exemplos:

  • Quota “Auditório – 200 lugares”

    • Produtos ligados: Inteira, Meia, Cortesia
    • Capacidade: 200
    • Quando a soma dos ingressos vendidos desses produtos chegar a 200, tudo esgota.
  • Quota “Meias limitadas – 50”

    • Produtos ligados: apenas Meia
    • Capacidade: 50
    • Meias esgotam em 50, mas o evento pode continuar vendendo Inteira se outra quota permitir.

🔗 Relação fundamental

  • Produtos dizem o que está à venda.
  • Quotas dizem quantos podem ser vendidos.
  • O Pretix só considera um produto disponível se:
    1. O produto estiver ativo e dentro do período de venda
    2. O produto estiver em pelo menos uma quota
    3. Todas as quotas associadas ao produto tiverem capacidade suficiente para a quantidade pedida.

Se qualquer dessas condições falhar, o produto aparece como esgotado, indisponível ou nem aparece na loja.


✅ Pré-requisitos para trabalhar com Produtos e Quotas

Antes de configurar produtos e quotas, é importante ter:

  1. Organizador criado

    • Ex.: eventos.ufsc.br / UFSC – Eventos Acadêmicos
    • Permissões: seu usuário precisa ter permissão para gerenciar eventos nesse organizador.
  2. Evento criado (singular ou série)

    • Evento singular (uma data, ou poucas datas concentradas)
    • Ou event series / time slot booking (muitas datas/horários, tipo visitas guiadas, museu, escape room).
  3. Acesso ao painel do evento

    • Você deve conseguir abrir o evento e ver o menu lateral com:
      • Produtos → Produtos
      • Produtos → Quotas
      • (Em séries: também Datas).

A partir disso, você pode configurar:

  • Primeiro os produtos
  • Depois as quotas
  • E por fim verificar a loja e o comportamento real no fluxo de compra.

🧾 Produtos em detalhes

📍 Onde configurar produtos

No painel do evento:

Evento → Produtos → Produtos

Nesta tela você vê a lista de produtos do evento e o botão Criar um novo produto.

A partir daí, cada produto terá suas próprias abas e opções.


🧱 Campos principais de um produto

Quando cria ou edita um produto, você terá campos típicos como:

  1. Nome

    • Nome visível para o cliente:
      • Ex.: Ingresso Inteira, Ingresso Meia-entrada, Camiseta P, Visita guiada.
  2. Descrição

    • Texto que aparece na página de venda (pode usar Markdown em muitos campos).
    • Use para explicar regras:
      • Ex.: “Válido mediante apresentação de carteira estudantil na entrada.”
  3. Preço padrão (default price)

    • Preço principal do produto (caso não seja sobrescrito por variações ou regras específicas).
  4. Imposto / Regra de imposto

    • Seleciona a regra de imposto aplicável (diferente por país/região, se configurado).
  5. Categoria

    • Agrupa produtos na loja (ex.: Ingressos, Oficinas, Merchandise).
  6. Produto de admissão (entrada)

    • Marca se o produto dá direito de entrada ao evento (ticket de acesso).
    • Produtos de merchandising normalmente não são de admissão.
  7. Limites por pedido

    • Mínimo / máximo de unidades que podem ser compradas em um único pedido.
    • Ex.: “Máximo 1 cortesia por pedido” ou “mínimo 5 ingressos para ingresso de grupo”.
  8. Período de disponibilidade (Available from / until)

    • Controla quando o produto aparece para venda:
      • Só a partir de certa data/hora
      • Até certa data/hora
    • Pode ser configurado:
      • No nível do produto (singular)
      • E, para séries de eventos, por data (subevento).
  9. Visibilidade / Regras de exibição

    • Alguns campos controlam se o produto aparece:
      • Somente com voucher
      • Apenas após esgotar outro produto (early-bird por quota)
      • Ocultar quando esgotado, etc.

🎚️ Variações de produto

Um produto pode ter variações, por exemplo:

  • Produto Camiseta com variações:
    • P, M, G
  • Produto Ingressos VIP com variações:
    • VIP Dia 1, VIP Dia 2, VIP 3 dias

Cada variação pode ter:

  • Nome próprio
  • Preço próprio
  • Disponibilidade própria
  • Associação de quotas específica (podendo ter quotas só para certas variações)

Isso é muito útil quando o conceito é o mesmo (camiseta, ingresso VIP), mas muda apenas tamanho/tipo.


➕ Add-ons e Bundles (visão rápida)

Os produtos ainda podem se relacionar entre si de formas mais avançadas:

  • Add-ons

    • Produtos adicionais que só podem ser comprados junto com outro produto.
    • Ex.: ingressos de Workshops como add-on do Ingresso Conferência.
  • Bundles (produtos em pacote)

    • Um produto “puxa” outros automaticamente, emitindo múltiplos ingressos.
    • Ex.: Pacote 3 dias que gera 3 ingressos (Dia 1, Dia 2, Dia 3), todos consumindo das quotas corretas.

O importante aqui, para este tutorial, é entender que add-ons e bundles também participam de quotas e consomem capacidade como qualquer produto.


📦 Quotas em detalhes

📍 Onde configurar quotas

No painel do evento:

Evento → Produtos → Quotas

Você verá:

  • Lista de quotas já existentes
  • Capacidade total de cada quota
  • Quantos lugares ainda estão disponíveis
  • Botão Criar uma nova quota

🧱 Campos principais de uma quota

Ao criar/editar uma quota, você terá campos típicos como:

  1. Nome da quota

    • Ex.: Auditório Principal – 200 lugares, Meias limitadas – 50, Camisetas estoque geral.
  2. Capacidade total (size)

    • Número máximo de unidades que podem ser vendidas no total para os produtos ligados àquela quota.
    • Pode ser:
      • Um número (ex.: 200)
      • Ou ilimitado (null), se você quiser que a quota nunca acabe.
  3. Produtos (items) associados

    • Lista de produtos que consomem dessa quota.
  4. Variações associadas (variations)

    • Caso você queira que apenas certas variações usem essa quota.
  5. Subevento (date / event series)

    • Em séries de eventos / time slots:
      • A quota pode ser ligada a uma data específica (subevent)
      • Ou valer para várias datas, dependendo da configuração.
  6. Fechar quando esgotar (close_when_sold_out)

    • Se ativado:
      • Quando a quota chegar a 0, ela fecha permanentemente até ser reaberta manualmente.
      • Mesmo que alguma capacidade seja liberada depois (por cancelamento, por exemplo), o sistema não volta a vender automaticamente.
  7. Quota fechada (closed)

    • Flag que indica se a quota está fechada (independente de sobrar capacidade).
    • Você pode fechar manualmente uma quota (parar vendas mesmo antes de esgotar).
  8. Liberar após saída (release_after_exit)

    • Usado em cenários com controle de entrada e saída (check-in + check-out):
      • Quando um ingresso é escaneado na saída, a quota pode recuperar aquela capacidade.
    • Útil para:
      • Museus, parques, feiras ou locais com limite simultâneo de pessoas, mas circulação ao longo do dia.
  9. Ignorar para disponibilidade do evento (ignore_for_event_availability)

    • Quando ativado:
      • A quota não é usada para determinar se o evento aparece como “esgotado” no calendário/listas.
    • Exemplo:
      • Quota de camisetas/merchandising: você não quer que o evento geral apareça como esgotado só porque a camiseta acabou.

🧮 Como o Pretix calcula disponibilidade

O Pretix calcula a disponibilidade de uma quota considerando diversos fatores. Conceitualmente, ele faz algo como:

Capacidade disponível = capacidade total – (pedidos + carrinhos + vouchers bloqueantes + lista de espera ± check-out)

Mais precisamente, para cada quota, ele leva em conta:

  • Pedidos pagos
  • Pedidos pendentes ainda dentro do prazo de pagamento
  • Itens atualmente reservados em carrinhos (carrinho não finalizado)
  • Vouchers configurados como “quota blocking”
  • Pessoas na lista de espera, quando considerado
  • Ingressos com check-out (quando release_after_exit está ativo)

Quando a capacidade calculada chega a zero:

  • A quota é tratada como esgotada, e
  • Qualquer produto que dependa dessa quota não pode mais ser vendido.

Se a quota for ilimitada, ela é sempre tratada como disponível (a menos que esteja manualmente fechada, ou fechada após esgotar e close_when_sold_out esteja ativado).


🔗 Ligando Produtos e Quotas (passo a passo)

1️⃣ Criar produtos

  1. Acesse Evento → Produtos → Produtos
  2. Crie todos os produtos necessários:
    • Inteira, Meia, Cortesia
    • ou Ingresso Dia 1, Ingresso Dia 2, etc.
  3. Verifique:
    • Campo de preço
    • Se é produto de admissão
    • Período de venda (opcional)

Até aqui, mesmo que o produto esteja “ativo”, ele não será vendável sem quota.


2️⃣ Criar quotas

  1. Acesse Evento → Produtos → Quotas
  2. Clique em Criar uma nova quota
  3. Defina:
    • Nome (ex.: Auditório – 200 lugares)
    • Capacidade (ex.: 200)
    • Marque todos os produtos que consumirão essa quota (ex.: Inteira, Meia, Cortesia)
  4. Salve.

Neste momento:

  • Todos os produtos marcados passam a compartilhar a mesma capacidade.
  • Quando a soma das vendas (considerando carrinho/pedidos/etc.) atingir 200, a quota esgota.

3️⃣ Regra de múltiplas quotas por produto

Você pode ter múltiplas quotas associadas ao mesmo produto.

  • O produto só é vendável se todas as quotas associadas estiverem com capacidade suficiente.
  • Esse recurso é usado para modelar:
    • Early-bird por número de ingressos
    • Múltiplos limites sobre o mesmo produto (ex.: um limite geral + limite só para ingressos subsidiados).

Exemplo simplificado:

  • Quota Geral – 200
  • Quota Meias limitadas – 50
  • Produto Meia está nas duas quotas.

Comportamento:

  • Enquanto ambas tiverem capacidade, Meia é vendida.
  • Se Meias limitadas chegar a 0, mesmo que Geral – 200 ainda tenha capacidade, Meia não pode mais ser vendida (porque uma das quotas está esgotada).
  • Inteira pode continuar sendo vendida se estiver apenas na quota Geral.

🧪 Cenários de modelagem prática

🎭 Cenário 1: Auditório com Inteira e Meia

  • Capacidade física do auditório: 200 pessoas
  • Você não sabe quantas serão inteiras ou meias.

Modelagem:

  • Produtos:
    • Ingresso Inteira
    • Ingresso Meia-entrada
  • Quota:
    • Auditório – 200 lugares
    • Capacidade: 200
    • Produtos ligados: Inteira e Meia

Efeito:

  • A soma de Inteiras + Meias nunca passa de 200.
  • O Pretix decide automaticamente a mistura, conforme as vendas.

🎟️ Cenário 2: Limitando número de meias

  • Capacidade do auditório: 200
  • No máximo 50 ingressos de meia.

Modelagem:

  • Quota Auditório – 200
    • Produtos: Inteira, Meia
    • Capacidade: 200
  • Quota Meias – 50
    • Produtos: Meia apenas
    • Capacidade: 50

Efeito:

  • Enquanto houver:
    • Capacidade na quota Auditório – 200 e
    • Capacidade na quota Meias – 50,
    • Meia está disponível.
  • Quando a quota Meias – 50 chega a 0:
    • Meia esgota (sem impactar as inteiras, se ainda houver vaga no auditório).
  • Inteira continua vendendo até a quota Auditório – 200 chegar a 0.

🛍️ Cenário 3: Merchandising que não afeta “evento esgotado”

Você quer vender camisetas, mas não quer que o evento pareça esgotado se acabarem as camisetas.

Modelagem:

  • Produto Camiseta
  • Quota Camisetas – estoque
    • Capacidade: quantidade de camisetas em estoque
    • ignore_for_event_availability: ativado

Efeito:

  • A loja marca a camiseta como esgotada quando a quota zerar.
  • Mas o evento em si ainda pode aparecer como disponível no calendário, se as quotas de ingressos ainda tiverem capacidade.

🧷 Cenário 4: Pacote 3 dias (bundle)

  • Você tem ingressos Dia 1, Dia 2, Dia 3.
  • Quer vender:
    • Ingressos individuais de cada dia
    • Um pacote 3 dias, que emite 3 ingressos individuais (um por dia).

Modelagem simplificada:

  • Produtos:
    • Ingresso Dia 1, Ingresso Dia 2, Ingresso Dia 3 (admission)
    • Pacote 3 dias (não-admission, com bundle configurado)
  • Bundles:
    • No produto Pacote 3 dias, configure um bundle que adiciona:
      • 1× Dia 1
      • 1× Dia 2
      • 1× Dia 3
  • Quotas:
    • Pode haver quotas gerais por dia ou gerais para todos os dias, dependendo da lotação.

Efeito:

  • Ao comprar Pacote 3 dias, o Pretix gera 3 ingressos individuais.
  • Cada ingresso consome capacidade das quotas corretas.
  • Check-in e controle de acesso ficam coerentes (um ticket por dia).

⏱️ Produtos e quotas em séries de eventos / time slots

Quando o evento é criado como “Event series or time slot booking”, você passa a ter:

  • Uma página Datas no menu do evento
  • Cada data é um subevento, com:
    • Nome próprio
    • Data e hora
    • Local e textos próprios
    • Preços e quotas específicos por data

🧱 Produtos em séries

  • Os produtos são definidos no nível da série (não por data individual).
  • Para cada data você pode:
    • Mudança de preço para aquele dia
    • Desabilitar o produto naquela data
    • Ajustar período de venda específico (Available from/until por data).

📦 Quotas em séries

  • Cada data (subevento) pode ter suas próprias quotas:
    • Ex.: Sala 101 – Segunda 10h, Sala 101 – Quarta 10h, etc.
  • Uma quota pode ter o campo subevent apontando para uma data específica.

Exemplo: time slots de museu

  • Produto: Ingresso Museu – 1 pessoa
  • Série de eventos com várias datas/horários (time slots).
  • Para cada data/horário:
    • Quota Museu – 10h com capacidade 30
    • Quota Museu – 11h com capacidade 30, etc.

Efeito:

  • O cliente escolhe o horário e vê apenas as vagas daquele time slot.
  • Cada horário tem seu próprio controle de capacidade.

🛒 Produtos, quotas e o fluxo de compra

1️⃣ Exibição na loja

Para que um produto apareça na loja como disponível para compra, o Pretix verifica:

  1. Evento ativo e em período de venda
  2. Produto:
    • Ativo
    • Dentro do período de disponibilidade (Available from / until)
    • Não escondido por regra de visibilidade
  3. Quotas:
    • O produto está em pelo menos uma quota
    • Todas as quotas associadas têm capacidade suficiente para a quantidade pedida.

Se algo falhar:

  • Produto pode aparecer como:
    • Não listado
    • Listado, mas esgotado
    • Com aviso de indisponibilidade

2️⃣ Reserva no carrinho

Quando o cliente adiciona um produto ao carrinho:

  • O Pretix verifica as quotas e reserva temporariamente a capacidade.
  • Esses itens no carrinho entram como “cart positions” na contagem de disponibilidade.
  • Se o cliente não finalizar a compra dentro do tempo de reserva:
    • A reserva expira
    • A capacidade volta a ser disponibilizada.

3️⃣ Criação do pedido e pagamento

Ao finalizar o pedido:

  • As quotas continuam reservadas enquanto o pedido está:
    • Pago, ou
    • Pendente dentro do prazo de pagamento.
  • Se o prazo expira sem pagamento, o sistema libera a quota.
  • Se o pagamento chega depois e a quota ainda tiver capacidade, o Pretix aceita o pagamento; se não tiver, podem ocorrer erros ou o pagamento ser bloqueado, dependendo da situação e da configuração.

4️⃣ Check-in e quotas

Por padrão:

  • O check-in não diminui nem aumenta a quota (a quota já foi consumida na venda).

Com release_after_exit configurado na quota:

  • Ao registrar saída do participante (scan de saída):
    • A quota pode recuperar aquela capacidade.
  • Útil para:
    • Ambientes com limitação de pessoas simultâneas, mas alta rotatividade.

Importante:
Esse tipo de uso exige configuração correta das listas de check-in e dos tipos de scan (entrada/saída).


⚠️ Erros comuns e como evitar

  1. Produto não aparece na loja

    • Causas comuns:
      • Produto não está em nenhuma quota
      • Quota está fechada ou com capacidade zero
      • Período de venda do produto ainda não começou ou já terminou
      • Produto marcado como oculto ou dependente de voucher.
  2. Evento aparece como “esgotado”, mas ainda há produtos

    • Causa provável:
      • Quotas de produtos secundários (ex.: merchandise) estão influenciando a disponibilidade global.
    • Solução:
      • Ativar ignore_for_event_availability nas quotas que não deveriam marcar o evento como esgotado.
  3. Meia esgotada antes do esperado

    • Causa:
      • Configuração de quotas incorreta (ex.: meia em quota muito pequena ou em múltiplas quotas restringindo demais).
    • Solução:
      • Verificar quais quotas estão associadas ao produto Meia e suas capacidades.
  4. Time slots mostrando capacidade estranha

    • Causa:
      • Quotas de uma data ligadas à data errada ou a nenhuma data (subevent incorreto).
    • Solução:
      • Revisar quotas em Eventos de série → Datas e checar o campo de subevento de cada quota.

✅ Boas práticas de configuração

  1. Use uma quota geral por espaço físico

    • Ex.: Auditório X – 200 pessoas
    • Adicione nela todos os ingressos que consomem aquele espaço.
  2. Use quotas extras para categorias limitadas

    • Ex.: quota só para Meias, quota só para Cortesia, etc.
    • Lembre: isso restringe ainda mais o produto – ele depende da quota geral e da quota específica.
  3. Separar ingressos de admissão e merchandise

    • Ingressos de entrada devem ter quotas que controlam participação.
    • Itens como camisetas podem usar quotas com ignore_for_event_availability ativado.
  4. Em séries de eventos / time slots, pense por data

    • Quotas devem refletir a capacidade por horário/data, não só o total da série inteira.
    • Use a tela Datas para ajustar preços e disponibilidade por data.
  5. Testar sempre com um evento de homologação

    • Crie um evento de teste.
    • Monte produtos e quotas como se fosse o evento real.
    • Simule:
      • Carrinho cheio
      • Vário tipos de ingressos
      • Cancelamentos e expiração de pedidos
    • Veja como isso afeta a disponibilidade antes de abrir vendas de verdade.

📚 Referências

Documentação oficial do Pretix que aprofunda e confirma os comportamentos descritos aqui:

  • Produtos e quotas (guia de produtos):
    • https://docs.pretix.eu/guides/products/
    • https://docs.pretix.eu/tutorial/products/
  • Conceitos e terminologia (itens, quotas, disponibilidade):
    • https://docs.pretix.eu/dev/development/concepts.html
  • API de itens e categorias (definição técnica de produtos, categorias, bundles, add-ons):
    • https://docs.pretix.eu/dev/api/resources/items.html
    • https://docs.pretix.eu/dev/api/resources/categories.html
    • https://docs.pretix.eu/dev/api/resources/item_add-ons.html
    • https://docs.pretix.eu/dev/api/resources/item_bundles.html
  • API de quotas e cálculo de disponibilidade:
    • https://docs.pretix.eu/dev/api/resources/quotas.html
  • Modelo de dados e checagem de quotas (implementação interna):
    • https://docs.pretix.eu/dev/development/implementation/models.html
  • Séries de eventos / datas (subeventos e quotas por data):
    • https://docs.pretix.eu/guides/event-series/
  • Descontos, múltiplos níveis de preço, bundles avançados e relação com quotas:
    • https://docs.pretix.eu/guides/products/discounts/