Quick answer: The highest-return monetization strategies for Construct 3 games are publishing on web portals (CrazyGames, Poki) that handle ads and pay revenue share, exporting to desktop via NW.js and selling on Steam, and wrapping for mobile with AdMob ads or in-app purchases. Most successful developers use multiple channels simultaneously. Ad integration is straightforward — call the portal’s SDK at natural break points like level transitions and game-over screens.
You have built a game in Construct 3 and players enjoy it. Now you want it to generate revenue. HTML5 games have a unique advantage: they run everywhere — browsers, mobile devices, desktop, even embedded in other apps. This means you can monetize across multiple channels from a single codebase. The challenge is choosing the right strategy for your game type and audience, and integrating the technical pieces without ruining the player experience.
Web Portal Revenue Sharing
Web gaming portals are the fastest path to ad revenue for HTML5 games. Portals like CrazyGames, Poki, and GameDistribution host your game, drive traffic, and share ad revenue with you. The integration typically involves adding the portal’s JavaScript SDK to your project and calling specific functions at ad break points.
CrazyGames, for example, provides an SDK that you load and call when you want to show an ad. The most common placement is a rewarded video ad that the player opts into for an in-game bonus, and an interstitial ad between levels.
// Scripting API: CrazyGames SDK integration
// Load the SDK (add to index.html or use a script tag)
// <script src="https://sdk.crazygames.com/crazygames-sdk-v3.js"></script>
// Show a midgame ad (interstitial) between levels
async function showInterstitialAd() {
try {
await window.CrazyGames.SDK.ad.requestAd("midgame");
console.log("Ad completed");
} catch (err) {
console.log("Ad not available:", err.message);
}
// Proceed to next level regardless of ad result
runtime.goToLayout("Level_" + nextLevel);
}
// Show a rewarded ad for extra lives or coins
async function showRewardedAd() {
try {
await window.CrazyGames.SDK.ad.requestAd("rewarded");
// Player watched the full ad - give the reward
runtime.globalVars.Coins += 50;
return true;
} catch (err) {
// Player skipped or ad unavailable - no reward
return false;
}
}
The event sheet approach works too. Use the Browser plugin’s Execute JavaScript action to call the SDK, and set a global variable from the callback to signal completion back to your event sheet logic.
Revenue from portals depends on your game’s eCPM (effective cost per thousand impressions), which varies by audience geography and game genre. Games with players primarily in the US, UK, and Western Europe earn higher eCPMs ($3–$8) than games with players primarily in South Asia or South America ($0.50–$2). Puzzle games and idle games tend to generate the most ad impressions per session because players play longer and hit more natural ad break points.
Google AdSense and Self-Hosted Ads
If you host your game on your own website, you can use Google AdSense or other ad networks directly. This gives you a higher revenue share (you keep 68% with AdSense vs. typically 50% with portals), but you are responsible for driving traffic.
The cleanest implementation embeds ad slots around the game canvas rather than interrupting gameplay. Place a banner ad below the game canvas and a larger ad unit on the game-over screen. For interstitials, use the AdSense auto-ads feature or manually trigger an ad overlay at level transitions.
// Event sheet: Show ad overlay between levels
// When level is complete
Function "OnLevelComplete"
——
// Pause the game
System: Set time scale to 0
// Tell the page to show the ad
Browser: Execute JavaScript
"document.getElementById('ad-overlay').style.display = 'flex';"
// Wait for player to close the ad / ad to finish
// (handled by a callback that sets a global variable)
// When ad is dismissed (set by JavaScript callback)
System: AdDismissed = 1
——
System: Set AdDismissed to 0
System: Set time scale to 1
System: Go to layout NextLevel
Be careful with ad placement timing. Showing an interstitial immediately after the player dies feels punishing and leads to bounce. Show it after the player has had a moment to process the result — on the score summary screen, not the death screen. Rewarded ads should always be opt-in and never block progression.
Steam and Desktop Distribution
Construct 3 can export standalone desktop applications using NW.js. This produces a native executable for Windows, macOS, and Linux that you can sell on Steam, itch.io, GOG, or the Epic Games Store. Desktop distribution lets you charge a one-time purchase price, which many indie developers find more predictable than ad revenue.
To prepare for Steam, export your Construct 3 project as an NW.js application. Set the window size to your game’s design resolution, enable fullscreen support, and configure the application icon. Upload the build to Steamworks, set up your store page with screenshots and a description, and submit for review.
Steam takes a 30% cut (dropping to 25% after $10 million and 20% after $50 million in revenue). itch.io lets you set your own revenue share, including 0%. For most indie games, Steam’s discoverability and wishlist system drive significantly more sales than other platforms despite the higher commission.
Consider pricing strategy carefully. HTML5 games exported to desktop compete with native games that look and feel more polished. Price accordingly — $2.99 to $9.99 is the typical range for Construct 3 games on Steam. Include Steam achievements, cloud saves, and trading cards to increase perceived value and discoverability.
Mobile App Stores
Wrapping your HTML5 game for iOS and Android lets you access the mobile ad ecosystem (AdMob, Unity Ads, ironSource) and in-app purchases. Construct 3 supports mobile export through Cordova (Android and iOS) and can produce APKs or AABs for the Google Play Store and IPAs for the App Store.
Mobile ad revenue is driven by AdMob for most indie developers. Rewarded video ads are the highest-earning format, followed by interstitials, then banners. A typical HTML5 game on mobile earns $1–$4 eCPM for rewarded videos and $0.50–$2 for interstitials, depending on geography.
// Event sheet: AdMob integration via Cordova plugin
// On start of layout, preload ads
System: On start of layout
——
Browser: Execute JavaScript
"if (window.admob) {
admob.interstitial.load({
id: 'ca-app-pub-XXXXX/YYYYY'
});
admob.rewardVideo.load({
id: 'ca-app-pub-XXXXX/ZZZZZ'
});
}"
// Show interstitial between levels
Function "ShowMobileInterstitial"
——
Browser: Execute JavaScript
"if (window.admob) { admob.interstitial.show(); }"
// Show rewarded video for extra life
Function "ShowRewardedVideo"
——
Browser: Execute JavaScript
"if (window.admob) {
admob.rewardVideo.show();
document.addEventListener('admob.rewardVideo.reward', function() {
c3_callFunction('GrantReward');
}, { once: true });
}"
In-app purchases on mobile require platform-specific plugins. For simple unlocks (remove ads, unlock levels), the Cordova In-App Purchase plugin works with Construct 3. Define your products in the App Store and Play Store dashboards, then call the purchase flow from your event sheet.
Sponsorship and Licensing
Game sponsorship is a less common but potentially lucrative channel. Companies pay a flat fee to have their branding in your game or to license exclusive distribution rights. Sponsorship deals typically range from $500 to $5,000 for a quality HTML5 game, with exceptional games commanding more.
To attract sponsors, your game needs polish, strong retention metrics, and a professional presentation. Create a brief gameplay video, document your player metrics (if available), and reach out to publishers directly. GameDistribution, Softgames, and Famobi are among the publishers that license HTML5 games.
Non-exclusive licenses let you publish the same game on multiple portals with different branding. Exclusive licenses pay more but restrict your distribution. A common hybrid approach is to sell exclusive rights for one platform (e.g., mobile) while retaining web distribution rights.
"The games that earn the most combine channels: free-to-play on web portals for ad revenue, a polished premium version on Steam, and a mobile port with IAP. One codebase, three revenue streams."
Related Issues
If your exported game is not running after deployment, see Fix: Construct 3 Exported Game Not Running. For performance problems that hurt player retention, check Fix: Construct 3 Performance Low FPS Lag. If ads trigger audio issues, see Fix: Construct 3 Audio Not Playing on First Touch. And for AJAX-related issues with ad SDKs, see Fix: Construct 3 AJAX Request CORS Error.
Do not block progression with ads. Rewarded ads earn more and players do not hate you.