> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.petto.sbs/llms.txt
> Use this file to discover all available pages before exploring further.

# Rollout Alerts

> Petto posts in a channel when Discord adds an experiment or changes its rollout, with the share of people that have it, its variants and filters.

## Overview

Petto can post a message in a channel when Discord **adds an experiment** or **changes its rollout**: the share of people that have it grows or shrinks, or its status changes. The card shows the name, the kind of experiment, the status, the platforms, the id, the rollouts of each variant and their ranges.

![A rollout alert that pings Experiment hunters, with the name, the kind, the status, the platforms, the id, the rollouts of each variant and the ranges](https://mintcdn.com/wikipetto/LoL7QuPJ71yd9F_N/images/discord/automation/rollouts.webp?fit=max\&auto=format\&n=LoL7QuPJ71yd9F_N\&q=85\&s=8f195d0a5b872d408827d7cafe7ddee7)

In Discord: the alert of an experiment of the public list, in Petto's card.

> [!NOTE]
>
> `!rollouts list` and `!rollouts help` can be used by everyone. The settings need the **Manage Server** permission. The data comes from a public list of Discord's experiments, [agnonotdev's rollouts list](https://gist.github.com/agnonotdev/fb2b6a7ba1301733aa5c2050b3e59a18). Petto checks it every few minutes.

## Commands

```javascript Syntax theme={null}
!rollouts enable <channel> [role]
!rollouts disable
!rollouts role [role]
!rollouts kinds [kinds]
!rollouts events [events]
!rollouts min <points>
!rollouts unrolled <on|off>
!rollouts style <card|template> [saved embed]
!rollouts card <hide|show|reset> [section]
!rollouts color [hex]
!rollouts list
!rollouts queue [clear]
!rollouts test
!rollouts status
!rollouts help
```

```javascript Example theme={null}
!rollouts enable #rollouts @Experiment hunters
!rollouts kinds user guild
!rollouts events new increase
!rollouts min 5
!rollouts color #ff91c2
```

> [accordion] !rollouts enable
>
> ![liam enables the alerts with Experiment hunters and Petto explains that only the next change is announced](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-enable.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=ab7a2f9c2baf1db5b4ffa21a13823458)
>
> In Discord: the alerts turned on in #rollouts with a role.

> [accordion] !rollouts disable
>
> ![liam disables the alerts and Petto confirms it](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-disable.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=a998580ff1bf19bfb47c7d026183b981)
>
> In Discord: the alerts turned off.

> [accordion] !rollouts role
>
> ![liam sets Experiment hunters, then removes the role, and Petto confirms each](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-role.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=e6cdfaa1a7fa4d70bcc671320b6777ac)
>
> In Discord: the role of the pings, and no role.

> [accordion] !rollouts kinds
>
> ![liam keeps user and guild, then sets all, and Petto confirms each](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-kinds.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=93acb2d50b646a5a01691383c521332c)
>
> In Discord: some kinds of experiment, then all.

> [accordion] !rollouts events
>
> ![liam keeps new and increase and Petto confirms it, then grow gets the list of events to choose from](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-events.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=1650d1d5148e4643890fa58a5e9312d1)
>
> In Discord: some events, and a word that is not one.

> [accordion] !rollouts min
>
> ![liam sets 5, then 0, and Petto confirms each](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-min.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=d89653593f127a2a4458605765f380c0)
>
> In Discord: changes under 5 points ignored, then every change.

> [accordion] !rollouts unrolled
>
> ![liam turns unrolled on and Petto confirms it](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-unrolled.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=210a7d590fab80d556cbbcc860a79f3e)
>
> In Discord: experiments with no rollout announced too.

> [accordion] !rollouts style
>
> ![liam picks rollout-card, then the card again, and Petto confirms each](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-style.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=d8bb8e84e6245a84d3459ddc0e049ff3)
>
> In Discord: a saved embed for the alerts, and back to the card.

> [accordion] !rollouts card
>
> ![liam hides and shows the ranges and Petto confirms each](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-card.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=e061c123a855c8cd1ad4240d6f731c5c)
>
> In Discord: the ranges hidden, then shown again.

> [accordion] !rollouts color
>
> ![liam sets #ff91c2, then clears it, and Petto says the card has no color](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-color.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=a81b4f71bd367cce278ee459f710b28b)
>
> In Discord: a color for the card, then no color.

> [accordion] !rollouts list
>
> ![nova asks for the list and Petto shows ten experiments with their share, status and id, and the buttons to move through ten pages](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-list.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=ccda65434f2d109e0d8b10acdb61d7e6)
>
> In Discord: the experiments from the newest, open to everyone, with page buttons.

> [accordion] !rollouts queue
>
> ![liam sees 7 alerts waiting, then clears the queue and Petto confirms it](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-queue.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=8f2af453f85ce5bfdf53d348f769b4e5)
>
> In Discord: what is waiting, and the queue emptied.

> [accordion] !rollouts test
>
> ![Petto posts the card of a real experiment with a +12.5% badge, its kind, status, platforms, rollouts and ranges, and confirms the test](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-test.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=e0a749a93743867f16b4bb2e8a57bcf5)
>
> In Discord: an example card with an invented +12.5% change.

> [accordion] !rollouts status
>
> ![Petto lists the channel, role, style, kinds and events, minimum, hidden parts, 7 waiting and the list of experiments](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-status.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=d1f69651077af9783e5026a5e61e0859)
>
> In Discord: the settings, the queue and the state of the list.

> [accordion] !rollouts help
>
> ![nova asks for help and Petto answers with the commands to set up, choose and check the alerts](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-help.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=ab6ef77fb64ecfb24436f9dc0bcf0d83)
>
> In Discord: how the alerts work, open to everyone.

> [accordion] Without Manage Server
>
> ![nova asks for the queue and Petto says she needs Manage Server, and that anyone can use rollouts list and rollouts help](https://mintcdn.com/wikipetto/N2Wjap2tfm2gD5RE/images/discord/automation/rollouts-refused.webp?fit=max\&auto=format\&n=N2Wjap2tfm2gD5RE\&q=85\&s=268d9fc33810b74f3d8e6f53b83fab08)
>
> In Discord: queue needs Manage Server; list and help do not.

Short names: `!rollout` and `!experiments`.

## What each one does

| Command | What it does |
| - | - |
| `enable` | Turns the alerts on in a channel, with an optional role to ping |
| `kinds` | Only alert for some kinds of experiment: `user`, `guild`, `apex_user`, `installation`. Empty or `all` for every one |
| `events` | Only alert for some events: `new`, `increase`, `decrease`, `status`. Empty or `all` for every one |
| `min` | Ignore changes smaller than this many points, from 0 to 100 |
| `unrolled` | Also announce experiments that have no rollout yet |
| `style` | The card, or one of your [saved embeds](https://wiki.petto.sbs/resources/scripting/embeds.md) (including V2 designs) |
| `card` | Choose which parts the card shows: `variants`, `ranges`, `status`, `platforms`, `filters` |
| `color` | A color for the card. Empty sends the card with no color |
| `list` | The experiments from the newest to the oldest, ten to a page and up to ten pages, with buttons to move |
| `queue` | What is waiting to be sent. `queue clear` empties it |
| `test` | Sends an example here, with an invented +12.5% change on a real experiment |
| `status` | Your settings and the state of the list |

## What the card says

| Part | Meaning |
| - | - |
| Button | The change, such as `+12.5% (50%)`: how much it moved and the share it has now. Its color says the event: green when it grows, red when it shrinks, blue for a new experiment and grey for a status change |
| Share | The part of Discord the experiment reaches. The list gives its own total; without one, the **treatments are added** and the **control (variant 0) is never added**, nor are the variants that are `not_eligible` |
| Kind | `user`, `guild`, `apex_user` (an A/B experiment of users) or `installation` |
| Status | `full`, `full_filtered`, `rolling_out`, `rolling_back`, `ab_test`, `segmented`, `overrides_only`, `not_rolled_out`, `unlisted`, `unknown`, or none yet |
| Rollouts | One line per variant, with its change. A variant is `control` or `treatment`; the ones that are `not_eligible` are not shown. `-1` and `none` show as "No variant" |
| Ranges | The part of the 10000 buckets that each variant covers |
| Filters | Who can have it: servers with a feature, a member count, a creation date, chosen server ids, a share by hash, a vanity URL, or users in some countries |

## When many changes arrive

Discord can change hundreds of experiments in one day. So Petto does not send them all at once:

* Changes wait in a **queue** and go out in order, a message every few seconds.
* From 4 changes at once, they are grouped in cards of up to **10 changes**.
* Up to **1500** changes wait per server, and one that is older than **24 hours** is dropped.
* If a message fails (for example, Petto lost access to the channel), it is tried again a few times and then dropped.

`!rollouts queue` shows how many are waiting.

## Your own design

With `!rollouts style template <saved embed>`, or from the dashboard, you can use a saved embed (including a V2 design). The dashboard has a preview and lets you choose a different saved embed for each kind of experiment. The starter design in the Embeds page is the same as the card Petto sends.

![The A different design for each kind box with the four kinds of experiment, each on the general design](https://mintcdn.com/wikipetto/X8GdsHqKNBomKSYc/images/dashboard/automation/rollouts-dashboard-designs.webp?fit=max\&auto=format\&n=X8GdsHqKNBomKSYc\&q=85\&s=37bcf06c92cdbb812cd9ddafae3552d8)

Dashboard → Rollouts → Rollout alerts: a saved embed for each kind of experiment.

A button that is not a link, like the one that shows the change, **looks active and does nothing** when someone presses it.

| Variable | What it gives |
| - | - |
| `{rollout.name}` | Name of the experiment |
| `{rollout.id}` | ID of the experiment |
| `{rollout.kind}` | Users experiment, Servers experiment... |
| `{rollout.type}` | New experiment, Rollout increased, Rollout decreased or Status changed |
| `{rollout.status}` | Rolling out, Fully rolled out, A/B test... |
| `{rollout.percent}` | Share of Discord that has it now, such as 50% |
| `{rollout.from}` / `{rollout.to}` | The share before the change (empty for a new one) and now |
| `{rollout.change}` | The change, such as +12.5%, empty for a new one |
| `{rollout.badge}` | The short text of the button, such as +12.5% (50%) |
| `{rollout.kind_icon}` | Petto's icon for the kind of experiment |
| `{rollout.event_icon}` | Petto's icon for the event (new, plus, minus or reload) |
| `{rollout.variants}` | One line per variant with its change |
| `{rollout.ranges}` | The ranges of each variant |
| `{rollout.platforms}` | Where it applies: android, desktop... |
| `{rollout.filters}` | The filters of the experiment, if any |
| `{rollout.source}` | The list the data comes from |

The usual [variables](https://wiki.petto.sbs/resources/scripting/variables.md#rollouts) of the server and the date work in the same designs.

## Dashboard

The **Rollouts** page of the dashboard has everything in one place: the channel and the role, the kinds and events, the minimum change, the card with its preview, and a saved embed for each kind.

![The Rollout alerts page of Petto Land: alerts on in #rollouts with Experiment hunters, users and servers experiments, new and growing rollouts, min 5, and a preview card](https://mintcdn.com/wikipetto/X8GdsHqKNBomKSYc/images/dashboard/automation/rollouts-dashboard.webp?fit=max\&auto=format\&n=X8GdsHqKNBomKSYc\&q=85\&s=0b4dcab44bfdc2b66408a7ac9373017a)

Dashboard → Rollouts → Rollout alerts: the channel and role, the kinds and events, the minimum change, the card and its preview.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.