Overview

Integration Hub

Explore Pollmatic's offerwall solutions and preview how your users will experience surveys and offers.

Live Offerwall Preview
pollmatic.io/offerwall/demo

This is a live demo. Survey availability varies by your location and device.

Two Revenue Streams, One Integration

Surveys

Market research surveys from premium providers. Users share opinions and earn rewards.

5-20 min $0.50 - $5.00

Offers

App installs, sign-ups, and trial subscriptions. High payouts for completed actions.

2-10 min $0.25 - $10.00

Choose Your Integration Method

Select the approach that best fits your technical requirements and use case.

Feature
iFrame Embed
Direct Link
API Integration
Setup Time
5 minutes
2 minutes
1-2 hours
Technical Skill
Basic HTML
None
Backend Dev
Customization
Native UI Control
Best For
Websites
Quick Launch
Mobile Apps

Estimate Your Earnings

5,000
10%
$0.50
Daily Earnings $250
Monthly Earnings $7,500
Yearly Earnings $91,250

Estimates based on industry averages. Actual earnings depend on user demographics, survey availability, and completion rates.

Ready to Start Monetizing?

Choose your platform and follow our step-by-step integration guide.

Web Integration

Website Integration Guide

Embed Pollmatic offerwalls and surveys into your website using simple iframe or script embeds.

Integration Steps

1

Register

Create your publisher account and register your website in the dashboard.

Sign up free →
2

Get API Key

Navigate to My Apps and copy your unique API Key for the offerwall.

3

Embed Code

Paste the iframe code into your HTML page where you want the offerwall.

4

Setup Postbacks

Configure your postback URL to receive completion notifications.

Learn more →

Quick Start Guide

Integrate Pollmatic's offerwall in minutes. Choose between a full-page iframe embed or a lightweight interstitial popup. Both methods support postback notifications for rewarding your users.

5 Minutes Setup Copy, paste, and you're live
Secure Postbacks Server-to-server reward delivery
Customizable Match your site's branding
How It Works
User
Your Site
Pollmatic
Completion
Postback
Reward User

Integration Methods

Choose your preferred method to integrate the offerwall.

Recommended

iFrame Embed

Embed the full offerwall directly into your page. Best for dedicated earn pages where you want to display all available surveys and offers.

Full offerwall UI Surveys + Offers tabs Responsive design
HTML
<iframe
  src="https://pollmatic.io/offerwall/YOUR_API_KEY/[USER_ID]"
  style="width:100%;height:800px;"
  scrolling="yes"
  frameborder="0"
></iframe>
Replace YOUR_API_KEY with your API key from the dashboard and [USER_ID] with your user's unique identifier.
Lightweight

Script Tag (Interstitial)

Embed a lightweight survey popup on your website using a single script tag. Customize the theme and colors below.

Live Preview
HTML — Your Embed Code
<script
  src="https://pollmatic.io/sdk/offerwall.js"
  key="YOUR_API_KEY"
  sub_id="[USER_ID]"
  data-theme="standard"
  data-color="#4F46E5"
></script>
Replace YOUR_API_KEY and [USER_ID]. Place this script before the closing </body> tag.
Banner

Image Banner Link

Embed a simple clickable image banner that links directly to your offerwall. No scripts, no iframes — just a clean image link that works anywhere.

Works in emails Instant load Custom image URL
Choose where users are redirected when they click the banner
Leave empty to use the default banner image
Preview
HTML — Your Embed Code
<a href="https://pollmatic.io/offerwall/YOUR_API_KEY/[USER_ID]?tab=offers" target="_blank">
  <img src="https://pollmatic.io/assets/img/pollmatic_logo.png" alt="Pollmatic" width="468" style="max-width:100%;height:auto;border-radius:8px;" />
</a>
Replace YOUR_API_KEY and [USER_ID]. Clicking the image opens your offerwall in a new tab.
Grid

Survey Box Grid

