Overview

0
Total Games
0
Total Requests
$0.00
Total Revenue

My Games

My Games

Loading your games...

Analytics Dashboard

TOTAL
REVENUE
$0.00
+0%
TOTAL
COMPLETIONS
0
+0%
TOTAL
REQUESTS
0
+0%
TOTAL
IMPRESSIONS
0
+0%
AVERAGE
FILL RATE
0%
+0%
AVERAGE
COMPLETION RATE
0%
+0%

Performance Overview

Revenue ($)
Impressions
Completions

Top Performing Games

Loading...
Analyzing performance data
$0.00

Revenue Sources

House Ads
0%
VAST/SSP
0%

Integration Guide

✨ SDK v2.0.0 - Now Available!

Enhanced features, better performance, and improved user experience

Try Interactive Demo

🎉 What's New in v2.0

Powerful new features to boost your ad revenue and user experience

Ad Preloading

Automatically preload multiple ads in the background for instant playback. Configure with autoPreload: true and preloadCount: 3 for seamless user experience.

🎯

Smart Ad Availability

New methods like isAdAvailable() and getPreloadedAdCount() let you check ad status in real-time and update your UI dynamically.

📊

Enhanced Callbacks

New onAdLoaded, onAdShown, and onAdClicked callbacks give you complete control over the ad lifecycle and user interactions.

🔍

Debug Mode

Built-in debug mode with enableDebug() for easier testing and troubleshooting. See detailed logs of ad requests, responses, and events.

📈

Analytics API

Access real-time analytics with getAnalytics() to track impressions, revenue, and user engagement directly in your game.

🚀

Better Performance

Optimized ad loading, reduced latency, and improved error handling for a smoother experience across all devices and browsers.

💡

Important: You Control All Rewards!

BZZE Ads delivers the video ads. You decide what rewards to give your users! Whether it's coins, gems, diamonds, lives, power-ups, or anything else - YOU manage your game's economy and rewards. We just notify you when a user completes an ad via the onReward callback. The rest is up to you! 🎮

🚀 Quick Start

Get BZZE Ads running in your game in under 5 minutes

1

Add the SDK Script

Include the BZZE Ads SDK in your HTML file

HTML
<script src="https://ads.bzze.com/sdk/rewarded.min.js"></script>
2

Initialize the SDK

Configure BZZE Ads with your game credentials and v2.0 features

JavaScript
RewardedAd.init({
    appId: "YOUR_APP_ID",
    apiKey: "YOUR_API_KEY",
    userId: "user_" + Math.random().toString(36).substr(2, 9),
    
    // 🆕 v2.0 Features
    autoPreload: true,        // Auto-preload ads in background
    preloadCount: 3,          // Number of ads to preload
    
    // Reward callback - called when user completes ad
    onReward: function(reward) {
        console.log('✅ Ad completed!', reward);
        // YOU control the reward amount for YOUR game
        grantCoins(100); // Give 100 coins (or gems, lives, etc.)
    },
    
    // 🆕 Ad loaded callback - called when ad is preloaded
    onAdLoaded: function() {
        console.log('Ad preloaded and ready!');
        updateAdButton(true); // Enable your ad button
    },
    
    // 🆕 Ad shown callback - called when ad starts playing
    onAdShown: function() {
        console.log('Ad is now showing');
    },
    
    // 🆕 Ad clicked callback - called when user clicks ad
    onAdClicked: function() {
        console.log('User clicked the ad');
    },
    
    // No fill callback - called when no ads available
    onNoFill: function() {
        console.log('No ads available');
        showMessage('No ads available right now');
    },
    
    // Close callback - called when ad is closed
    onClose: function() {
        console.log('Ad closed');
    },
    
    // Error callback - called on ad errors
    onError: function(error) {
        console.error('Ad error:', error);
        showMessage('Ad failed to load');
    }
});
3

Show Rewarded Ads

Check ad availability and display ads with smart UI updates

JavaScript
// 🆕 Check if ads are available before showing
function showRewardedAd() {
    if (RewardedAd.isAdAvailable()) {
        RewardedAd.showAd({
            rewardPreview: "100 coins"
        });
    } else {
        showMessage('Loading ad, please wait...');
    }
}

