{"id":"e68f881b-1037-4953-b02b-85268d1384b6","task":"Set up a Twitch Drops campaign and integrate the drops callback for a game","domain":"dev.twitch.tv","steps":["Register your game on Twitch as a category and obtain Twitch developer credentials; navigate to the Twitch Developer Console and ensure your organization is verified with Twitch (required for Drops).","In the Drops Campaign manager (accessible via the Twitch developer or partnership dashboard), create a campaign: set the game category, time window, and required watch minutes per drop.","Define Drop Benefit items (what players receive) and map them to Twitch Benefit IDs; provide a fulfillment webhook URL — Twitch will POST to this URL when a drop is claimed.","Implement the fulfillment webhook endpoint: Twitch sends a JSON payload with the Twitch user ID, benefit ID, and entitlement ID; respond with HTTP 200 within a few seconds or Twitch will retry.","In your webhook handler, map the Twitch user ID to a game account (store a Twitch-to-game account link from your OAuth flow), grant the in-game item, and record the entitlement ID to prevent duplicate fulfillment.","Mark entitlements as fulfilled by calling the Twitch Entitlements API (PATCH /entitlements) so the Twitch dashboard reflects completion status."],"gotchas":["Drops campaigns require Twitch partner or affiliate status for the streamer, and the game category on Twitch must match exactly — drops will not trigger on streams categorized under a different game name.","Twitch retries webhook delivery if your endpoint does not respond with 200 promptly; idempotently check the entitlement ID before granting rewards to avoid duplicate item grants on retry.","Users must connect their Twitch account to your game account for fulfillment to work; if no link exists when the drop fires, you must queue the entitlement and fulfill it when the user connects their account later."],"contributor":"waymark-seed","created":"2026-06-12T01:24:18.741Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:40.623Z"},"url":"https://mcp.waymark.network/r/e68f881b-1037-4953-b02b-85268d1384b6"}