# Generador de sorteos para tiendas

Diseña y exporta una ruleta, tarjeta para rascar o caja sorpresa. Demostración local o API propia; sin premios alojados.

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

- **Categoría:** Design

- **Palabras clave:** Generador de sorteos para tiendas, Ruleta, Rasca y gana, Cajas sorpresa

## Descripción general

## Estudio de campañas

Diseña y exporta una ruleta, tarjeta para rascar o caja sorpresa. Demostración local o API propia; sin premios alojados.

- Componente: Ruleta / Rasca y gana / Cajas sorpresa
- Tema: Minimalista costero / Caramelo pop / Arcade retro / Oro nocturno / Papel festivo / Boceto de jardín

### Origen del resultado

El sorteo local es modificable y no asigna premios de forma segura. Las ofertas del código son públicas. Sin control de stock, identidad ni repetición.

Tu servidor gestiona autenticación, probabilidades, stock, elegibilidad e idempotencia. No introduzcas claves secretas. La vista previa no llama a la API.

### Guía de integración de la API

Es un contrato de interfaz, no un servicio de sorteos de Elysia. Implementa POST /api/draw en tu servidor con los mismos IDs de campaña y premios, e introduce el endpoint. Descarga y aloja los archivos en HTTPS para probar sorteos reales; el editor solo los simula.

#### Solicitud · POST application/json

El widget solo envía version, campaignId y un requestId hexadecimal aleatorio de 32 caracteres. No envía identidad, probabilidades ni claves API. El servidor debe identificar al participante; requestId no es una credencial.

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

#### Éxito · 200 application/json

Devuelve el mismo requestId. prizeId debe existir en la lista, también para resultados sin premio. Opcionales: receiptId (≤200 caracteres), claim.code (≤300), claim.url (HTTPS, ≤2048). Omite campos sin usar, no envíes null. Sin envoltorio data/result y máximo 16 KiB. Un fallo no equivale a no ganar.

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

IDs de premios configurados:

- `p1`: 10% de descuento
- `p2`: Envío gratis
- `p3`: Regalo sorpresa
- `p4`: Otra vez será

Aloja el widget y /api/draw en el mismo origen (protocolo, host y puerto), con proxy inverso si hace falta. Las rutas se resuelven desde el widget, no desde la tienda contenedora. credentials: same-origin solo envía cookies del mismo origen. No admite Authorization ni cabeceras personalizadas. Otro origen requiere CORS para el widget y OPTIONS para POST + Content-Type; no recibe cookies entre orígenes. Un HTML estático no basta para sorteos autenticados; los iframes pueden sufrir bloqueo de cookies.

El servidor autentica, valida Origin/CSRF y elegibilidad, limita participaciones y frecuencia, decide con sus propias probabilidades y reserva stock junto con el resultado en una transacción. Guarda idempotencia por participante + campaignId + requestId y devuelve el mismo resultado al reintentar. Canje y caducidad se controlan en servidor. No confíes en datos del navegador como prueba ni publiques secretos.

Rechaza solicitudes con un estado no 2xx (p. ej., 401/403/409/429/503). El widget muestra un mensaje genérico, no el error del servidor. Expira a los 15 segundos y rechaza redirecciones, JSON inválido, requestId distinto, premios desconocidos o enlaces inseguros. Reintentar conserva el ID pendiente solo en esta página; recargar crea otro, por lo que los límites deben persistir. No hay reintento automático ni premio local de respaldo.

La vista previa sigue activa con API o alojamiento incompletos. Corrige los campos marcados para exportar; errores de premios o estilo conservan la última vista válida.

### Exportar e insertar

HTML / CSS / JavaScript / JSON. Aloja los archivos en tu sitio HTTPS y pega la URL. Esta herramienta no publica ni aloja campañas.

Las imágenes opcionales se cargan desde sus sitios HTTPS. El editor no guarda imágenes ni claves API.

Los sectores iguales son visuales; las probabilidades rigen la demo. En modo API decide el servidor.

## Entradas

- **Configuración JSON** (textarea)

## Cuándo usarlo

- Al preparar campañas estacionales o promociones de fidelización que requieran mecánicas interactivas de sorteo.
- Al necesitar una interfaz desacoplada donde el servidor propio controle inventario, probabilidades y reglas de negocio.
- Al evaluar rápidamente el diseño visual, textos y paletas de colores antes de exportar el código estático a producción.

## Cómo funciona

- Edita la configuración JSON principal ajustando identificadores de campaña, componentes visuales, temas y la lista de premios.
- Previsualiza la apariencia y el comportamiento interactivo en modo local o define el endpoint para sorteos vía API.
- Valida la coherencia de los identificadores de premios y la suma de probabilidades antes de generar el paquete exportable.
- Exporta el código autónomo (HTML, CSS, JS y JSON) para alojarlo directamente en tu infraestructura bajo HTTPS.

## Casos de uso