// 🆕 Update button state based on ad availability
function updateAdButton() {
    const btn = document.getElementById('watchAdBtn');
    
    if (RewardedAd.isReady() && RewardedAd.isAdAvailable()) {
        btn.disabled = false;
        btn.textContent = '🎬 Watch Ad for 100 Coins';
        btn.style.background = '#10b981'; // Green
    } else {
        btn.disabled = true;
        btn.textContent = '⏳ Loading ad...';
        btn.style.background = '#9ca3af'; // Grey
    }
}

// Check ad availability every second
setInterval(updateAdButton, 1000);

// HTML Button
// <button id="watchAdBtn" onclick="showRewardedAd()">Watch Ad</button>

📋 Complete Example

Full HTML page with BZZE Ads integration

Complete HTML Example
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Game with BZZE Ads</title>
</head>
<body>
    <div id="game-container">
        <h1>My Awesome Game</h1>
        <div id="coins">Coins: <span id="coin-count">0</span></div>
        
        <button onclick="showRewardedAd()" class="reward-btn">
            Watch Ad for 100 Coins
        </button>
        
        <div id="message"></div>
    </div>

    <!-- BZZE Ads SDK -->
    <script src="https://ads.bzze.com/sdk/rewarded.min.js"></script>
    
    <script>
        let coins = 0;
        
        // Initialize BZZE Ads
        RewardedAd.init({
            appId: "YOUR_APP_ID",
            apiKey: "YOUR_API_KEY",
            userId: "user_" + Math.random().toString(36).substr(2, 9),
            
            onReward: function(reward) {
                // YOU control the reward - give what you want!
                const myReward = 100; // Your game's reward amount
                grantCoins(myReward);
                showMessage('You earned ' + myReward + ' coins!');
            },
            
            onNoFill: function() {
                showMessage('No ads available right now');
            },
            
            onClose: function() {
                console.log('Ad closed');
            },
            
            onError: function(error) {
                console.error('Ad error:', error);
                showMessage('Ad failed to load');
            }
        });
        
        function showRewardedAd() {
            RewardedAd.showAd({
                rewardPreview: "100 coins"
            });
        }
        
        function grantCoins(amount) {
            coins += amount;
            document.getElementById('coin-count').textContent = coins;
        }
        
        function showMessage(msg) {
            const messageEl = document.getElementById('message');
            messageEl.textContent = msg;
            setTimeout(() => messageEl.textContent = '', 3000);
        }
    </script>
</body>
</html>

📚 API Reference

Complete SDK methods and callbacks documentation

RewardedAd.init(config)

Initialize the BZZE Ads SDK with your configuration

Parameters:

  • appId (string) - Your game's App ID
  • apiKey (string) - Your game's API Key
  • userId (string) - Unique identifier for the user
  • autoPreload (boolean) - 🆕 Enable automatic ad preloading (default: false)
  • preloadCount (number) - 🆕 Number of ads to preload (default: 1)
  • onReward (function) - Called when user completes ad. YOU decide the reward amount (coins, gems, lives, etc.)
  • onAdLoaded (function) - 🆕 Called when ad is preloaded and ready
  • onAdShown (function) - 🆕 Called when ad starts playing
  • onAdClicked (function) - 🆕 Called when user clicks ad
  • onNoFill (function) - Called when no ads available
  • onClose (function) - Called when ad is closed
  • onError (function) - Called when ad fails to load
RewardedAd.showAd(options)

Display a rewarded video ad to the user

Parameters:

  • rewardPreview (string) - Preview text shown to user (e.g., "100 coins")
RewardedAd.isReady()

Check if the SDK is initialized and ready

Returns:

  • boolean - true if SDK is initialized, false otherwise
RewardedAd.isAdAvailable() NEW

Check if a preloaded ad is available to show right now

Returns:

  • boolean - true if ad is ready to show, false if loading
RewardedAd.getPreloadedAdCount() NEW

Get the number of ads currently preloaded and ready

Returns:

  • number - Count of preloaded ads (0-3)
RewardedAd.getAnalytics() NEW

Get real-time analytics data for the current session

Returns:

  • object - Analytics data with impressions, revenue, clicks, etc.

Example:

const analytics = RewardedAd.getAnalytics();
console.log('Impressions:', analytics.impressions);
console.log('Revenue:', analytics.revenue);
console.log('Click Rate:', analytics.clickRate);
RewardedAd.enableDebug() NEW

Enable debug mode to see detailed logs in console

Usage:

RewardedAd.enableDebug();  // Enable debug logs
RewardedAd.disableDebug(); // Disable debug logs
RewardedAd.getInfo() NEW

