Offerwall link builder

Build a signed Moonetix offerwall link from your App ID, a user ID, and your link hash salt, then copy it as a link, an iframe, or a floating Earn button. Everything runs in your browser.

Your values

Apps, your app, Integration. 24 letters and numbers.

The ID of the signed-in user, exactly as your server stores it.

Stays in this browser. Not the postback secret key.

Computed in your browser with Web Crypto. Nothing is sent.

Result

Hash
-
Signed offerwall link
-
earn.html
-

Build this link on your server in production. Never ship the salt to the browser.

Read the guide: Test your app before launch

How to use the offerwall link builder

Copy your App ID and your link hash salt from your dashboard under Apps, your app, Integration. Type the user ID of a test account, add sub IDs if you track placements, and the builder shows the hash, the full signed link, and ready-to-paste iframe and Earn button code. Nothing you type is sent anywhere: the hash is computed in your browser with the Web Crypto API.

Use it to check your own server code. If the link your server builds for the same user ID does not match the one here, the difference is in your code, not in Moonetix.

How the hash is built

hash = HMAC-SHA256(user_id, link_hash_salt), as lowercase hex
link = https://wall.moonetix.com/APP_ID?user_id=USER_ID&hash=HASH

The user ID is the message and the salt is the key. Sub IDs are not part of the hash, so users can change them: use them for tracking, never for crediting. The offerwall link docs show the same code in PHP, Node.js, and Python.

Keep the salt on your server

This page is a testing tool. In production, build the hash on your server and send only the finished link to the browser or the app. A salt in JavaScript, in an app bundle, or in a public repository lets anyone open your offerwall as any of your users. If a salt ever leaks, rotate it: how to rotate keys and the link salt explains the safe order.

Common problems

  • Link not valid (403). The hash does not match the user ID. Check that you hash the exact user ID string you put in the link, with the link hash salt, not the postback secret key.
  • Numbers vs strings. Hash the user ID as a string. 42 and 042 are different users.
  • Encoding. Hash the raw user ID, then URL-encode it in the link. Do not hash the encoded value.

Frequently asked questions

Is it safe to type my link hash salt here?

The page never sends it anywhere, but a test app or a test salt is still the better habit. Never put your real salt in client-side code.

Which hash does the Moonetix offerwall link use?

HMAC-SHA256 of the user ID, keyed with your link hash salt, as lowercase hex.

Do sub IDs change the hash?

No. Sub IDs are not part of the hash, so you can add or change them without rebuilding it.

Can I use this link in a mobile app?

Yes, in a WebView or the system browser, if your backend builds it. For a native screen, use the Android, iOS, Unity, Flutter, or React Native SDK with a session token instead.

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