> For the complete documentation index, see [llms.txt](https://osnipe.gitbook.io/osnipe/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://osnipe.gitbook.io/osnipe/commands-list/sniper-commands/osnipe-notification-management/subscribe.md).

# /subscribe

The `/subscribe` command creates a new listener in your private oSnipe channel. A listener starts with at least one target:

* `collection_slug`
* `contract_address`
* `from_address`
* `to_address`

By default, a new subscription listens for listings. Use `types` when you want sales, transfers, mints, approvals, or multiple event types.

The bot pings your channel whenever a new event matches every filter on the subscription.

<figure><img src="/files/lkzYbcXwJvtxdajvQOZv" alt=""><figcaption><p>List of <code>/subscribe</code> options</p></figcaption></figure>

You can also create listeners from the web app at <https://www.osnipe.app/listeners/new>. The web form supports collection, contract, wallet, trait, price, event-type, chain, and AutoSniper settings.

## Common examples

### Collection listing alert

`/subscribe collection_slug:boredapeyachtclub max_price:50`

Matches BAYC listings at or below 50 ETH.

### Collection sales alert

`/subscribe collection_slug:boredapeyachtclub types:sales min_price:50`

Matches BAYC sales at or above 50 ETH.

### Wallet tracker

`/subscribe from_address:0xabc... types:listings,sales`

Matches listings and sales from that wallet.

### Contract tracker

`/subscribe contract_address:0xabc... types:mints,transfers`

Matches mint and transfer activity for a contract. Transfer, mint, and approval listeners are Purveyor-only.

## Targets

### `collection_slug`

The collection slug from the marketplace URL, such as the final segment of an OpenSea collection URL.

### `contract_address`

The NFT contract address. This is useful when a collection is not reliably addressable by slug or when tracking contracts directly.

### `from_address`

Only match events sent, listed, minted, or sold by this wallet or contract.

### `to_address`

Only match events received or bought by this wallet.

{% hint style="info" %}
At least one target is required. You can combine targets for narrower filters.
{% endhint %}

## Event types

### `types`

Comma-separated event types. If omitted, oSnipe uses `listings`.

Common values:

* `listings`
* `sales`
* `transfers` - Purveyor-only
* `mints` - Purveyor-only
* `approvals` - Purveyor-only

Some integrations may emit additional event types such as `bids` or `burns`.

## Price filters

### `max_price`

Matches events at or below this price. This is the most common price filter for listings and AutoSniper.

### `min_price`

Matches events at or above this price. This is useful for high-value sales alerts.

### `max_floor_percentage`

Matches events at or below a percentage of the collection floor. Enter the number without a percent sign. For example, `80` means 80% of floor.

### `max_offer_percentage`

Purveyor-only. Matches events at or below a percentage of the current highest offer. For example, `110` means 110% of the highest offer.

### `token`

Currency used to value price filters. Current choices include ETH, POLY, USDC, BTC, MONAD, HYPE, BERA, and APE.

{% hint style="warning" %}
The listing token does not have to match the subscription token. oSnipe compares value so a `max_price` in USDC can still match an ETH listing when the converted value is low enough.
{% endhint %}

## Collection filters

### `traits`

Trait filters use the form `trait name:trait value`.

* Use commas for AND: `fur:trippy,eyes:laser`
* Use semicolons for OR groups: `fur:trippy;fur:gold`
* Escape literal commas or colons with a backslash: `name:hello\, world`

<figure><img src="/files/TZN6ei4jy3rzWmY9DTza" alt=""><figcaption><p>Example subscription for a trait-filtered listing alert</p></figcaption></figure>

{% hint style="info" %}
Trait input is case-insensitive. oSnipe validates trait names and values when collection data is available.
{% endhint %}

### Wildcards and exclusions

Wildcards and exclusions are supported:

* `earring:*` matches any token with an earring trait.
* `earring:!*` excludes tokens with an earring trait.
* `eyes:!crazy` excludes tokens with crazy eyes.

### Ranges

Numerical trait ranges can be entered as `trait:min-max`, such as `rank:1-1000`.

<figure><img src="/files/iNXgSHfFHnD0248R3z6c" alt=""><figcaption><p>Rank range example</p></figcaption></figure>

### `rarity`

Matches tokens at or above the requested rarity rank where rarity data is available. If rarity is not available for the collection yet, the listener is created but will not trigger on rarity until support is available.

### `token_ids`

Comma-separated token IDs or ranges. Example: `3,88-222,5000`.

<figure><img src="/files/3E3ZmZbuqkzD48EJEqj5" alt=""><figcaption><p>Token ID filter example</p></figcaption></figure>

## Routing and organization

### `chain`

The chain to watch. Current choices are Ethereum, Polygon, Base, ApeChain, Abstract, Berachain, HyperLiquid, Monad, and MegaETH. If omitted, oSnipe tries to infer the chain from known collection data and otherwise defaults to Ethereum.

### `marketplaces`

Comma-separated marketplace filter. Values are normalized, so common spellings like `opensea`, `blur`, and `magiceden` work.

Common values include OpenSea, Blur, Magic Eden, Punk Marketplace, DN404 Native, ApeExchange, Gondi, Sudoswap, NFTX, OSWIKI, NFTStrategy, Drip Trade, LiquidLoot, Payment Processor, and GRAILSOTC.

### `webhook`

Purveyor-only. Send matching alerts to a Discord webhook or X/Twitter destination instead of only your private channel.

### `name`

Nickname shown in `/list` and alert output.

### `group`

Group label for organizing related listeners.

### `paused`

Create the listener in a paused state, or unpause it later through `/edit`.

## Safety filters

### `allow_private`

Set to `True` to include private listings where supported. Defaults to `False`.

### `stop_loss`

Skips listings when the collection floor is below this value. This helps prevent unwanted snipes during sudden floor collapses.

<figure><img src="/files/v6QhGvRFCOQjUbrkxICA" alt=""><figcaption><p>Stop-loss example</p></figcaption></figure>

### `only_weths`

For sale listeners, set to `True` to only show sales where the seller accepted a bid.

## Expiration

### `expiration`

Sets how long the listener should stay active. Use `DD:HH:MM`.

Examples:

* `00:00:05` expires in 5 minutes.
* `05:00:00` expires in 5 days.

Expired subscriptions still appear in `/list`, but they do not trigger alerts or autosnipes.

<figure><img src="/files/PePKefighC8h2RvmAJYG" alt=""><figcaption><p>Expired listener example</p></figcaption></figure>