Get SDK version and configuration information

Returns:

  • object - SDK info including version, config, and status

💡 Best Practices

Tips for maximizing ad revenue and user experience

🎯

Strategic Ad Placement

Place rewarded ads at natural break points in your game, such as after completing a level, when the player runs out of lives, or when they want to unlock premium content.

💰

YOU Control Rewards

Important: You decide what rewards to give! BZZE Ads just delivers the video - you control everything else: coins, gems, diamonds, lives, power-ups, etc. Give rewards that make sense for YOUR game economy. The platform doesn't manage rewards - you do!

🎁

Valuable Rewards

Offer meaningful rewards that players actually want. This could be in-game currency, power-ups, extra lives, or exclusive items. The more valuable the reward, the more likely players are to watch ads.

Check Ad Availability

Always check if ads are available before showing the reward button. Use RewardedAd.isReady() to avoid disappointing users with unavailable ads.

🔄

Handle All Callbacks

Implement all callback functions (onReward, onNoFill, onClose, onError) to provide smooth user experience and handle edge cases gracefully.

🌍 GDPR/COPPA Compliance

Required for EU users and kids apps (US)

🇪🇺 GDPR (European Union)

Required for EU Users

If your game has users in the EU, you MUST ask for consent before showing personalized ads.

Step 1: Create Consent Popup

HTML
<div id="gdprPopup" style="position: fixed; bottom: 0; background: rgba(0,0,0,0.95); color: white; padding: 20px;">
    <h3>🍪 Cookie Consent</h3>
    <p>We use cookies to show you personalized ads. Do you accept?</p>
    <button onclick="handleConsent(true)">✅ Accept</button>
    <button onclick="handleConsent(false)">❌ Reject</button>
</div>

Step 2: Handle Consent

JavaScript
// 1. Detect if user is in EU
function checkIfInEU() {
    // Option 1: IP Geolocation (Recommended)
    return fetch('https://ipapi.co/json/')
        .then(r => r.json())
        .then(data => data.in_eu); // true/false
    
    // Option 2: Browser Timezone (Less accurate)
    const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
    return timezone.startsWith('Europe/');
}

// 2. Show popup for EU users
const isEU = await checkIfInEU();
const storedConsent = localStorage.getItem('gdpr_consent');

if (isEU && storedConsent === null) {
    document.getElementById('gdprPopup').style.display = 'block';
} else {
    initSDK(storedConsent === 'true');
}

// 3. Handle user's choice
function handleConsent(accepted) {
    localStorage.setItem('gdpr_consent', accepted.toString());
    document.getElementById('gdprPopup').style.display = 'none';
    initSDK(accepted);
}

// 4. Initialize SDK with GDPR data
function initSDK(hasConsent) {
    RewardedAd.init({
        appId: "YOUR_APP_ID",
        apiKey: "YOUR_API_KEY",
        userId: "player_123",
        
        // ⬇️ GDPR Compliance Data
        gdprApplies: isEU,        // true if user is in EU
        gdprConsent: hasConsent,  // true if user clicked Accept
        
        onReward: function(reward) {
            console.log('Reward granted!');
        }
    });
}
What happens with consent data?
  • ✅ SDK automatically sends it with every ad request
  • ✅ Platform uses it to filter campaigns (personalized vs non-personalized)
  • ✅ No consent = lower CPM but still compliant
  • ✅ Logged for legal compliance audits

🇺🇸 COPPA (United States)

Required for Kids Apps

If your game is directed at children under 13, you MUST comply with COPPA regulations.

Initialize SDK for Kids Apps

JavaScript
RewardedAd.init({
    appId: "YOUR_APP_ID",
    apiKey: "YOUR_API_KEY",
    userId: "player_123",
    
    // ⬇️ COPPA Compliance Data
    coppaCompliant: true,      // This is a kids app
    isChildDirected: true,     // Content is for under 13
    
    onReward: function(reward) {
        console.log('Reward granted!');
    }
});

// SDK will automatically:
// ✅ Send COPPA flag with ad requests
// ✅ Platform filters out adult content
// ✅ Only non-personalized ads shown
// ✅ No user tracking or data collection
⚠️ Important: If your app is for kids, you MUST set coppaCompliant: true. Failure to comply with COPPA can result in heavy fines (up to $43,000 per violation).

⚡ Advanced Features

Industry-standard features built into the SDK

🔒

Server-Side Rate Limiting

