BotDrop › Guides › How to Get Steam Wishlist Sale Notifications (and Set Your Own Target Price)

How to Get Steam Wishlist Sale Notifications (and Set Your Own Target Price)

By BotDrop · Updated October 17, 2026 · Free guide, no purchase needed

Steam will already tell you when a wishlisted game goes on sale, for free. But it has rules most people never see, and it can't wait for your price. This guide explains how Steam's wishlist sale notifications really work, how to turn them on, and how to set your own target prices, with alerts in Discord if you like.

How Steam's wishlist notifications work

Steam sends wishlist sale alerts by email or through the Steam mobile app. Valve's documentation for developers spells out when they go out:

  • The discount must be at least 20%. Smaller discounts never trigger one.
  • It must include the cheapest edition. If only the Deluxe edition is discounted, wishlisters aren't notified.
  • The sale must last more than 8 hours.
  • There's a two-week cooldown per game. If Steam emailed you about a game in the last two weeks, for any reason, you won't hear about it again until that passes. The cooldown can be longer during big seasonal sales.
  • Emails usually arrive within a few hours, slower when lots of mail is going out. Valve stops trying if an email is held up for more than a week.
  • Your email address must be verified, and your preferences must allow these emails.

Turn them on

  1. Email: in Steam, open your account menu → Account details → Manage Email Preferences (or go to store.steampowered.com/account/emailoptout while signed in) and tick A discount is applied to an item on my wishlist.
  2. Phone: install the Steam mobile app, sign in, and allow notifications. Steam can send wishlist sale alerts there too.
  3. Steam app on your PC: look under Settings → Notifications for the wishlist sale option if you also want pop-ups while Steam is open.
  4. Check your wishlist: only games on it count, so add the ones you're waiting for.

What Steam won't do

  • It won't wait for your price. A 20% discount triggers an alert even if you'd only buy at 60% off, and there's no setting for "tell me at $15".
  • The cooldown can hide a better deal. If a game drops 25% and then 50% a week later, you may only hear about the first one.
  • Free-to-keep giveaways aren't sent. Valve says wishlisters aren't notified about Free to Keep promotions.
  • It's just for you. Nothing reaches your Discord server or your friends.

Set your own target prices

The no-code way

Write a target next to each game you're waiting for: the most you'd happily pay. A simple note works. During big sales, open your wishlist, sort or filter it by discount, and compare against your list. Steam lets developers set discounts anywhere from 10% to 95% off, so base your target on what the game is worth to you, not on the first sale you see.

Automatic alerts in Discord with a small script

The Steam store has a public endpoint that returns a game's current price in your region. The store itself uses it, but Valve doesn't formally document it for outside developers, so it could change. This script checks your games a few times a day and pings a Discord webhook when one reaches your target. It alerts once per new low, and again only after the price goes back up and drops again.

# steam_price_alert.py: pings Discord when a Steam game drops to your target price.
# Needs Python 3 only (no extra packages). Run it a few times a day.
import json, os, urllib.request

WEBHOOK = os.environ["DISCORD_WEBHOOK_URL"]  # keep it out of the code
TARGETS = {1091500: 20.00, 413150: 9.99}     # App ID: your target price
COUNTRY = "us"                               # your Steam store region
SEEN_FILE = "price_alerts.json"              # lowest price already announced
API = "https://store.steampowered.com/api/appdetails?appids={}&cc={}&filters=price_overview"

def call(url, data=None):
    req = urllib.request.Request(url, data=data, headers={
        "User-Agent": "steam-price-alert-script", "Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=20) as r:
        return r.read()

seen = json.load(open(SEEN_FILE)) if os.path.exists(SEEN_FILE) else {}
for app, target in TARGETS.items():
    data = json.loads(call(API.format(app, COUNTRY)))[str(app)]
    price = (data.get("data") or {}).get("price_overview") if data.get("success") else None
    if not price:
        continue                               # free, unreleased or not sold in your region
    now = price["final"] / 100
    last = seen.get(str(app))
    if now <= target and (last is None or now < last):
        msg = (f"💸 Steam price alert: {price['final_formatted']} "
               f"({price['discount_percent']}% off), your target was {target:.2f}\n"
               f"https://store.steampowered.com/app/{app}/")
        call(WEBHOOK, json.dumps({"content": msg}).encode())
        seen[str(app)] = now
    elif now > target:
        seen.pop(str(app), None)               # back above target: alert again next time
json.dump(seen, open(SEEN_FILE, "w"))
  1. Find each App ID: it's the number in the game's store address, as in store.steampowered.com/app/1091500/.
  2. Set your region in COUNTRY (us, gb, ca, de and so on). Prices and currency follow that store region, and the target is in the same currency.
  3. Create a webhook on your #deals channel: gear icon (Edit Channel) → Integrations → Webhooks → New Webhook → Copy Webhook URL. Set it with setx DISCORD_WEBHOOK_URL "your-webhook-url" on Windows.
  4. Run it a few times a day with Task Scheduler or cron. Steam discounts run for at least a day, so checking every minute adds nothing, and staying gentle with Steam's servers keeps you from being rate-limited.

What we tested (Oct 17, 2026): we ran this script against the live Steam store (US region), with a local test endpoint standing in for Discord. Cyberpunk 2077 was $17.99 (70% off) against a $20 target, so it sent one alert. Celeste was at its full $14.99, above its $9.99 target, so nothing was sent. A second run sent nothing new. We didn't send to a real Discord channel for this guide.

Sharing deals with your server

  • Give deals their own channel and an opt-in @deals role, so members who don't care can mute it.
  • Post the price, the discount and the official store link. Members trust a deals channel that only ever links store.steampowered.com.
  • Only post when a game hits a target your members agreed on. A channel that posts every 20% discount gets muted fast.

Want this without maintaining a script?

Our Wishlist Deal Alert ($9) does the target-price part for you: set a price or a % discount per game, or load a public Steam wishlist, pick any Steam region, and get one Discord alert per new low. It needs only a webhook, no bot token, and it's a one-time purchase you run yourself.

Sources

Checked against these pages on October 17, 2026. Menus in Discord and Steam move from time to time; if a button has a slightly different name, look for it nearby.

More free guides