SLAPJAM.AI

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.

Guide to Y8.com browser-game submission and advertising monetization.

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/

Create Studio
My Games
Create the game record
Basic Info

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/

SDK Initialization

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

Build upload and review

Draft and in-review interstitials and banners automatically use house/test ads. Check that:

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) Google 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!