Cannot Be Bypassed - The platform enforces rate limits on the server:

  • ✅ 10 ads per hour (enforced server-side)
  • ✅ 50 ads per day (enforced server-side)
  • ✅ 60-second cooldown between ads
  • ✅ Prevents fraud and abuse
// Automatic - no code needed! // Users cannot bypass by clearing cache/cookies // Server tracks per userId
👁️

Viewability Tracking

IAB Standard - Ads are only counted as "viewable" if:

  • ✅ 50%+ of the player is visible on screen
  • ✅ For at least 2 continuous seconds
  • ✅ Measured by IntersectionObserver API
  • ✅ Higher viewability = better CPM rates
// Check viewability in analytics const analytics = RewardedAd.getAnalytics(); console.log('Viewable:', analytics.viewableImpressions); console.log('Total:', analytics.impressions); // Viewability Rate: 75% (good!)
📊

VAST Error Tracking

IAB Compliant - All VAST errors are logged with standard error codes:

  • ✅ 18 IAB error codes (100-901)
  • ✅ Helps debug SSP integration issues
  • ✅ Automatically reported to platform
  • ✅ Improves ad quality over time
// Automatic error tracking // 100: XML parsing error // 401: File not found // 402: Timeout of VAST URI // etc.
🎬

Ad Preloading & Queue

Zero-Delay Playback - Ads load in the background:

  • ✅ Auto-preloads up to 3 ads
  • ✅ Instant playback (no loading spinner)
  • ✅ 5-minute freshness guarantee
  • ✅ Better user experience
// Check preloaded ad count console.log(RewardedAd.getPreloadedAdCount()); // 2 ads ready // Check if ad available console.log(RewardedAd.isAdAvailable()); // true - instant playback!
🚨

Built-in UI Overlay

Zero Configuration - SDK automatically shows status messages:

  • ✅ "⏳ Wait 45s before next ad" (cooldown)
  • ✅ "😔 No ads available" (no-fill)
  • ✅ "❌ Ad failed to load" (errors)
  • ✅ Auto-dismiss after 2-3 seconds
// No code needed! // Just call showAd() - SDK handles everything RewardedAd.showAd(); // ⏳ User sees auto-message if cooldown active

💰 Revenue & Payments

How you earn money and get paid

📊

Revenue Share

You earn 70% of all ad revenue

We keep 30% to cover infrastructure, support, and platform costs. Your share is calculated based on actual advertiser spend.

Example:
Advertiser pays $10 CPM → You earn $7.00 per 1,000 impressions
📅

Payment Schedule

NET-30 Monthly Payments

Earnings are paid out monthly, 30 days after the end of each month. Check the "Payouts" section for payment history and status.

Timeline:
January earnings → Paid on March 1st
February earnings → Paid on April 1st
💵

Minimum Payout

$50 USD minimum

Earnings below $50 will roll over to the next month until the threshold is met. No fees or penalties for low balance.

Example:
January: $30 → Rolls over
February: $40 → Total $70 → Paid out
💳

Payment Methods

Multiple options available

  • PayPal - Instant, no fees
  • Bank Transfer (ACH) - US only, 2-3 days
  • Wire Transfer - International, 3-5 days
  • Wise (TransferWise) - Global, low fees

Set up your payment method in the "Payouts" section.

📋

Tax Information

Required for payments over $600/year

US publishers need W-9 form. International publishers need W-8BEN form. We'll send you a 1099 form at year-end if applicable.

⚠️ Important: You're responsible for reporting earnings on your tax return. Consult a tax professional for advice.
📈

How to Maximize Revenue

Tips to increase your earnings:

  • ✅ Maintain high completion rate (80%+)
  • ✅ Ensure good viewability (60%+ viewable impressions)
  • ✅ Target high-CPM regions (US, UK, CA, AU)
  • ✅ Show ads at natural break points in gameplay
  • ✅ Offer valuable rewards to encourage ad views
  • ✅ Keep your game quality high to retain users

🧪 Testing Your Integration

Verify everything works before going live

1

Enable Debug Mode

See detailed logs in your browser console to track what's happening

JavaScript
// Enable debug mode BEFORE init
RewardedAd.enableDebug();

RewardedAd.init({
    appId: "YOUR_APP_ID",
    apiKey: "YOUR_API_KEY",
    userId: "test_user_123",
    onReward: function(reward) {
        console.log('✅ Test reward granted!');
    }
});