Embed a grid of survey boxes directly into your page. Each box shows survey details like time, payout, and match rating. Fully customizable layout and styling.

Multiple themes Configurable grid Live preview
Live Preview (max 12 boxes)
Loading preview...
HTML — Your Embed Code
<script src="https://pollmatic.io/sdk/surveybox.js" key="YOUR_API_KEY" sub_id="[USER_ID]" data-count="8" data-cols="4"></script>
Replace YOUR_API_KEY and [USER_ID]. Add data-theme and data-color attributes to customize.

Pre-Launch Checklist

API Key is from My Apps dashboard
Sub ID is unique per user (e.g., database ID)
Iframe has sufficient height (600px+ recommended)
Page is served over HTTPS
Postback URL is configured
Tested with a real completion

How Postbacks Work

Server-to-server communication ensures reliable reward attribution.

User
Completes survey/offer
1. Completion
Pollmatic
Validates & processes
2. POST Request
Your Server
Credits user reward
1

Configure Your Postback URL

In your app settings under My Apps → Edit, set your Postback URL. Pollmatic will send a POST request to this URL for every completion.

URL FORMAT
https://yoursite.com/api/pollmatic-postback
2

Handle the Postback

When a user completes an offer or survey, Pollmatic sends a POST request with the following parameters. Choose your backend language below:

postback.php
<?php
// Pollmatic Postback Handler
$secret = 'YOUR_SECRET_KEY';

// Read POST parameters
$subId     = $_POST['subId'] ?? '';
$reward    = $_POST['reward'] ?? 0;
$transId   = $_POST['transId'] ?? '';
$offerType = $_POST['offer_type'] ?? '';
$signature = $_POST['signature'] ?? '';
$status    = $_POST['status'] ?? 0;

// Verify signature: MD5(subId + transId + reward + secret)
$expected = md5($subId . $transId . $reward . $secret);

if ($signature !== $expected) {
    http_response_code(403);
    die('Invalid signature');
}

// Prevent duplicates
if (hasTransaction($transId)) {
    die('Duplicate');
}

// Credit the user
creditUser($subId, $reward, $offerType, $transId);

echo 'OK';
?>
postback.js
const crypto = require('crypto');
const express = require('express');
const app = express();

app.use(express.urlencoded({ extended: true }));

app.post('/api/pollmatic-postback', (req, res) => {
  const SECRET = 'YOUR_SECRET_KEY';
  const { subId, reward, transId, offer_type, signature } = req.body;

  // Verify signature
  const expected = crypto
    .createHash('md5')
    .update(subId + transId + reward + SECRET)
    .digest('hex');

  if (signature !== expected) {
    return res.status(403).send('Invalid signature');
  }

  // Credit the user in your database
  creditUser(subId, parseFloat(reward), offer_type, transId);

  res.send('OK');
});
postback.py
import hashlib
from flask import Flask, request

app = Flask(__name__)
SECRET = 'YOUR_SECRET_KEY'

@app.route('/api/pollmatic-postback', methods=['POST'])
def handle_postback():
    sub_id     = request.form.get('subId', '')
    reward     = request.form.get('reward', '0')
    trans_id   = request.form.get('transId', '')
    offer_type = request.form.get('offer_type', '')
    signature  = request.form.get('signature', '')

    # Verify signature
    expected = hashlib.md5(
        (sub_id + trans_id + reward + SECRET).encode()
    ).hexdigest()

    if signature != expected:
        return 'Invalid signature', 403

    # Credit the user
    credit_user(sub_id, float(reward), offer_type, trans_id)

    return 'OK', 200
Security Tip

Always validate the signature parameter before crediting. Store your Secret Key securely in environment variables, never in client-side code.

3

Test Your Integration

Use the Debug Mode in your app settings to send test postbacks. Verify that your endpoint responds with 200 OK and credits appear in your database.

Always Deduplicate

Postbacks may be retried. Store transId in your database and reject duplicates to prevent double-crediting users.

