update rules

This commit is contained in:
Joe 2026-02-02 14:05:11 -06:00
parent 4c390fdd37
commit d5522b2fef
8549 changed files with 11783 additions and 1888 deletions

View file

@ -0,0 +1,14 @@
---
title: include
---
The **Experience Notifications** table displays detailed performance statistics for each notification with at least 100 impressions, ordered by the date of first impression for that notification.
<img src="../../assets/open-cloud/experience-notifications/Analytics-Itemized.png" width="880" />
The **Name** column is the key identifier for the notification. By default, the name matches the identifier name you specified when [creating the notification string](#create-a-notification-string), but you can override it through the `category` field in your API calls, in which case `category` overrides the name. Changing the string name in the [Creator Dashboard](https://create.roblox.com/dashboard/creations) or changing the string your message ID references in the API call will generate a new row in the table.
If you'd like to A/B test the performance of different strings, it's recommended that you create an entirely new notification string with a similar name, for example:
- **EggHatchA** &mdash; "Your gold egg has hatched! Come meet your new pet."
- **EggHatchB** &mdash; "It's hatching time! Come meet your new pet."

View file

@ -0,0 +1,42 @@
---
title: include
---
The summary section serves as a snapshot of the aggregate performance of your notifications. A minimum of 100 aggregate impressions is required to display the performance statistics.
<img src="../../assets/open-cloud/experience-notifications/Analytics-Summary.png" width="880" />
<table>
<thead>
<tr>
<th>Statistic</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>**Opted-in Users**</td>
<td>The total number of users that have turned on notifications for your experience. Please note that this does include users under the age of 13 who are only able to receive notification of [experience updates](../../production/promotion/experience-events.md#announce-experience-updates), not personalized [experience notifications](../../production/promotion/experience-notifications.md).</td>
</tr>
<tr>
<td>**Impressions**</td>
<td>The total number of user impressions all of your notifications have received in aggregate.</td>
</tr>
<tr>
<td>**Clicks**</td>
<td>The total number of clicks all of your notifications have received in aggregate.</td>
</tr>
<tr>
<td>**CTR**</td>
<td>The rate at which users are clicking on your notifications, calculated as the ratio of clicks to impressions.</td>
</tr>
<tr>
<td>**Turn Off**</td>
<td>The rate at which users are turning off notifications for your experience directly from your notifications, calculated as the ratio of turn off actions to impressions.</td>
</tr>
<tr>
<td>**Dismiss**</td>
<td>The rate at which users are dismissing your notifications, calculated as the ratio of dismiss actions to impressions.</td>
</tr>
</tbody>
</table>

View file

@ -0,0 +1,10 @@
---
title: include
---
Performance of your notifications and notifiable audience are displayed in the **Analytics** tab of the **Notifications** page where you [configure notification strings](#create-a-notification-string) (simply tab from **Creations** to **Analytics**).
1. Navigate to the [Creator Dashboard](https://create.roblox.com/dashboard/creations).
1. Similar to [badges](../../production/publishing/badges.md), notification strings are tied to a **specific experience**. Locate that experience's thumbnail and click on it.
1. In the left column, under **Engagement**, click **Notifications**.
1. On the target page, click the **Analytics** tab to switch to the analytics dashboard.

View file

@ -0,0 +1,19 @@
---
title: include
---
A spam prevention system exists to ensure the quality of notifications for users and protect the shared notification channel for all developers. Because of this, delivery of notifications is not guaranteed. This spam prevention system is directly informed by user engagement: the more users engage with your notifications, the more reach they'll receive. You can transparently track engagement metrics in the analytics dashboard, as explained below.
Experience notifications have a static throttle limit; each user can receive one notification per day from a given experience, and you receive transparent feedback when a user's throttle limit is reached.
Additionally, the following list outlines some of the special cases which may result in **non‑delivery** of a notification:
- Experience **eligibility requirements** are not met.
- Recipient is not opted in to notifications from your experience.
- Recipient's throttle limit for your experience has been reached.
- Recipient's aggregate daily throttle limit has been reached.
- Missing or invalid request parameters.
- Notification string was moderated.
- For notifications with user mentions, non-delivery occurs if either of these conditions are met:
- The receiver and mentioned user are not connections.
- The mentioned user has **No** selected for "Update connections about my activity?" under **Privacy**&nbsp;&rarr; **Other&nbsp;Settings** in their Roblox account settings.

View file

@ -0,0 +1,9 @@
---
title: include
---
In order to use the APIs to send notifications, the experience must meet the following base criteria:
- Minimum 100 visits since launch.
- The experience must not be under moderation.
- You as the developer must have permission to manage the experience.

View file

@ -0,0 +1,82 @@
---
title: include
---
<BaseAccordion>
<AccordionSummary>
<Typography variant="subtitle2">Best practices</Typography>
</AccordionSummary>
<AccordionDetails>
Notifications should be **personalized** to the receiver and should be based on in‑experience activity that's specifically relevant to the user. Inversely, notifications should not be of a generic, advertising nature.
<Alert severity="success">
<Typography variant="subtitle2">You're 2 races away from completing the weekly challenge!</Typography>
</Alert>
<Alert severity="error">
<Typography variant="subtitle2">A new line of race cars just dropped in Race Car Craze. Check them out!</Typography>
</Alert>
Ideally, notifications should also alert users of something they can take **immediate action** on. Avoid purely informational notifications that do not prompt a direct response or action.
<Alert severity="success">
<Typography variant="subtitle2">Allie @LaterSk8er1 just beat your record on the Tokyo Tour track! Time for revenge?</Typography>
</Alert>
<Alert severity="error">
<Typography variant="subtitle2">It's been a few days since you participated in a race with Allie @LaterSk8er1.</Typography>
</Alert>
</AccordionDetails>
</BaseAccordion>
<BaseAccordion>
<AccordionSummary>
<Typography variant="subtitle2">Respect community standards</Typography>
</AccordionSummary>
<AccordionDetails>
All notification content and behaviors are subject to Roblox's [Community Standards](https://en.help.roblox.com/hc/en-us/articles/203313410-Roblox-Community-Standards) and platform‑wide [text filtering](../../ui/text-filtering.md), regardless of your experience's [age guidelines](../../production/promotion/experience-guidelines.md). This means that if your experience is a 17+ experience, your notifications are still subject to the platform‑wide standards, **not** the [17+&nbsp;Policy Standards](https://en.help.roblox.com/hc/en-us/articles/15869919570708).
</AccordionDetails>
</BaseAccordion>
<BaseAccordion>
<AccordionSummary>
<Typography variant="subtitle2">Avoid deceptive nudge tactics</Typography>
</AccordionSummary>
<AccordionDetails>
Notification content is **not** permitted to incorporate dark patterns or other tactics that manipulate or deceive users into making choices they don't intend, or which may be counter to their best interests. This could include the following:
- **Disguised Ads** &mdash; Notifications that are intentionally disguised as organic content, but are actually advertising. For example, assume that clicking the following notification leads to Petz World but no "important information" is displayed.
<Alert severity="error">
<Typography variant="subtitle2">Click here for important information about your Petz World account.</Typography>
</Alert>
- **Time Pressured Actions** &mdash; Notifications that pressure users into clicking, subscribing, consenting, or purchasing through applying false time pressure.
<Alert severity="error">
<Typography variant="subtitle2">Make a purchase in Petz World in the next 10 minutes to avoid missing out on important gameplay updates!</Typography>
</Alert>
- **Bait-and-Switch with Free Items or Other Rewards** &mdash; Notifications that falsely tell users that they'll receive something for free when it's not. For example, upon clicking the following notification, it becomes clear that something further is required to get the gift.
<Alert severity="error">
<Typography variant="subtitle2">Play Petz World now and get a free dog bed!</Typography>
</Alert>
- **Tricking Users Into Purchasing** &mdash; Notifications that trick users into making unintended purchases. For example, assume that clicking the following notification leads directly to a purchase system pre‑loaded with items that the user didn't choose to buy.
<Alert severity="error">
<Typography variant="subtitle2">Check out our new Petz in Petz World!</Typography>
</Alert>
</AccordionDetails>
</BaseAccordion>
<BaseAccordion>
<AccordionSummary>
<Typography variant="subtitle2">Do not gate gameplay</Typography>
</AccordionSummary>
<AccordionDetails>
Experiences should **not** require users to turn on notifications in order to participate or advance in gameplay.
</AccordionDetails>
</BaseAccordion>

View file

@ -0,0 +1,26 @@
---
title: include
---
As with [Player Invite Prompts](../../production/promotion/invite-prompts.md), you must create and edit your notification strings in the [Creator Dashboard](https://create.roblox.com/dashboard/creations). **There is no default experience notification string, so this step is required.**
1. Navigate to the [Creator Dashboard](https://create.roblox.com/dashboard/creations).
1. Similar to [badges](../../production/publishing/badges.md), notification strings are tied to a **specific experience**. Locate that experience's thumbnail and click on it.
1. In the left column, under **Engagement**, click **Notifications**.
1. In the center region, click the **Create a Notification String** button.
1. 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](#customize-notifications-using-parameters). Notifications will automatically use the title of your experience as the notification title, but you can additionally use **\{experienceName\}** to reference your experience in the notification body text.
Example notification strings:
<p><Chip label="You're {numQuests} quests away from completing the weekly challenge!" size="large" color="primary" variant="outlined" /></p>
<p><Chip label="Your {eggName} hatched! Come meet your new pet." size="large" color="primary" variant="outlined" /></p>
<p><Chip label="You won {numRaces} races this week and unlocked the {racetrackName} track!" size="large" color="primary" variant="outlined" /></p>
<p><Chip label="{userId-friend} just beat your record on the Tokyo Tour track! Time for revenge?" size="large" color="primary" variant="outlined" /></p>
<Alert severity="warning">
Before writing notification strings, please review the [guidelines](#usage-guidelines) for using the system.
</Alert>
1. When ready, click the **Create Notification String** button.
1. On the notifications page, in the table of notifications, click the **&ctdot;** button in the **Actions** column and select **Copy Asset ID**.
1. Use the copied ID for the `messageId` key value in the `payload` table as demonstrated in the [example script](#send-an-experience-notification).

View file

@ -0,0 +1,44 @@
---
title: include
---
**Experience notifications** are a way for [opted-in](https://en.help.roblox.com/hc/en-us/articles/24769602332692-Out-of-Experience-Notifications) users age 13+ to keep up with their favorite experiences through timely, personalized notifications. As the developer, you can determine what kinds of in‑experience activities are most important to notify your users about, as well as define the notification content.
<Tabs>
<TabItem label="Async Activity">
<Grid container spacing={3}>
<Grid item>
<img src="../../assets/open-cloud/experience-notifications/Example-Notification-A.png" width="369" height="134" alt="Example notification" />
</Grid>
<Grid item>
<img src="../../assets/open-cloud/experience-notifications/Example-Notification-D.png" width="369" height="134" alt="Example notification" />
</Grid>
</Grid>
</TabItem>
<TabItem label="Progress / Achievement">
<Grid container spacing={3}>
<Grid item>
<img src="../../assets/open-cloud/experience-notifications/Example-Notification-C.png" width="369" height="134" alt="Example notification" />
</Grid>
<Grid item>
<img src="../../assets/open-cloud/experience-notifications/Example-Notification-E.png" width="369" height="134" alt="Example notification" />
</Grid>
</Grid>
</TabItem>
<TabItem label="User Mentions">
<Grid container spacing={3}>
<Grid item>
<img src="../../assets/open-cloud/experience-notifications/Example-Notification-B.png" width="369" height="134" alt="Example notification" />
</Grid>
<Grid item>
<img src="../../assets/open-cloud/experience-notifications/Example-Notification-F.png" width="369" height="134" alt="Example notification" />
</Grid>
</Grid>
</TabItem>
</Tabs><br />