# Gerador de sorteios para lojas

Crie uma roleta, raspadinha ou caixa surpresa. Demonstração local ou API própria, sem serviço de entrega de prêmios.

> Página canônica: https://elysiatools.com/pt/tools/store-promotion-giveaway-widget-generator

- **Categoria:** Design

- **Palavras-chave:** Gerador de sorteios para lojas, Roleta, Raspadinha, Caixas surpresa

## Visão geral

## Estúdio de campanhas

Crie uma roleta, raspadinha ou caixa surpresa. Demonstração local ou API própria, sem serviço de entrega de prêmios.

- Componente: Roleta / Raspadinha / Caixas surpresa
- Tema: Minimalismo costeiro / Doce pop / Fliperama retrô / Ouro noturno / Papel festivo / Esboço de jardim

### Origem do resultado

Sorteios locais são demonstrações editáveis, não entregas seguras. Ofertas no código são públicas. Sem controle de estoque, identidade ou repetição.

Seu servidor controla autenticação, chances, estoque, elegibilidade e idempotência. Nunca insira chaves secretas. A prévia não chama a API.

### Guia de integração da API

Este é um contrato de interface, não um serviço de sorteios da Elysia. Implemente POST /api/draw no servidor com os mesmos IDs de campanha e prêmios e informe o endpoint. Baixe e hospede os arquivos em HTTPS para testar sorteios reais; o editor apenas simula.

#### Requisição · POST application/json

O widget envia apenas version, campaignId e um requestId hexadecimal aleatório de 32 caracteres. Não envia cliente, probabilidades ou chave API. O servidor identifica o participante; requestId não é credencial de acesso.

```json
{
  "version": 1,
  "campaignId": "summer-boutique",
  "requestId": "0123456789abcdef0123456789abcdef"
}
```

#### Sucesso · 200 application/json

Retorne requestId sem alterações. prizeId deve existir na lista, inclusive para resultado sem prêmio. Opcionais: receiptId (≤200 caracteres), claim.code (≤300), claim.url (HTTPS, ≤2048). Omita campos não usados, sem null. Sem camada data/result; até 16 KiB. Falha não significa perder o sorteio.

```json
{
  "requestId": "0123456789abcdef0123456789abcdef",
  "prizeId": "p1",
  "receiptId": "draw_2026_001",
  "claim": {
    "code": "SAMPLE-ONLY",
    "url": "https://shop.example/redeem"
  }
}
```

IDs dos prêmios configurados:

- `p1`: 10% de desconto
- `p2`: Frete grátis
- `p3`: Presente surpresa
- `p4`: Fica para a próxima

Prefira hospedar o widget e /api/draw na mesma origem (protocolo, host e porta), com proxy reverso se necessário. Caminhos relativos usam a página do widget, não a loja externa. credentials: same-origin envia apenas cookies da mesma origem. Não há configuração de Authorization ou cabeçalhos personalizados. Outra origem exige CORS para o widget e OPTIONS para POST + Content-Type; não envia cookies entre origens. HTML estático não basta para sorteios autenticados; iframes também podem bloquear cookies de terceiros.

O servidor autentica, valida Origin/CSRF e elegibilidade, limita participações e frequência, usa suas próprias probabilidades e reserva estoque junto com o resultado em uma transação. Persista idempotência por participante + campaignId + requestId, retornando o mesmo resultado nas tentativas. Resgate e validade ficam no servidor. Dados do navegador não provam direito ao prêmio; nunca publique segredos.

Rejeite com status não 2xx adequado (ex.: 401/403/409/429/503). O widget mostra mensagem genérica, não o erro do servidor. Há timeout de 15 segundos; redirecionamentos, JSON inválido, requestId diferente, prêmios desconhecidos e links inseguros são rejeitados. Tentar novamente mantém o ID apenas nesta página; recarregar gera outro, então os limites devem persistir. Sem repetição automática ou prêmio local alternativo.

A prévia continua ativa com API ou hospedagem incompleta. Corrija os campos marcados para exportar; erros de prêmios ou estilo mantêm a última prévia válida.

### Exportar e incorporar

HTML / CSS / JavaScript / JSON. Hospede os arquivos em seu site HTTPS e cole a URL. Esta ferramenta não publica nem hospeda campanhas.

Imagens opcionais são carregadas dos sites HTTPS no navegador. O editor não armazena imagens nem chaves API.

Setores iguais são apenas visuais; a demo usa as probabilidades indicadas. No modo API, o servidor decide.

## Entradas

- **Configuração JSON** (textarea)

## Quando usar

- Ao criar campanhas promocionais gamificadas (roleta, raspadinha ou caixas surpresa) hospedadas na sua própria infraestrutura web sem dependência de serviços externos.
- Ao prototipar e validar o visual de dinâmicas promocionais no navegador com probabilidades simuladas antes de desenvolver a lógica de backend.
- Ao conectar uma interface de sorteio ao seu servidor seguro via POST /api/draw para controlar autenticação, limite de tentativas, estoque e cupons reais.

## Como funciona

