Las notificaciones de experiencia son una forma para que los usuarios que han optado por participar de 13 años o más se mantengan al tanto de sus juegos favoritos mediante notificaciones personalizadas y oportunas. Como desarrollador, puedes determinar qué tipos de actividades dentro del juego son más importantes para notificar a tus usuarios, así como definir el contenido de la notificación.


El sistema de notificaciones de experiencia incluye lo siguiente:
Notificaciones personalizables con parámetros — Total flexibilidad para personalizar el mensaje de notificación con parámetros, por ejemplo:
¡Tu huevo de ganso dorado ha eclosionado!¡Allie @LaterSk8er1 acaba de superar tu récord en la pista de Tokyo Tour!Datos de lanzamiento — Incluye datos de lanzamiento opcionales que pueden ser leídos a través de Player:GetJoinData() cuando el destinatario de la notificación se une. Esto podría implicar llevar a un usuario a una ubicación de coordenadas o personalizar su experiencia de ingreso.
Soporte de analíticas — Rastrea tu audiencia alcanzable y el rendimiento de tus notificaciones en el Panel del creador.
Requisitos de elegibilidad
In order to use the APIs to send notifications, the game must meet the following base criteria:
- Minimum 100 visits since launch.
- The game must not be under moderation.
- You as the developer must have permission to manage the game.
Directrices de uso
Las notificaciones deben ser personalizadas para el receptor y deben basarse en la actividad en el juego que sea específicamente relevante para el usuario. Inversamente, las notificaciones no deben tener un carácter genérico o publicitario.
Idealmente, las notificaciones también deben alertar a los usuarios sobre algo en lo que pueden tomar acción inmediata. Evita las notificaciones puramente informativas que no incitan a una respuesta o acción directa.
Todo el contenido y comportamiento de las notificaciones están sujetos a los Estándares de la Comunidad de Roblox y a la filtración de texto en toda la plataforma, independientemente de las directrices de edad de tu juego. Esto significa que si tu juego es para mayores de 17 años, tus notificaciones siguen estando sujetas a los estándares generales de la plataforma, no a los Estándares de Políticas de 17+.
El contenido de las notificaciones no está permitido incorporar patrones oscuros u otras tácticas que manipulen o engañen a los usuarios para que tomen decisiones que no tienen intención de hacer o que pueden ir en contra de sus mejores intereses. Esto podría incluir lo siguiente:
Anuncios Disfrazados — Notificaciones que están intencionalmente disfrazadas como contenido orgánico, pero que en realidad son publicidad. Por ejemplo, supón que hacer clic en la siguiente notificación lleva a Petz World pero no se muestra ninguna "información importante".
Acciones Bajo Presión de Tiempo — Notificaciones que presionan a los usuarios a hacer clic, suscribirse, consentir o comprar aplicando una falsa presión de tiempo.
Ceñirse a un Tenga o Cambie con Artículos Gratis u Otras Recompensas — Notificaciones que dicen falsamente a los usuarios que recibirán algo gratis cuando no es así. Por ejemplo, al hacer clic en la siguiente notificación, queda claro que se requiere algo más para obtener el regalo.
Engañar a los Usuarios para que Compren — Notificaciones que engañan a los usuarios para que realicen compras no deseadas. Por ejemplo, supón que hacer clic en la siguiente notificación lleva directamente a un sistema de compras precargado con artículos que el usuario no eligió comprar.
Los juegos no deben requerir que los usuarios activen las notificaciones para participar o avanzar en el juego.
Implementación
La implementación de las notificaciones de experiencia comienza con crear una cadena de notificación e incluir el paquete en tu proyecto. Una vez que estos estén configurados, puedes enviar notificaciones con parámetros personalizados opcionales.
Alternativamente, puedes usar la API de Open Cloud para activar notificaciones a través de solicitudes API en formato libre.
Crear una cadena de notificación
As with Player Invite Prompts, you must create and edit your notification strings in the Creator Dashboard. No hay ninguna cadena de notificación de juego predeterminada, así que este paso es obligatorio.
Navigate to the Creator Dashboard.
Similar to badges, notification strings are tied to a specific game. Locate that game's thumbnail and click on it.
In the left column, under Engagement, click Notifications.
In the center region, click the Create a Notification String button.
Fill in an identifier name (only visible to you) and the custom notification string; this is limited to 99 characters and can include unlimited custom parameters. Notifications will automatically use the title of your game as the notification title, but you can additionally use {experienceName} to reference your game in the notification body text.
Example notification strings:
¡Estás a {numQuests} misiones de completar el desafío semanal!¡Tu {eggName} ha eclosionado! Ven a conocer a tu nueva mascota.¡Ganaste {numRaces} carreras esta semana y desbloqueaste la pista {racetrackName}!{userId-friend} acaba de superar tu récord en la pista Tokyo Tour! ¿Es hora de la venganza?When ready, click the Create Notification String button.
On the notifications page, in the table of notifications, click the ⋯ button in the Actions column and select Copy Asset ID.
Use the copied ID for the messageId key value in the payload table as demonstrated in the example script.
Incluir el paquete
Para implementar las notificaciones de experiencia, debes obtener el paquete de Luau de la Tienda de Creadores.
Desde el menú Ventana de Studio o la barra de herramientas de la pestaña Inicio, abre la Caja de Herramientas y selecciona la pestaña Tienda de Creadores.