Offerwall URL Format

URL
https://pollmatic.io/offerwall/{API_KEY}/{SUB_ID}

URL Parameters

Parameter Required Description
API_KEY Required Your unique app API key from the publisher dashboard.
SUB_ID Required A unique identifier for the end user (e.g., database ID, username).

Postback Parameters

These parameters are sent via POST to your configured Postback URL on each completion.

Parameter Type Description
subId string The Sub ID you passed in the offerwall URL.
payout float Publisher revenue amount (USD).
reward float Amount to credit the user in your currency.
reward_name string Currency name (e.g., "Coins", "Points").
offer_id string Unique offer identifier.
offer_name string Human-readable offer/survey name.
offer_type string One of: survey, offer, task, shortlink.
transId string Unique transaction ID (e.g., SV-1000001). Use for deduplication.
userIp string IP address of the completing user.
country string Two-letter ISO country code.
status int 1 = completed successfully.
signature string MD5(subId + transId + reward + secret_key)

Frequently Asked Questions

Yes! Pollmatic supports multiple themes (Standard, Classic, Aurora) and custom color palettes. Configure these in your app settings under Theme Settings.

Pollmatic retries failed postbacks automatically. You can also view pending/failed postbacks in your dashboard under Postback Logs.

Yes. Modern browsers block mixed content. Your page must be served over HTTPS for the iframe to load correctly.

If a survey provider reverses a completion, Pollmatic will send a postback with status=2. Handle this by deducting the previously credited reward.

Ready to start earning?

Create Your Publisher Account
Mobile Integration

Mobile App Integration Guide

Embed Pollmatic offerwalls and surveys into your iOS and Android applications using native WebView containers.

Mobile Integration

Integrate Pollmatic into your iOS or Android app using a simple WebView. No SDK download required — just load a URL and start earning.

Zero SDK Overhead No CocoaPods, Maven, or npm packages
Always Up-to-Date Server-side updates, no app releases needed
Cross-Platform Works with native, React Native, Flutter
Integration Flow
Your App
WebView
Pollmatic
Survey Done
S2S Postback
Credit User

Platform Support

iOS
  • WKWebView (iOS 8+)
  • Swift & Objective-C
  • No ATS exceptions needed
  • SwiftUI compatible
Android
  • WebView (API 21+)
  • Kotlin & Java
  • Jetpack Compose ready
  • No permissions required
Hybrid
  • React Native
  • Flutter
  • Cordova / Capacitor
  • Unity WebView
1

Register Your App

Sign in to your publisher dashboard, navigate to My Apps, and register your mobile application. You'll receive a unique API Key.

2

Construct the Offerwall URL

The URL your WebView will load follows this pattern:

URL
https://pollmatic.io/offerwall/{API_KEY}/{SUB_ID}
Sub ID

Replace {SUB_ID} with a unique identifier for the current user (e.g., their database ID or UUID). This is essential for accurate reward tracking.

3

Load in a WebView

Create a full-screen WebView (Android) or WKWebView (iOS) and load the constructed URL. Make sure JavaScript is enabled. See the Native Code tab for complete implementation snippets.

1,250 pts
Surveys Offers
Consumer Insights Survey
8 min
+120
Shopping Habits Study
5 min
+85
App Usage Feedback
12 min
+200
Gaming Preferences
6 min
+95

Pollmatic Offerwall in WebView

Drop-in Boilerplate

Copy these snippets into your project. Replace YOUR_API_KEY and USER_SUB_ID with your actual credentials. Both snippets enable JavaScript, DOM storage, and handle external link routing.

OfferwallViewController.swift
import UIKit
import WebKit

class OfferwallViewController: UIViewController, WKNavigationDelegate {

    private var webView: WKWebView!

    // ── Replace with your credentials ──
    private let apiKey = "YOUR_API_KEY"
    private let subId  = "USER_SUB_ID"

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Earn Rewards"

