> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudx.io/llms.txt
> Use this file to discover all available pages before exploring further.

# App Open Ads

> Integrate CloudX app open ads in Unity games

Full-screen ads shown when users open your app or return it to the foreground.

```csharp theme={null}
using CloudX;
using UnityEngine;

public class AppOpenExample : MonoBehaviour
{
    private const string AppOpenAdUnitId = "app_open_main";

    void Start()
    {
        // Subscribe to callbacks
        CloudXAdsCallbacks.AppOpen.OnAdLoadSuccess += OnAppOpenLoaded;
        CloudXAdsCallbacks.AppOpen.OnAdLoadFailed += OnAppOpenLoadFailed;
        CloudXAdsCallbacks.AppOpen.OnAdShowSuccess += OnAppOpenShown;
        CloudXAdsCallbacks.AppOpen.OnAdShowFailed += OnAppOpenShowFailed;
        CloudXAdsCallbacks.AppOpen.OnAdHidden += OnAppOpenHidden;
        CloudXAdsCallbacks.AppOpen.OnAdClicked += OnAppOpenClicked;
        CloudXAdsCallbacks.AppOpen.OnAdRevenuePaid += OnAppOpenRevenuePaid;

        // Load app open ad
        CloudXSdk.LoadAppOpen(AppOpenAdUnitId);
    }

    public void ShowAppOpen()
    {
        if (CloudXSdk.IsAppOpenReady(AppOpenAdUnitId))
        {
            // Show with optional placement and custom data
            CloudXSdk.ShowAppOpen(AppOpenAdUnitId, "app_foreground", "custom_data");
        }
        else
        {
            Debug.LogWarning("App open ad not ready yet");
        }
    }

    private void OnAppOpenLoaded(CloudXAd ad)
    {
        Debug.Log($"App open ad loaded: {ad.AdUnitId}");
    }

    private void OnAppOpenLoadFailed(string adUnitId, CloudXError error)
    {
        Debug.LogError($"App open ad failed to load: {adUnitId} - {error}");
    }

    private void OnAppOpenShown(CloudXAd ad)
    {
        Debug.Log($"App open ad shown: {ad.AdUnitId}");
    }

    private void OnAppOpenShowFailed(CloudXAd ad, CloudXError error)
    {
        Debug.LogError($"App open ad failed to show: {ad.AdUnitId} - {error}");
        // Reload for next time
        CloudXSdk.LoadAppOpen(AppOpenAdUnitId);
    }

    private void OnAppOpenHidden(CloudXAd ad)
    {
        Debug.Log($"App open ad hidden: {ad.AdUnitId}");
        // Reload for next time
        CloudXSdk.LoadAppOpen(AppOpenAdUnitId);
    }

    private void OnAppOpenClicked(CloudXAd ad)
    {
        Debug.Log($"App open ad clicked: {ad.AdUnitId}");
    }

    private void OnAppOpenRevenuePaid(CloudXAd ad)
    {
        Debug.Log($"App open ad revenue: ${ad.Revenue} from {ad.NetworkName}");
    }
}
```