Asegúrate de que la clasificación de Modelos esté seleccionada, luego haz clic en el botón Ver Todos para Categorías.

Localiza y haz clic en el mosaico Paquetes.
Localiza el módulo Open Cloud y haz clic en él, o arrástralo y suéltalo en la vista en 3D.

En la ventana del Explorador, mueve el modelo completo OpenCloud a ServerScriptService.
Enviar una notificación de experiencia
Una vez que hayas creado una cadena de notificación e incluido el paquete en tu proyecto, puedes enviar notificaciones desde scripts del lado del servidor. Las notificaciones se entregarán a usuarios de más de 13 años que optaron por recibirlas a través de su flujo de notificaciones de Roblox, momento en el cual pueden unirse a la experiencia directamente a través del botón Unirse en la notificación y aparecer según tus datos de lanzamiento.

Para enviar una notificación básica a un usuario específico, incluye el ID del activo de la cadena de notificación en el campo messageId del payload, luego llama a la función createUserNotification con el Player.UserId del destinatario y los datos de la solicitud.
local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- En el payload, "messageId" es el valor del ID del activo de la notificación
local userNotification = {
payload = {
messageId = "5dd7024b-68e3-ac4d-8232-4217f86ca244",
type = "MOMENT"
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
endPersonalizar notificaciones usando parámetros
Para personalizar la notificación para cada destinatario, puedes incluir parámetros en la cadena de notificación, luego personalizar los parámetros al llamar a la API. Por ejemplo, puedes definir la cadena de notificación como:
Luego, establece los parámetros userId-friend y points en el script:
local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
local userIdFriendParam = {int64Value = 3702832553}
local pointsParam = {stringValue = "5"}
-- En el payload, "messageId" es el valor del ID del activo de la notificación
-- En este ejemplo, la cadena de notificación es "{userId-friend} ¡superó tu puntuación más alta por {points} puntos! ¿Es hora de subir de nivel?"
local userNotification = {
payload = {
messageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1",
type = "MOMENT",
parameters = {
["userId-friend"] = userIdFriendParam,
["points"] = pointsParam
}
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
endPedir a los usuarios que habiliten notificaciones
Para animar a los usuarios a habilitar notificaciones para tu experiencia, puedes mostrar un aviso de permiso dentro de la experiencia a usuarios de 13 años o más usando el método ExperienceNotificationService:PromptOptIn().

Puedes activar el aviso en cualquier contexto adecuado dentro de tu experiencia que justifique una notificación futura. El texto del aviso no es personalizable y es estandarizado en todas las experiencias.
El modal no aparecerá si el usuario:
- Es menor de 13 años.
- Ya ha habilitado notificaciones para tu experiencia.
- Ya ha visto el aviso de permiso para tu experiencia en los últimos 30 días.
Para pedir a los usuarios que habiliten notificaciones, primero debes determinar si el usuario es elegible. Una vez confirmado, puedes mostrar el aviso de permiso al usuario.
- Llama a ExperienceNotificationService:CanPromptOptInAsync(), envuelto en un pcall() ya que es una llamada de red asincrónica que puede fallar ocasionalmente.
- Si el usuario puede ser avisado, llama a ExperienceNotificationService:PromptOptIn().
local ExperienceNotificationService = game:GetService("ExperienceNotificationService")
-- Función para verificar si el jugador puede ser avisado para habilitar notificaciones
local function canPromptOptIn()
local success, canPrompt = pcall(function()
return ExperienceNotificationService:CanPromptOptInAsync()
end)
return success and canPrompt
end
local canPrompt = canPromptOptIn()
if canPrompt then
local success, errorMessage = pcall(function()
ExperienceNotificationService:PromptOptIn()
end)
end
-- Escuchar el evento de cierre del aviso de opt-in
ExperienceNotificationService.OptInPromptClosed:Connect(function()
print("Aviso de opt-in cerrado")
end)Incluir datos de lanzamiento y analíticas
Para mejorar aún más la experiencia del usuario, puedes incluir datos de lanzamiento en la notificación, útil para escenarios como llevar a los usuarios a una ubicación de coordenadas o personalizar la experiencia de ingreso. Además, puedes incluir datos de analíticas para segmentar el rendimiento de diferentes categorías de notificaciones. Por favor, consulta también el ejemplo de Avisos de invitación al jugador sobre cómo establecer y usar los datos de lanzamiento.
local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- En el payload, "messageId" es el valor del ID del activo de la notificación
local userNotification = {
payload = {
messageId = "5dd7024b-68e3-ac4d-8232-4217f86ca244",
type = "MOMENT",
joinExperience = {
launchData = "Test_Launch_Data"
},
analyticsData = {
category = "Test_Analytics_Category"
}
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
endSistema de entrega
Un sistema de prevención de spam existe para garantizar la calidad de las notificaciones para los usuarios y proteger el canal de notificación compartido para todos los desarrolladores. Debido a esto, la entrega de notificaciones no está garantizada. Este sistema de prevención de spam se informa directamente por el compromiso de los usuarios: cuanto más interactúan los usuarios con tus notificaciones, mayor alcance recibirán. Puedes rastrear de manera transparente las métricas de compromiso en el panel de análisis, como se explica a continuación.
Las notificaciones de experiencias tienen un límite de throttling estático; cada usuario puede recibir una notificación por día de una experiencia dada, y recibes comentarios transparentes cuando se alcanza el límite de throttling de un usuario.
Además, la siguiente lista detalla algunos de los casos especiales que pueden resultar en no entrega de una notificación:
- No se cumplen los requisitos de elegibilidad de la experiencia.
- El destinatario no ha aceptado recibir notificaciones de tu experiencia.
- Se ha alcanzado el límite de throttling del destinatario para tu experiencia.
- Se ha alcanzado el límite de throttling diario agregado del destinatario.
- Faltan o son inválidos los parámetros de solicitud.
- La cadena de notificación fue moderada.
- Para las notificaciones con menciones de usuario, la no entrega ocurre si se cumple alguna de estas condiciones:
- El receptor y el usuario mencionado no son amigos.
- El usuario mencionado ha seleccionado No para "¿Actualizar a amigos sobre mi actividad?" en Privacidad → Otras Configuraciones en su configuración de cuenta de Roblox.
Analíticas
Performance of your notifications and notifiable audience are displayed in the Analytics tab of the Notifications page where you configure notification strings (simply tab from Creations to Analytics).
- Navigate to the Creator Dashboard.
- Similar to badges, notification strings are tied to a specific game. Locate that game's thumbnail and click on it.
- In the left column, under Engagement, click Notifications.
- On the target page, click the Analytics tab to switch to the analytics dashboard.
Resumen de notificaciones
La sección de resumen sirve como una instantánea del rendimiento agregado de tus notificaciones. Se requiere un mínimo de 100 impresiones agregadas para mostrar las estadísticas de rendimiento.

| Estadística | Descripción |
|---|---|
| Usuarios suscritos | El número total de usuarios que han activado las notificaciones para tu juego. Ten en cuenta que esto incluye usuarios menores de 13 años que solo pueden recibir notificaciones de actualizaciones de experiencia, no notificaciones de experiencia personalizadas. |
| Impresiones | El número total de impresiones de usuario que han recibido todas tus notificaciones en conjunto. |
| Clics | El número total de clics que han recibido todas tus notificaciones en conjunto. |
| Tasa de clics (CTR) | La tasa a la que los usuarios están haciendo clic en tus notificaciones, calculada como la proporción de clics a impresiones. |
| Desactivar | La tasa a la que los usuarios están desactivando las notificaciones para tu juego directamente desde tus notificaciones, calculada como la proporción de acciones de desactivación a impresiones. |
| Descartar | La tasa a la que los usuarios están descartando tus notificaciones, calculada como la proporción de acciones de descartar a impresiones. |
Estadísticas desglosadas
La tabla de Notificaciones de Experiencia muestra estadísticas detalladas de rendimiento para cada notificación con al menos 100 impresiones, ordenadas por la fecha de la primera impresión de esa notificación.

La columna Nombre es el identificador clave para la notificación. De forma predeterminada, el nombre coincide con el nombre del identificador que especificaste al crear la cadena de notificación, pero puedes anularlo a través del campo category en tus llamadas a la API, en cuyo caso category anula el nombre. Cambiar el nombre de la cadena en el Creator Dashboard o cambiar la cadena a la que hace referencia el ID de mensaje en la llamada a la API generará una nueva fila en la tabla.
Si deseas realizar pruebas A/B sobre el rendimiento de diferentes cadenas, se recomienda que crees una cadena de notificación completamente nueva con un nombre similar, por ejemplo:
- EggHatchA — "¡Tu huevo dorado ha eclosionado! Ven a conocer a tu nueva mascota."
- EggHatchB — "¡Es hora de la eclosión! Ven a conocer a tu nueva mascota."
Referencia de API
Funciones
createUserNotification
createUserNotification (userId : number, userNotification : UserNotification) : UserNotificationResultEnvía una notificación desde un script del lado del servidor. Requiere el Player.UserId del destinatario y una UserNotification. Devuelve un UserNotificationResult.
local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- En el payload, "messageId" es el valor del ID del activo de la notificación
local userNotification = {
payload = {
messageId = "5dd7024b-68e3-ac4d-8232-4217f86ca244",
type = "MOMENT"
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
endTipos
UserNotification
Tabla que contiene detalles sobre la notificación que se enviará al usuario. Debe contener una tabla payload con cadenas messageId y type requeridas, y tablas opcionales parameters, joinExperience y analyticsData.
| Clave | Tipo | Descripción |
|---|---|---|
| messageId | string | Un ID que representa una plantilla de mensaje de notificación personalizable que creas en el Panel del creador. |
| type | string | El tipo de notificación. Actualmente solo se admite "MOMENT". |
| parameters | table | Una tabla de parámetros utilizados para renderizar una plantilla de mensaje de notificación. Consulta Personalizar notificaciones usando parámetros para ejemplos de uso. |
| joinExperience | table | Una llamada a la acción que representa unirse a una experiencia. Actualmente admite un par clave-valor launchData que representa datos arbitrarios disponibles para una experiencia cuando un usuario se une a la experiencia desde la notificación; este valor está limitado a un máximo de 200 bytes. Consulta Incluir datos de lanzamiento y analíticas para ejemplos de uso. |
| analyticsData | table | Datos sobre cómo se reportan las analíticas. Actualmente admite un par clave-valor category que representa la categoría de la notificación, utilizada para agrupar datos de analíticas. Consulta Incluir datos de lanzamiento y analíticas para ejemplos de uso. |
UserNotificationResult
Un objeto envuelto que contiene la respuesta de una notificación enviada. Contiene los siguientes pares clave-valor:
| Clave | Tipo | Descripción |
|---|---|---|
| statusCode | number | El código de estado HTTP para la solicitud. |
| error | table | Tabla que contiene claves code y message describiendo el código de error GRPC y el mensaje de error, respectivamente. |
| response | table | Tabla que contiene claves id y path describiendo un UUID único y la ruta de recurso de la notificación de usuario, respectivamente. |