> For the complete documentation index, see [llms.txt](https://docs.moonitor.tools/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.moonitor.tools/monitoring-commands/apple-monitoring.md).

# Apple Monitoring

## Apple Store Monitor

### What it monitors

|                   |                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------ |
| **Regions**       | Apple Stores in the **United States** and the **United Kingdom**                                             |
| **Products**      | **iPhone 18 Pro**, **iPhone 18 Pro Max** and **iPhone Duo**, in every storage size (256GB to 2TB) and colour |
| **Stock type**    | In-store pickup only (order online, collect in store). Delivery stock is not tracked.                        |
| **When it pings** | When a store **starts** offering pickup for a model it couldn't before. Stores selling out don't ping.       |

{% hint style="info" %}
Every location is checked continuously, about every 30 seconds. The same model at the same location pings at most once every 3 minutes.
{% endhint %}

### Adding the monitor (admins)

Before you start:

* You need access to `$monitor`. Anyone who already has it can add you with `$monitor authorize @user`.

{% tabs %}
{% tab title="United States" %}

```
$monitor apple {zip}
```

**Example:** `$monitor apple 10001`

The bot matches your zip to its **state** and watches the Apple Stores around that state's check location. The confirmation shows the state it picked, for example `[NEW_YORK] Apple Store Pickup`. A few metro areas have their own monitor; use one of these zips to follow the metro directly:

| Metro       | Zip     |
| ----------- | ------- |
| Austin      | `78719` |
| Chicago     | `60638` |
| Dallas      | `75150` |
| Houston     | `77061` |
| Las Vegas   | `89119` |
| Miami       | `33054` |
| San Antonio | `78216` |
| Tampa       | `33607` |

* Add one monitor per state (or metro) you care about. Another zip in the same state joins the same monitor, so it won't create a duplicate.
* Each ping lists the stores near that location (up to the 12 closest) where pickup is available.

{% hint style="warning" %}
If the state in the confirmation isn't the one you expected, remove the monitor and add it again with a zip from the table above or from a larger city in your state. Montana has no Apple Store nearby, so its monitor never pings.
{% endhint %}
{% endtab %}

{% tab title="United Kingdom" %}

```
$monitor https://www.apple.com/uk/shop/buy-iphone
```

There is **one monitor for the whole UK**. It covers every UK Apple Store that offers online pickup (Apple SouthGate in Bath doesn't). The confirmation shows `[UK] iPhone 18 Pro / Pro Max / Duo`, and pings are titled `[UK] {model}` with the stores that have pickup.
{% endtab %}
{% endtabs %}

#### Sending pings to their own channel

1. Create a webhook on the channel (**Edit Channel → Integrations → Webhooks → New Webhook**).
2. Link the store to it:

```
$monitor addchannel apple #us-iphone
$monitor addchannel appleuk #uk-iphone
```

To also copy certain models to another channel, use a keyword channel. Ping titles use the model name, for example `[TEXAS] iPhone 18 Pro Max 1TB Black`:

```
$monitor setkeywordchannel +duo #iphone-duo
$monitor setkeywordchannel +pro max #iphone-pro-max
```

#### Viewing and removing

| Action                   | Command                                                                                                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| List your Apple monitors | `$monitor show apple` / `$monitor show appleuk`                                                                                                                           |
| Remove a US monitor      | Click **Click Me to remove this monitor** in `$monitor show apple`, or `$monitor remove https://www.apple.com/shop/buy-iphone?zip={zip}` using the zip shown in that list |
| Remove the UK monitor    | `$monitor remove https://www.apple.com/uk/shop/buy-iphone`                                                                                                                |

#### What a ping looks like

* **Title:** location and model, for example `[CALIFORNIA] iPhone 18 Pro 256GB Silver`
* **One field per Apple Store** where the model can be picked up (up to 17 shown)
* **SKU:** Apple's part number for that exact model, storage and colour
* The product photo in the matching colour

***

### User commands: `$apple`

Anyone in the server can check pickup stock around a location on demand.

{% tabs %}
{% tab title="United States" %}

```
$apple {zip} [PRO | PRO MAX | DUO]
```

| Example                | Shows                                                            |
| ---------------------- | ---------------------------------------------------------------- |
| `$apple 10001`         | All iPhone 18 Pro, Pro Max and Duo models with pickup near 10001 |
| `$apple 94103 pro max` | iPhone 18 Pro Max only                                           |
| `$apple 60611 duo`     | iPhone Duo only                                                  |

Use a 5-digit zip. City names don't work.
{% endtab %}

{% tab title="United Kingdom" %}

```
$appleuk {postcode} [PRO | PRO MAX | DUO]
```

| Example               | Shows                                     |
| --------------------- | ----------------------------------------- |
| `$appleuk W1B 2EL`    | All models with pickup near Regent Street |
| `$appleuk M1 1AE pro` | iPhone 18 Pro only                        |
| `$appleuk leeds duo`  | iPhone Duo only, near Leeds               |

A full postcode (with or without the space) or a one-word town name works. A partial postcode such as `W1B` doesn't.
{% endtab %}
{% endtabs %}

The bot replies with one or more embeds. Each field is a model, listing the nearby stores (up to 12) where it can be picked up right now.

* `PRO` shows only the Pro, not the Pro Max. `MAX` on its own works the same as `PRO MAX`.
* Leave the model off to see everything.

#### Replies you might see

| Reply                                | Meaning                                                                                                    |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| `No Apple stores found around {zip}` | Apple couldn't find that location, or there's no Apple Store near it. Try a nearby city's zip or postcode. |
| `No stores in stock around {zip}`    | Stores were found, but none can offer pickup for that model right now.                                     |
| `Model not found`                    | Use `PRO`, `PRO MAX` or `DUO`.                                                                             |
|                                      |                                                                                                            |