- Creación de cupones de descuento interactivos en tiendas de comercio electrónico durante periodos de rebajas.
- Prototipado rápido de interfaces de gamificación para equipos de marketing y diseño frontend.
- Integración segura de dinámicas de sorteo con inventarios y programas de fidelización gestionados por backends propietarios.

## Preguntas frecuentes

### ¿Esta herramienta aloja los premios o ejecuta los sorteos en sus servidores?

No. La herramienta no aloja campañas ni servicios de premios; solo genera el código estático que debes alojar en tu propio servidor HTTPS.

### ¿Qué diferencia existe entre el modo local y el modo API?

El modo local realiza simulaciones editables en el navegador sin seguridad, mientras que el modo API delega la validación, probabilidades y stock a tu servidor mediante POST.

### ¿Qué datos envía el widget al servidor durante una tirada en modo API?

Envía exclusivamente un objeto JSON con version, campaignId y un requestId hexadecimal aleatorio de 32 caracteres, sin cookies de terceros ni credenciales.

### ¿Es necesario que el widget y la API compartan el mismo origen?

Es recomendable para enviar cookies con same-origin; de lo contrario, el servidor debe habilitar CORS, gestionar preflights OPTIONS y prescindir de cookies entre dominios.

### ¿Qué ocurre si la llamada a la API falla o devuelve un error HTTP?

El widget muestra un mensaje genérico de resultado no confirmado, no aplica premios de respaldo locales y permite reintentar con el mismo identificador de petición.

## Herramientas relacionadas

- [Generador de cascada de color tokens](https://elysiatools.com/es/tools/color-token-cascade-generator): Convierte un hex principal en escalas de color, tokens semanticos, variables CSS y JSON de Style Dictionary
- [De paleta de imagen a design tokens](https://elysiatools.com/es/tools/image-to-design-tokens): Extrae los colores dominantes de una imagen con k-means y expórtalos como variables CSS / SCSS / configuración Tailwind / tokens JSON, con nombres y escala de tonos
- [Generador de Snippets de Solicitudes API](https://elysiatools.com/es/tools/api-request-code-snippet-generator): Genera cURL y snippets de lenguajes comunes a partir de una URL, metodo, headers, query y body
- [Planificador de migracion CSV a base de datos](https://elysiatools.com/es/tools/csv-to-database-migration-planner): Infiere un schema relacional desde CSV y genera planes CREATE TABLE y ALTER para PostgreSQL, MySQL, SQLite o SQL Server
- [Generador PDF de entrenamiento fitness](https://elysiatools.com/es/tools/fitness-workout-pdf-generator): Genera un PDF imprimible de entrenamiento desde JSON o CSV con tablas, casillas de progreso y QR opcionales
- [Estudio de README de perfil de GitHub](https://elysiatools.com/es/tools/github-profile-readme-studio): Genera un README de perfil completo — banner, tiles de estadísticas, mapa de calor, horizonte 3D y tarjetas de proyectos — horneados una vez en activos SVG estáticos y tematizables. Sin servicios de insignias que puedan caerse.
- [OpenAPI a Postman Collection](https://elysiatools.com/es/tools/openapi-to-postman-collection): Convierte una spec OpenAPI 3.x o Swagger 2.0 (JSON/YAML) en una Postman Collection v2.1.0 importable con carpetas, variables, auth y respuestas de ejemplo.
- [Generador de OpenAPI a TypeScript](https://elysiatools.com/es/tools/openapi-to-typescript-generator): Convierte especificaciones OpenAPI o Swagger en JSON/YAML a tipos TypeScript, parametros de solicitud y modelos de respuesta con formato y nombres configurables

## Ejemplos

- [Muestras de Trazado Distribuido](https://elysiatools.com/es/samples/distributed-tracing-samples): Ejemplos completos de trazado distribuido usando Jaeger, OpenTelemetry y herramientas de observabilidad modernas
- [Ejemplos de AWS EventBridge](https://elysiatools.com/es/samples/eventbridge-samples): Ejemplos de AWS EventBridge incluyendo buses de eventos, reglas, objetivos, registro de esquemas, eventos personalizados y enrutamiento de eventos entre cuentas para arquitectura serverless event-driven
- [Muestras JWT](https://elysiatools.com/es/samples/jwt-samples): Ejemplos completos de JWT desde la estructura básica de tokens hasta implementaciones de seguridad avanzadas
- [Muestras PDF](https://elysiatools.com/es/samples/pdf-samples): Muestras PDF generadas por herramientas 2026-02-01 a 2026-02-10

## Contenido relacionado

- [Revisión e integración de un componente de sorteos autoalojado](https://elysiatools.com/es/hubs/self-hosted-giveaway-widget-review-and-embed-handoff): Revisa la configuración, las respuestas de ejemplo, la legibilidad y el diseño adaptable antes de entregar los archivos y las pruebas de integración del sorteo.