// You'll now see detailed logs:
// [BZZE SDK] SDK initialized
// [BZZE SDK] Auto-preloading ads...
// [BZZE SDK] Ad preloaded successfully
// etc.
2

Test Ad Flow

Click through the entire ad experience to verify all callbacks work

3

Verify Analytics Tracking

Check that your stats are being recorded in the Publisher Dashboard

JavaScript
// After watching a test ad, check analytics:
const analytics = RewardedAd.getAnalytics();
console.log('Impressions:', analytics.impressions); // Should be 1+
console.log('Completions:', analytics.completions); // Should be 1+ if completed
console.log('Clicks:', analytics.clicks);           // Should increment if clicked

// Then verify in Publisher Dashboard:
// 1. Go to Analytics section
// 2. Check "Total Requests" increased
// 3. Check "Total Impressions" increased
// 4. Check "Total Completions" increased (if completed)
// 5. Check revenue increased (by ~$0.005-0.01)
4

Test Edge Cases

Make sure error handling works correctly

5

Test GDPR/COPPA (If Applicable)

Verify compliance data is being sent correctly

JavaScript
// Test with GDPR enabled
RewardedAd.init({
    appId: "YOUR_APP_ID",
    apiKey: "YOUR_API_KEY",
    userId: "test_user_123",
    gdprApplies: true,
    gdprConsent: true, // Test with true, then false
    onReward: function(reward) {
        console.log('Reward granted');
    }
});

// Check browser Network tab:
// 1. Watch an ad
// 2. Look for POST to /v1/ads/request
// 3. Check request payload includes:
//    "gdpr": { "applies": true, "consent": true }
✅ Ready to Go Live?

Once all tests pass, you're ready for production! Start with a soft launch to a small percentage of users, monitor analytics for 24-48 hours, then scale up gradually.

🆘 Need Help?

We're here to support you

📧

Email Support

support@bzze.com

Response time: 24-48 hours

For technical issues, include:

  • Your App ID
  • Browser console logs
  • Steps to reproduce
  • Expected vs actual behavior
💬

Discord Community

Join 500+ publishers

  • Ask questions and get quick answers
  • Share integration tips
  • Get notified of updates
  • Connect with other developers
📚

Documentation

Complete technical docs

  • API reference
  • SDK methods and callbacks
  • Code examples
  • Video tutorials
🔔

Platform Status

Real-time uptime monitoring

  • API status: ● Operational
  • SDK CDN: ● Operational
  • Subscribe to incident alerts
  • View historical uptime (99.9%)
📰

Changelog & Updates

Stay informed of new features

  • Latest SDK version: v2.0.0
  • Recent updates and bug fixes
  • Upcoming features roadmap
  • Breaking changes announcements
🚀

Premium Support

For high-volume publishers (1M+ impressions/month)

  • Dedicated account manager
  • Priority email/Slack support
  • Custom integration assistance
  • Higher revenue share (80%)

Contact us to upgrade!

💡 Pro Tip: Before contacting support, try enabling debug mode and checking the browser console. Most issues can be diagnosed this way!

🔧 Troubleshooting

Common issues and solutions

❌ "Invalid API Key" Error

Solution: Make sure you're using the correct API Key from your game settings. Copy it exactly as shown in the "My Games" section.

❌ "No Fill" Messages

Solution: This means no ads are available at the moment. This is normal and can happen due to targeting, budget limits, or low ad inventory. Implement the onNoFill callback to handle this gracefully.

❌ Ads Not Loading

Solution: Check your browser's developer console for error messages. Ensure your game's domain is approved and matches the one registered in your account.

❌ Rewards Not Working

Solution: Make sure your onReward callback is properly implemented and actually grants the reward to the user. Test with console.log to verify the callback is being called.

Payouts & Earnings

AVAILABLE BALANCE
Balance ready for payout
$0.00
Minimum Payout: $50.00
Next Payout: Available Now
PENDING EARNINGS
Earnings in review period (7 days)
$0.00
Review Period: 7 days
Available On: -
TOTAL EARNINGS
All-time earnings from ads
$0.00
This Month: $0.00
Last Payout: Never
PAYOUT METHOD
Your configured payout method
PayPal
Not configured

Payout History

Date
Amount
Method
Status
Transaction ID
Actions
No Payouts Yet
Your payout history will appear here once you request your first payout.

Settings

Account Settings

Account management and configuration options will be available here.