Skip to content

Offerwall Integration Guide


There are three available methods to integrate the AdGem Offer Wall into your website or app.

  1. Direct Link
  2. iFrame
  3. WebView

Requirements

Before you Begin:

  • Must have an active AdGem account
  • The minimum user device Operating System requirements are Android 9.0 and higher and iOS 15.8 and higher
  • In order for your app to have access to AdGem's offers, you will need to ensure your app is approved in the AdGem system. App setup and approval instructions can be found HERE. By default, your app will not be enabled on offers until you have completed the intital integration steps. Please reach out to your dedicated Publisher Support Advocate with any questions.

Step 1 - Creating a New Property

1. Click on Properties & Apps in the Left Nav

2. Click on the New Property Button

Screenshot

You must have a unique Property/App ID for each website you want to integrate the Offer Wall on. For example, if you have multiple website URLs, they each must be setup separately from the AdGem Dashboard.

3. Select Desktop/Web from the Platform dropdown, complete and create the property.

Screenshot

Step 2 - Edit Property Information

View Property Information

  1. Click Options > Edit

    Screenshot

  2. Navigate to the Offerwall tab.

    Screenshot

Required Fields in the Offerwall Tab

  • The Currency Name (singular and plural) must be filled in for the offerwall to render properly.
  • The Multiplier value must be applied. The multiplier reprsents the amount of virtual currency to reward the user for every $1 earned in Publisher Payout.
    • If the multiplier is less than 10, by offerwall will show decimal values only and cannot be rounded.

Once on the Offerwall settings page, you can find the integration links (Direct Link & iFrame) to add to your website’s Offer Wall underneath the preview. Additional WebView examples are provided HERE.

Dashboard Provided Links

  • Direct Link will be labeled "Web Offerwall Direct Link"
  • iFrame will be labled "Full Screen iFrame Code"
Screenshot

When possible, please append the following parameters:

Mobile Advertising ID Description
gaid Google Advertising ID, available when the developer is using Google Play Services
idfa Apple Advertising ID, available when the user has not limited ad tracking

Note: All parameter names and their values are case-sensitive.

Parameters Details
app_version The version of your app where the click originated
device The user’s device type, for example ‘Moto E Plus’
device_name The user’s device name
ip The IP Address for the user who completed the offer
useragent The User Agent from the user’s default browser app
os_version The user’s Operating System version number
platform The platform this user’s device is using, for example ‘ios’
c1 A custom parameter value as set by the publisher
c2 A custom parameter value as set by the publisher
c3 A custom parameter value as set by the publisher
c4 A custom parameter value as set by the publisher
c5 A custom parameter value as set by the publisher

iFrame & WebView Code Samples:

  <iframe src="https://adunits.adgem.com/v1/wall?appid={app_id}&playerid=“ style="position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden; z-index:999999;">Your browser doesn't support iframes</iframe>
  func webView(_ webView: WKWebView,
     createWebViewWith configuration: WKWebViewConfiguration,
     for navigationAction: WKNavigationAction,
     windowFeatures: WKWindowFeatures) -> WKWebView? {

    if let url = navigationAction.request.url {
        UIApplication.shared.open(url)
    }
    return nil
    }
  webView.webViewClient = object : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
        request?.url?.let { url ->
            val intent = Intent(Intent.ACTION_VIEW, url)
            startActivity(intent)
            return true
        }
        return false
    }
  }
  webView.setWebViewClient(new WebViewClient() {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
      Uri url = request.getUrl();
      if (url != null) {
          Intent intent = new Intent(Intent.ACTION_VIEW, url);
          startActivity(intent);
          return true;
      }
      return false;
  }
  });

Service Response

IMPORTANT: Replacing playerid

The offerwall url must be modified to replace the dummy parameter {playerid} with your parameter that represents the unique player as used internally in your application. This identifies the player so that virtual currency can later be attributed to their account via the callback request. The player ID has to remain constant (for the unique player in your application) so that players are prevented from completing an offer more than once, and are able to receive their rewards.

NOTE: Missing playerid

Please note that tracking url clicks that do not contain a playerid value will be redirected to a 404 error page.

REQUIRED: Player ID Structure

All playerid values that you return should only use lowercase alpha numeric values. A good playerid value may look like: abc-123-efg-456, but should NOT look like: aBc-123-Efg-456.

Your playerid should be alphanumeric and should not include emojis or any special characters. The max character limit for the playerid value is 256.

REQUIRED: App ID Structure

The app ID cannot be removed from the click URL structure. Without the app ID as a passed parameter, the offerwall will fail to load.

NOTE: User Agent Parsing

AdGem uses the user agent to determine the player device/platform. Without this field, we will not be able to determine the correct targeting logic, or mobile user player experience when loading the offerwall. Manipulating or overriding the user agent will result in a poor player experience.



Updated on December 23, 2025