        // Configure WebView
        let config = WKWebViewConfiguration()
        config.preferences.javaScriptEnabled = true

        webView = WKWebView(frame: view.bounds, configuration: config)
        webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        webView.navigationDelegate = self
        view.addSubview(webView)

        // Load the Pollmatic Offerwall
        let urlString = "https://pollmatic.io/offerwall/\(apiKey)/\(subId)"
        if let url = URL(string: urlString) {
            webView.load(URLRequest(url: url))
        }
    }

    // Handle external links (App Store, etc.)
    func webView(_ webView: WKWebView,
                 decidePolicyFor navigationAction: WKNavigationAction,
                 decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

        if let url = navigationAction.request.url,
           navigationAction.targetFrame == nil {
            // Open in Safari for external links
            UIApplication.shared.open(url)
            decisionHandler(.cancel)
            return
        }
        decisionHandler(.allow)
    }
}
OfferwallActivity.kt
package com.example.myapp

import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.webkit.*
import androidx.appcompat.app.AppCompatActivity

class OfferwallActivity : AppCompatActivity() {

    // ── Replace with your credentials ──
    private val apiKey = "YOUR_API_KEY"
    private val subId  = "USER_SUB_ID"

    @SuppressLint("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val webView = WebView(this).apply {
            settings.javaScriptEnabled = true
            settings.domStorageEnabled = true
            settings.mixedContentMode =
                WebSettings.MIXED_CONTENT_NEVER_ALLOW

            webViewClient = object : WebViewClient() {
                override fun shouldOverrideUrlLoading(
                    view: WebView?,
                    request: WebResourceRequest?
                ): Boolean {
                    val url = request?.url ?: return false
                    val host = url.host ?: ""

                    // Keep Pollmatic URLs in WebView
                    if (host.contains("pollmatic.io")) return false

                    // Open external links in browser
                    startActivity(Intent(Intent.ACTION_VIEW, url))
                    return true
                }
            }

            webChromeClient = WebChromeClient()

            loadUrl(
                "https://pollmatic.io/offerwall/$apiKey/$subId"
            )
        }

        setContentView(webView)
    }
}
JavaScript Must Be Enabled

Pollmatic requires JavaScript and DOM Storage to function correctly. Without these settings, surveys will not load and conversions will not track.

Mobile-Specific Considerations

Follow these guidelines to ensure a smooth experience for your users and accurate reward attribution.

Handle External Links

Some offers require users to visit external URLs (e.g., the App Store or Play Store). Always implement a navigation delegate that routes target="_blank" links to the system browser. See the code snippets in the Native Code tab.

HTTPS & App Transport Security

Pollmatic is served entirely over HTTPS, so no ATS exceptions are needed on iOS. On Android, ensure android:usesCleartextTraffic is set to false in your manifest for maximum security.

Process Rewards Server-Side

Never grant rewards based on client-side events. Always use server-to-server (S2S) postbacks to verify completions. Configure your postback URL in the Publisher Dashboard. See the Web Integration Guide's Postback Setup tab for implementation details.

Mobile Deployment Checklist

API Key is from publisher dashboard → My Apps
Sub ID is unique per user (database ID or UUID)
JavaScript is enabled in WebView settings
DOM Storage is enabled (required for tracking)
External links route to system browser
Postback URL is configured for S2S reward verification
Tested on physical device (not just emulator)

Mobile FAQ

No. Pollmatic is fully web-based. You simply load the offerwall URL inside a WebView — no CocoaPods, Maven, or npm packages required.

Yes! Use react-native-webview or Flutter's webview_flutter package. The URL and configuration are identical — just enable JavaScript and load the offerwall URL.

Currently, the integration uses API Key and Sub ID. For additional user segmentation or targeting, contact support via the publisher dashboard.

Use a test Sub ID (e.g., test_user_001) and your real API Key. Surveys will appear based on your IP/country. Always do a final test on a physical device before production release.

Ready to monetize your mobile app?

Create Your Publisher Account