Prisma Reviews / Guides / App review alerts in Discord

App Store, Google Play and Steam review alerts in Discord

Game studios and indie app developers often run the team, and the community, on Discord. A channel that shows every new store review the minute it lands keeps everyone close to what players say: the crash in 4.2 on Android 15, the paywall complaint in Germany, the 5-star from a long-time player. Apple, Google and Valve don’t post to Discord, so this guide connects them: a Prisma webhook per new review (App Store, Google Play, Steam, Microsoft Store, AppGallery and more), and a Discord channel webhook that renders it as an embed. About 30 lines of Python.

Shell
pip install flask requests

1. Create the Discord webhook

Channel settings → Integrations → Webhooks → New Webhook, name it “Reviews”, copy the URL. Keep it secret: anyone with it can post to the channel.

2. Receive the review and post an embed

Python
import hashlib, hmac, os, time, requests
from flask import Flask, request, abort

app = Flask(__name__)
PRISMA = "https://api.prismareviews.com/v1"
PH = {"Authorization": f"Bearer {os.environ['PRISMA_API_KEY']}"}
DISCORD = os.environ["DISCORD_WEBHOOK_URL"]
COLORS = {1: 0xE5484D, 2: 0xF76B15, 3: 0xFFC53D, 4: 0x46A758, 5: 0x30A46C}

def verify(raw: bytes, header: str) -> bool:
    parts = dict(p.split("=", 1) for p in header.split(","))
    expected = hmac.new(os.environ["PRISMA_WEBHOOK_SECRET"].encode(), f"{parts['t']}.".encode() + raw, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, parts["v1"]) and abs(time.time() - int(parts["t"])) < 300

def post(r: dict):
    stars = "★" * (r["rating"] or 0) + "☆" * (5 - (r["rating"] or 0))
    embed = {"title": (r.get("title") or f"{r['platform']} review")[:256], "url": r.get("url"),
             "description": (r.get("text") or "")[:4000], "color": COLORS.get(r["rating"] or 3, 0x8B8D98),
             "author": {"name": f"{stars}  ·  {r.get('author') or 'a player'}"},
             "fields": [{"name": "Store", "value": r["platform"], "inline": True},
                        {"name": "Language", "value": r.get("language") or "-", "inline": True}],
             "timestamp": r["created_at"], "footer": {"text": r["location_id"]}}
    for _ in range(3):
        res = requests.post(DISCORD, json={"username": "Reviews", "embeds": [embed]}, timeout=30)
        if res.status_code != 429:
            res.raise_for_status(); return
        time.sleep(float(res.json().get("retry_after", 2)))

@app.post("/webhooks/prisma")
def prisma_webhook():
    if not verify(request.get_data(), request.headers.get("Prisma-Signature", "")):
        abort(400)
    e = request.get_json()
    if e["type"] == "review.created":
        post(requests.get(f"{PRISMA}/reviews/{e['data']['id']}", headers=PH, timeout=30).json())
    return {"ok": True}

The embed’s colour follows the rating, the title links to the review on the store, and the timestamp is the review’s date, so Discord shows it in the reader’s local time. Discord allows roughly 30 messages a minute per webhook; the loop honours retry_after on a 429, which matters on launch days.

3. Register the Prisma webhook

cURL
curl -X POST https://api.prismareviews.com/v1/webhooks \
  -H "Authorization: Bearer $PRISMA_API_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://yourapp.example.com/webhooks/prisma", "events": ["review.created"]}'

Connect the stores first: an App Store Connect key, a Google Play service account (note the 7-day window), or just the Steam store page for a game. A pk_test_ key sends sample reviews from every store, so the channel fills before you connect anything.

Variants

The same webhook, other tools: HubSpot · Notion · Airtable · Zendesk · Intercom · Slack (approve replies) · Slack (alerts) · Microsoft Teams · Google Sheets.

FAQ

How do I get App Store reviews in Discord?

Neither Apple nor Discord offers it. A reviews API reads the App Store reviews with your App Store Connect key and sends a webhook per new review; your endpoint posts an embed to a Discord channel webhook. The same works for Google Play, Steam and the other stores.

What are Discord’s webhook limits?

Roughly 30 messages a minute per webhook, with 429 responses carrying retry_after. An embed description holds up to 4,096 characters and a message up to 10 embeds.

Can the community see the reviews?

Only if you post to a public channel. Most studios use a private team channel for all reviews and, optionally, a public one with 5-star reviews only, which is a decent social-proof feed for a game’s community.

Every store review, in the Discord your team already lives in.

Get a free API key

2 apps free. Test keys send sample reviews from every store.

Next step: see the 84 review platforms Prisma supports, and compare plans on Prisma Reviews pricing.

Get your API key in a minute

Free Spark plan: 2 locations, no card. Test keys return sample data on all 84 platforms, so you can build before connecting a real one.