News / Sponsor spotlight
How to Submit and Monetize Your Games on Y8.com
Developers receive 50% of eligible in-game advertising revenue on Y8. Build your monetization around interstitials between rounds and player-chosen rewards, such as an extra life or bonus coins.

Create your studio and game
Create a developer account at https://developer.y8.com/ and a studio. Solo developers do not need a registered company.
For a studio specializing in idle games, pair ‘Idle’ with a distinctive word. https://docs.y8.com/studio/studio/
Open SDK Initialization and use the portal snippet with your App ID and Game ID. Initialize once after y8sdk.ready; keep emitReadyEvent() to handle the SDK loading before your listener.
https://docs.y8.com/sdk/intro/
Place interstitials at natural breaks
Show the round's result before requesting a next break, then let the player start the next round. Request ads at natural breaks and let the SDK pace them: the default interstitial interval is roughly 180 seconds, configurable per game. Y8 handles preroll itself; do not request it.
Implement pauseAndMute() and resumeAndRestoreAudio() for your game's loop and audio, preserving the player's mute setting.
function showBetweenRoundsAd() {
return y8Sdk.showAd({
type: "next",
name: "round-complete",
beforeAd: () => pauseAndMute(),
afterAd: () => resumeAndRestoreAudio(),
}).catch((error) => {
console.error("Y8 round-complete ad failed:", error);
});
}
Pause in beforeAd, not before calling showAd. A capped or unavailable ad skips beforeAd and afterAd, so pausing early can leave the game stuck. The Y8 method is showAd, not adBreak.
Offer rewards players can use
Offer a specific benefit at the moment it helps: an extra life after a loss, a hint when stuck, or double the coins from the completed round. Keep ordinary restart available.
Call watchForExtraLife() from a button labelled ‘Watch an ad for an extra life’. That click supplies consent; beforeReward must then call showAdFn() to display the ad. Implement grantExtraLife() in your game and grant only in adViewed, never on request or dismissal.
function watchForExtraLife() {
return y8Sdk.showAd({
type: "reward",
name: "extra-life",
beforeAd: () => pauseAndMute(),
afterAd: () => resumeAndRestoreAudio(),
beforeReward: (showAdFn) => showAdFn(),
adViewed: () => grantExtraLife(),
}).catch((error) => {
console.error("Y8 extra-life ad failed:", error);
});
}
Rewarded ads are not frequency-capped, but watching one restarts the interstitial interval.
Banners suit continuous-play games with few breaks. They require per-game approval and directly uploaded game files, not a remote iframe; the banner API is JavaScript-only. https://docs.y8.com/sdk/advertising/
Test the ad paths, then request review
Draft and in-review interstitials and banners automatically use house/test ads. Check that:
- A second request soon after a shown interstitial leaves play working when capped.
- A completed rewarded ad grants exactly the promised reward; closing early grants nothing.
- Banner space works on narrow screens and stays stable when empty.
Real ads begin after approval and release; banners also need separate approval.
Choose how to get paid
| Route | Who pays you | Payment terms |
|---|---|---|
| Y8 Managed Partnership (YMP) | Y8 | Available for approved games. Minimum $100 via PayPal or $500 by bank transfer; smaller balances carry forward. |
| AdSense for Platforms (AFP) | Eligible developers apply for or connect AdSense through Y8. Google decides approval; its payment terms apply, not YMP minimums. |
Check Revenue Report after release. For YMP, submit a complete, valid invoice once eligible; Y8 normally processes payment within 10 business days of accepting it. https://developer.y8.com/
Y8 sponsored the prize pool, they're amazing!