Integration Hub
Explore Pollmatic's offerwall solutions and preview how your users will experience surveys and offers.
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.
Offers
App installs, sign-ups, and trial subscriptions. High payouts for completed actions.
Choose Your Integration Method
Select the approach that best fits your technical requirements and use case.
Estimate Your Earnings
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.
Website Integration Guide
Embed Pollmatic offerwalls and surveys into your website using simple iframe or script embeds.
Integration Steps
Get API Key
Navigate to My Apps and copy your unique API Key for the offerwall.
Embed Code
Paste the iframe code into your HTML page where you want the offerwall.
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.
Integration Methods
Choose your preferred method to integrate the offerwall.
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.
<iframe
src="https://pollmatic.io/offerwall/YOUR_API_KEY/[USER_ID]"
style="width:100%;height:800px;"
scrolling="yes"
frameborder="0"
></iframe>
YOUR_API_KEY with your API key from the dashboard and [USER_ID] with your user's unique identifier.
Script Tag (Interstitial)
Embed a lightweight survey popup on your website using a single script tag. Customize the theme and colors below.
<script
src="https://pollmatic.io/sdk/offerwall.js"
key="YOUR_API_KEY"
sub_id="[USER_ID]"
data-theme="standard"
data-color="#4F46E5"
></script>
YOUR_API_KEY and [USER_ID]. Place this script before the closing </body> tag.
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.
<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>
YOUR_API_KEY and [USER_ID]. Clicking the image opens your offerwall in a new tab.
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.
<script src="https://pollmatic.io/sdk/surveybox.js" key="YOUR_API_KEY" sub_id="[USER_ID]" data-count="8" data-cols="4"></script>
YOUR_API_KEY and [USER_ID]. Add data-theme and data-color attributes to customize.
Pre-Launch Checklist
How Postbacks Work
Server-to-server communication ensures reliable reward attribution.
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.
https://yoursite.com/api/pollmatic-postback
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:
<?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';
?>
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');
});
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
Always validate the signature parameter before crediting. Store your Secret Key securely in environment variables, never in client-side code.
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.
Postbacks may be retried. Store transId in your database and reject duplicates to prevent double-crediting users.
Offerwall URL Format
https://pollmatic.io/offerwall/{API_KEY}/{SUB_ID}
URL Parameters
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.
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 AccountMobile 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.
Platform Support
- WKWebView (iOS 8+)
- Swift & Objective-C
- No ATS exceptions needed
- SwiftUI compatible
- WebView (API 21+)
- Kotlin & Java
- Jetpack Compose ready
- No permissions required
- React Native
- Flutter
- Cordova / Capacitor
- Unity WebView
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.
Construct the Offerwall URL
The URL your WebView will load follows this pattern:
https://pollmatic.io/offerwall/{API_KEY}/{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.
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.
Pollmatic Offerwall in WebView
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.
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)
}
}
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)
}
}
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.
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.
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.
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
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