Eventos

Lista completa de eventos de webhook.

Eventos disponibles

EventoDescripcionDatos
client.registeredNuevo cliente registradoclientId, externalId, email
client.tier_upCliente sube de tierclientId, externalId, oldTier, newTier, tierName
game.playedJugada ejecutadacampaignId, sessionId, externalUserId, won
game.wonUsuario gana un juegocampaignId, sessionId, externalUserId, prizeCode
code.redeemedCodigo canjeadocode, externalUserId, discountType, discountValue
points.earnedPuntos ganadosclientId, externalId, amount, action, newBalance
points.spentPuntos gastadosclientId, externalId, amount, reason, newBalance
inapp_game.playedGiro genuino en un mini-juego in-app (ruleta)notificationId, gameId, clientId, awardId, segmentId, segmentLabel, isPrize, segmentExternalId, spinPeriod, quotaPeriod
inapp_game.wonGiro cuyo gajo ganador esta marcado como premio (isPrize: true)notificationId, gameId, clientId, awardId, segmentId, segmentLabel, isPrize, segmentExternalId, spinPeriod, quotaPeriod
inapp_game.prize_fulfilledEl premio de un giro quedo CUMPLIDO: SouthGames emitio el codigo configurado para el gajo ("Codigo del premio" en el editor). Solo en emision genuinamente nueva — el replay de un codigo ya emitido no re-avisanotificationId, clientId, awardId, segmentId, segmentLabel, codeId, code

Wildcard

Usa * para suscribirte a todos los eventos actuales y futuros.

Ejemplo: game.played

{
  "event": "game.played",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "campaignId": "campaign_abc",
    "campaignName": "Ruleta de Verano",
    "sessionId": "session_xyz",
    "externalUserId": "user_123",
    "won": true,
    "prizeCode": "SG-AB2C-XY9Z"
  }
}

Ejemplo: client.tier_up

{
  "event": "client.tier_up",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "clientId": "abc123",
    "externalId": "user_123",
    "oldTier": 2,
    "newTier": 3,
    "tierName": "Oro"
  }
}

Ejemplo: points.earned

{
  "event": "points.earned",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "clientId": "abc123",
    "externalId": "user_123",
    "amount": 10,
    "action": "game_play",
    "newBalance": 150
  }
}

Ejemplo: inapp_game.won

inapp_game.played usa exactamente el mismo data — la unica diferencia es que se emite en cada giro genuino (gane o no), mientras que inapp_game.won solo se dispara cuando el gajo ganador tiene isPrize: true. Usa awardId como clave de idempotencia: el dispatcher puede reintentar la entrega y llegar a enviar el mismo evento mas de una vez. segmentExternalId es el identificador externo que definiste para el gajo en el editor de la ruleta (tu SKU / id de campana), o null si la opcion no lo declara. No confundir con el externalId de los eventos de cliente (id externo del usuario); segmentExternalId es el codigo del gajo declarado en el editor.

{
  "event": "inapp_game.won",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "notificationId": "notif_abc123",
    "gameId": "ruleta",
    "clientId": "abc123",
    "awardId": "2025-01-15_abc123",
    "segmentId": "seg_2",
    "segmentLabel": "20% Descuento",
    "isPrize": true,
    "segmentExternalId": "DESC20",
    "spinPeriod": "2025-01-15",
    "quotaPeriod": "2025-01"
  }
}