Offerwall for any website. Link, iframe, or button.

Put the Moonetix offerwall on any website, from WordPress to a custom app, with a signed link, an iframe, or a floating button. Your users earn your currency, and every reward reaches your server as a signed postback.

  • 3Ways to show it
  • 0SDKs to install
  • HTTPSAny site, any stack
WebsiteLink, iframe, button
earn.html
<iframe title="Offerwall"
  src="https://wall.moonetix.com/APP_ID?user_id=USER_ID&hash=HASH"
  style="border:0;width:100%;height:100vh"></iframe>

Go live in three steps.

Copy the code, replace the placeholders with the values from your dashboard under Apps, your app, Integration, and test before you launch.

  1. Build the signed link on your server

    Every link carries the ID of your signed-in user and an HMAC-SHA256 hash made with your link hash salt. The hash stops anyone from changing the user ID to open the wall as someone else, so build it on your server and never put the salt in a page.

    offerwall.php
    <?php
    // Build the link on your server, for the signed-in user
    $hash = hash_hmac('sha256', $userId, $linkHashSalt);
    $url  = 'https://wall.moonetix.com/' . $appId
          . '?user_id=' . rawurlencode($userId) . '&hash=' . $hash;
  2. Show it the way that fits your site

    Open the link from your menu, embed it on its own page, or add the floating button to every page. You can use more than one at once: all of them share the same rewards and postbacks.

    earn.html
    <iframe title="Offerwall"
      src="https://wall.moonetix.com/{APP_ID}?user_id={USER_ID}&hash={HASH}"
      style="border:0;width:100%;height:100vh"></iframe>
  3. Credit rewards with the postback

    Every reward reaches your server as a signed postback. Check the hash, add the reward once per transaction ID, and take it back if a later postback reverses it. Failed postbacks are retried up to 5 times.

    Postback macros and retries

    Dashboard, Postback tab
    https://yoursite.com/postback?user={user_id}&tx={transaction_id}&status={status}&reward={reward}&hash={hash}
yoursite.com/rewards
Earn rewards
EarnMy offers
  • Castle MergeReach level 10+1,500
  • FitTrackStart a free trial+2,000
  • Word RushPlay 3 days in a row+450
  • Budget PalSet up your first budget+800
Earn rewards
Pop-up over your page
Postback 200 OK

Right on your page

The floating button opens the offerwall in a pop-up, so users never leave the page they are on.

Everything the wall does for you

  • A full offerwall page

    Earn and My offers tabs, search, categories, and sorting, with the offers that fit each user’s country and device.

  • Your currency

    Every reward is shown in your own currency name and icon, calculated with your conversion rate and user split.

  • Your brand

    Colors, corner radius, padding, font size, and the currency icon are set in your dashboard, with no code.

  • Signed links

    Link security is on by default, so nobody can open your wall as one of your users.

  • Sub IDs

    Add up to five of your own values, such as the page or campaign, and get them back in every postback and report.

  • User support

    Users follow their offers in My offers and can report a missing reward right from the offer.

Test it, then launch.

Everything you need to check before real users see your offerwall, with the tools built into your dashboard.

  1. Open as a test user

    In Integration status on the Integration tab, open your offerwall as the user owner-test. Test visits are not counted as users.

  2. Check a link

    Paste a link your site built, or type a user ID to see the exact link your server should build. The two must be identical.

  3. Send a test postback

    Choose the user, status, and payout, and see exactly what your server answered, with the response code and time. Test transaction IDs start with test_.

  4. Test from a normal connection

    VPNs, proxies, Tor, and cloud networks are blocked, so test on home Wi-Fi or mobile data, in a country where offers run.

Launch checklist

0 of 11 ready

Common errors, fixed fast.

What you might see while you integrate the Website, what causes it, and the fix.

  • Link not valid

    The hash does not match the user ID in the link.

    FixSign the exact user ID with the link hash salt, not the postback secret key, as lowercase hex.

  • Missing user ID

    The user ID is empty or has characters we do not accept.

    FixUse 1 to 100 characters from A-Z a-z 0-9 . _ @ : + - and URL-encode it.

  • Blank iframe or pop-up

    The page is not on the website you registered for the app, or it is not https.

    FixEmbed it on an https page of that domain or a subdomain. For another site, add a new app.

  • No floating button

    data-button-url is missing or is not an offerwall link.

    FixUse the full signed link that starts with https://wall.moonetix.com/.

  • VPN or Proxy detected

    You are testing through a VPN, a proxy, or a cloud network.

    FixTest from a normal home or mobile connection.

  • Fewer offers than expected

    You hid some offers, or fewer offers run in that country or on that device.

    FixOpen Offers in your dashboard, set Status to Hidden, and click Show to bring an offer back.

  • Postback log shows 403 or 404

    Your script rejected the postback, or the URL is wrong.

    FixOpen the URL from the log in a browser and check your hash code.

  • Postback log shows a timeout

    Your script takes longer than 6 seconds to answer.

    FixAnswer with 200 first, and run slow work in the background.

  • Postback log shows 301 or 302

    Your URL redirects, for example from http to https.

    FixUse the final URL. Postbacks do not follow redirects.

At a glance

Works on
Any https website: WordPress, Next.js, Laravel, plain HTML, and more
Ways to show it
Link, iframe, floating button, or your own button
Embed rules
Frames and pop-ups load on the website you registered and its subdomains
Script size
One small script, only for the button and pop-up
Rewards
Signed server-to-server postback, retried up to 5 times
Price
Free for approved publishers

Other integrations

Website questions

What developers ask before they add the Website.

Stuck on something? Contact us

Do I need to install anything to add an offerwall to my website?

No. The offerwall runs on Moonetix. You add a signed link to your site, embed it with an iframe, or load one small script for the floating button. Your server only builds the link and receives postbacks.

Does it work with WordPress?

Yes. Build the signed link in a small plugin or your theme with the PHP example, then embed it on an Earn page or add the floating button. The Academy has a step by step WordPress guide.

Why does the link need a hash?

The hash is an HMAC-SHA256 of the user ID, made with your link hash salt. It proves that your server created the link for that user, so nobody can change the user ID in the address bar and earn as someone else.

Why does the offerwall not load in my iframe?

For safety, frames and pop-ups only load on https pages of the website you registered for the app and its subdomains. Opening the link directly in a tab, a new window, or a mobile WebView works everywhere.

How do my users get their rewards?

Moonetix sends a signed postback to your server for every reward. Your server checks the hash and credits the user in your currency. A later reversal arrives with the same transaction ID, so you can take the reward back.

Can I choose which offers appear?

Yes. On the Offers page of your dashboard you can hide any offer, and it disappears from your offerwall, the embedded wall, the floating button, and the Offers API of that app.

Turn your traffic into earnings.

Create a free publisher account and earn from every offer your users complete on your website, app, game, or community.

Worldwide targeting