- Configure o JSON da campanha definindo o tipo de componente (roleta, raspadinha ou caixa surpresa), tema visual, textos e a lista de prêmios.
- Defina a origem do sorteio entre o modo local (simulação demonstrativa no navegador) ou o modo API (requisições enviadas ao endpoint do seu servidor).
- Exporte os arquivos gerados (HTML, CSS, JavaScript e JSON) e hospede-os em seu domínio seguro sob HTTPS para incorporar à loja.

## Casos de uso

- Lojas virtuais implementando uma roleta de descontos de boas-vindas integrada à API própria para validação de cupons.
- Campanhas sazonais com raspadinhas digitais auto-hospedadas para engajar clientes durante liquidações sem custos de plataformas terceiras.
- Prototipação de mecânicas de caixas surpresa por equipes de design e marketing antes da implementação das rotas seguras no backend.

## Perguntas frequentes

### A ferramenta hospeda as campanhas ou gerencia a entrega de prêmios?

Não. A ferramenta gera o código do widget para você auto-hospedar em HTTPS, e o controle de prêmios e estoque deve ser gerido pelo seu servidor.

### Qual a diferença entre o modo local e o modo API?

O modo local simula o sorteio no próprio navegador para fins visuais; o modo API faz requisições POST ao seu backend para decidir o prêmio de forma segura.

### O que o widget envia ao servidor no modo API?

Envia um JSON contendo apenas version, campaignId e um requestId hexadecimal exclusivo de 32 caracteres para controle de idempotência.

### É possível usar o modo local para campanhas reais com cupons restritos?

Não é recomendável. No modo local, os prêmios e lógicas ficam públicos no código do navegador, sem controle de estoque, identidade ou prevenção a fraudes.

### Posso incluir cabeçalhos personalizados ou chaves de API secretas no widget?

Não. O widget utiliza cookies de mesma origem (credentials: same-origin) e não aceita cabeçalhos customizados nem chaves privadas na configuração.

## Ferramentas relacionadas

- [Gerador de cascata de tokens de cor](https://elysiatools.com/pt/tools/color-token-cascade-generator): Transforma um hex principal em uma cascata completa de tokens, variaveis CSS e JSON de Style Dictionary
- [De paleta de imagem para design tokens](https://elysiatools.com/pt/tools/image-to-design-tokens): Extrai cores dominantes da imagem por k-means e exporta como variáveis CSS / SCSS / config Tailwind / tokens JSON, com nomes e escala de tons
- [Gerador de Snippets de Requisicoes API](https://elysiatools.com/pt/tools/api-request-code-snippet-generator): Gera cURL e snippets em linguagens comuns a partir de URL, metodo, cabecalhos, query e corpo da requisicao
- [Planejador de migracao CSV para banco de dados](https://elysiatools.com/pt/tools/csv-to-database-migration-planner): Infere um schema relacional a partir de CSV e gera planos CREATE TABLE e ALTER para PostgreSQL, MySQL, SQLite ou SQL Server
- [Gerador PDF de treino fitness](https://elysiatools.com/pt/tools/fitness-workout-pdf-generator): Gera um PDF imprimivel de treino a partir de JSON ou CSV com tabelas, caixas de progresso e QR opcionais
- [Estúdio de README de perfil GitHub](https://elysiatools.com/pt/tools/github-profile-readme-studio): Gere um README de perfil completo — banner, ladrilhos de estatísticas, mapa de calor, skyline 3D e cartões de projetos — assados uma vez em assets SVG estáticos e tematizáveis. Sem serviços de badges que podem cair.
- [OpenAPI para Postman Collection](https://elysiatools.com/pt/tools/openapi-to-postman-collection): Converte uma spec OpenAPI 3.x ou Swagger 2.0 (JSON/YAML) em uma Postman Collection v2.1.0 importável com pastas, variáveis, auth e respostas de exemplo.
- [Gerador de OpenAPI para TypeScript](https://elysiatools.com/pt/tools/openapi-to-typescript-generator): Converte especificacoes OpenAPI ou Swagger em JSON/YAML em tipos TypeScript, parametros de requisicao e modelos de resposta com formato de saida e estilo de nomes configuraveis

## Exemplos

- [Exemplos de Rastreamento Distribuído](https://elysiatools.com/pt/samples/distributed-tracing-samples): Exemplos completos de rastreamento distribuído usando Jaeger, OpenTelemetry e ferramentas modernas de observabilidade
- [Exemplos AWS EventBridge](https://elysiatools.com/pt/samples/eventbridge-samples): Exemplos AWS EventBridge incluindo event buses, regras, targets, schema registry, eventos personalizados e roteamento de eventos entre contas para arquitetura serverless event-driven
- [Exemplos JWT](https://elysiatools.com/pt/samples/jwt-samples): Exemplos completos de JWT da estrutura básica de tokens às implementações de segurança avançadas
- [Exemplos PDF](https://elysiatools.com/pt/samples/pdf-samples): Exemplos PDF gerados por ferramentas de 2026-02-01 a 2026-02-10

## Conteúdo relacionado

- [Revisão e entrega de um componente de sorteio auto-hospedado](https://elysiatools.com/pt/hubs/self-hosted-giveaway-widget-review-and-embed-handoff): Revise configuração, exemplos de respostas, legibilidade e visualização responsiva antes de entregar os arquivos e as evidências de integração do sorteio.
