$15,000 from one browser game takes 1 to 15 million plays.
I did the math because my first web game, built with Claude Code, went live on CrazyGames today.
Bolt Pit is a Three.js arena shooter. It has earned $0 so far, because CrazyGames keeps ads off during the Basic Launch test, which runs until November 5.
Only games with good numbers get a Full Launch, and that's where the ad revenue share starts.
The formula:
Revenue = sessions × ads per session × eCPM ÷ 1,000 × your share
eCPM is what advertisers pay per 1,000 ads. CrazyGames allows at most one midgame ad every 3 minutes. The share isn't public, and reports range from 40% to 60%, so I used 50%. The rest are my assumptions, based on reported ad rates:
Low: 1 ad per session, $2 eCPM = $1 per 1,000 plays. You need 15 million plays.
Mid: 2 ads, $5 eCPM = $5 per 1,000 plays. You need 3 million plays.
High: 3 ads, $10 eCPM = $15 per 1,000 plays. You need 1 million plays.
One developer reported about €1.20 per 1,000 CrazyGames plays across eight older games. That's the low case, so I plan around the middle at best.
Is 3 million plays realistic?
CrazyGames reported 320 million play sessions a month this October. Poki says it has 100 million players a month. The players exist. Retention and session length decide which line you land on.
That's the bigger reason I'm here. I have Unity games in progress that were meant for the App Store. On the App Store, I'd only find out if people come back after paying for players.
So the new plan is web first, App Store later:
Launch on CrazyGames and Poki, where test players are free.
Tune retention and session length on real data.
If a game becomes a hit on the web, take it to the app stores.
Both portals' exclusivity rules cover only the web, so the app stores stay open.
I'm also skipping CrazyGames' exclusivity bonus. It pays 50% more for two months if your game stays off other web portals, and I want to test on Poki too.
Getting a Claude Code build accepted took six fixes, including a static build, relative paths, no Google Fonts and cutting the size from 20.5 MB to 12.4 MB. One known bug is still live: on landscape phones the start button sits below the fold.
Designed a piece of onboarding for a breathwork app and I love how it flows.
Onboarding in wellness apps has one real business job: get people to the paywall already convinced. Every screen here was built around that.
The first screen asks what’s actually wrong with your sleep. Beyond personalization, it gets the user to name their problem, and someone who just admitted they can’t fall asleep is a lot more open to a solution.
The second shows what they’re getting with swipeable session cards. That’s the value pitch, made visual before any price shows up.
The last screen previews the real home screen with streaks and a Premium badge. By the time they tap “Get My Program,” they’ve already pictured themselves using the app, which makes the subscription step feel like the next step instead of a wall.
I managed a Facebook Ads campaign for an e-commerce business with the objective of generating messaging conversations from potential customers.
Campaign Details
Platform: Facebook Ads (Meta Ads Manager)
Industry: E-commerce
Campaign Objective: Messaging Conversations
Ad Spend: $1.90
Impressions: 3,925
Messaging Conversations Started: 27
Cost per Conversation: $0.07
My Approach
I focused on audience targeting, ad delivery monitoring, and budget management to generate customer inquiries within a limited advertising budget. I monitored campaign performance and reviewed audience demographics to understand how the ads were performing.
Key Result
The campaign generated 27 messaging conversations with just $1.90 in ad spend, at an average cost of approximately $0.07 per conversation.
This project demonstrates my practical experience with Meta Ads campaign setup, audience targeting, budget monitoring, and performance analysis.