Key takeaways
- Integration status, at the top of the Integration tab, has up to five rows: Offerwall link, Users reached your offerwall, Postback, Offers API and Mobile SDK, each done, needs attention or not checked yet.
- Check a link, Open as a test user and Send a test postback run each test on the spot, and Check a link names the exact hash mistake when a signature does not match.
- Failed visits stay in the Users row for 7 days and the Postback row weighs the last 24 hours, so watch the Last one time to see whether a fix holds.
What does Integration status show in Sharklio?
Integration status is the box at the top of your app’s Integration tab. It has one row per part of your setup: Offerwall link, Users reached your offerwall, Postback, and, once you use them, Offers API and Mobile SDK. Each row is done, needs attention, or not checked yet, and the badge next to the heading sums them up as All set, Needs attention, or a count such as 2 of 3 done. Buttons on the rows run the tests right away: Check a link, Open as a test user, and Send a test postback.
Labels below were checked against the dashboard on November 2, 2026. For the full test routine before launch, read How to test your app before it goes live.
Where to find it and how to read it
Open Apps and click Manage next to your app. Live apps open on the Integration tab, and only live apps have it. As the box itself says, “We never visit your site, so login-only pages are fine.” Every check works on what reaches Sharklio: links you paste, visits to your wall, requests from your server, and your server’s answers to postbacks.
- Icons. A check mark means done, an alert sign means needs attention, a clock means not checked yet.
- Which rows count. The first three always count. Offers API and Mobile SDK show only under their tab of How will you show the offers? until your server uses them; after that they always show and count.
- Refresh. After Open as a test user, the rows update when you come back to the dashboard tab.
The Postback bar above the stats, with its Working, Failing, Not set up, or No postbacks yet badge, uses the same health check as the Postback row. To see how the integrations differ, read Sharklio integration options: link, iframe, API and SDKs.
Every status at a glance
Times and numbers are examples. Your dashboard fills in your own.
| Row | Message | Meaning and fix |
|---|---|---|
| Offerwall link | Not checked yet. Paste a link your site made, and we check it right away. No real user needed. | No check and no users yet. Click Check a link. |
| Offerwall link | Your last link check passed, 2 hours ago. | Done. |
| Offerwall link | Your users open the offerwall with valid links. | Done: real users get in, and failures are rare. |
| Offerwall link | Some offerwall links failed in the last 7 days. Paste one your site made to see why. | Many visits had a bad hash or user ID. See the next section. |
| Users reached your offerwall | No visits yet. Open your offerwall as a test user to see what your users get. | Click Open as a test user. |
| Users reached your offerwall | Test visit OK, 5 mins ago. No real users yet. | The wall works. Add it to your site or app. |
| Users reached your offerwall | 12 users in the last 7 days, the last one today. | Done, unless a red note follows. |
| Users reached your offerwall | No users in the last 7 days. The last one came on Oct 20. | Traffic stopped. Check that your menu item, button or link still opens the wall. |
| Postback | Add your postback URL. Your users are not credited until you do. | Click Add postback URL. |
| Postback | Not tested yet. Send a test postback to check that your server credits users. | URL saved, nothing sent yet. Click Send a test postback. |
| Postback | Test postback OK, 3 mins ago. Real postbacks start with the first reward. | Done. |
| Postback | Your last test postback failed with HTTP 404, 3 mins ago. Fix your endpoint, then test again. | The test got a non-2xx code or “no answer”. Fix, then test again. |
| Postback | Your server accepted the last postback 2 hours ago. | Done. |
| Postback | Your server did not accept the last postback, 1 hour ago. Some users may be missing their rewards. | Real postbacks fail. See the Postback section. |
| Offers API | No requests yet. Your server asks for the offers each time a user opens your earn page. | Click View setup. |
| Offers API | Last request with your API key 4 mins ago. | Done. |
| Mobile SDK | No sessions yet. Your server creates one each time a user opens the offerwall in your app. | Click View setup. |
| Mobile SDK | 25 sessions in the last 7 days, 22 opened the offerwall. Last one 1 hour ago. | Done. |
| Mobile SDK | Your server created 6 sessions in the last 7 days, but none opened the offerwall. Pass the token to Sharklio.open() right away. | Tokens are made but never opened. See the SDK section. |
| Mobile SDK | Sessions failed in the last 7 days. Create a new session each time the user opens the offerwall. | The wall got tokens it could not use. See the SDK section. |
The Offerwall link row and Check a link
This row needs attention only when three things are true: in the last 7 days visits failed with a wrong or missing hash or without a valid user ID; no users came, or at least one visit failed for every 20 users; and no link check has passed since the last failure. A few failures next to steady traffic, such as an old bookmark, stay a note in the Users row. The signature has no row of its own: a bad hash shows up here, and Check a link tells you why.
Click Check a link, paste a full link your site made for a real signed-in user, and click Check link. It is checked like the offerwall checks it and not saved. The result starts with a summary such as “One problem found. Fix it, then check the link again.” The messages you will meet most:
| Message | Fix |
|---|---|
| user_id is missing. / user_id is empty. | Build the link only once the user is signed in. |
| user_id is URL-encoded twice. | Encode the ID once. |
| The + in user_id turns into a space. | URL-encode the ID, so + becomes %2B. The WHATWG URL Standard parser turns a plain + into a space, and encodeURIComponent, per MDN, encodes it. |
| user_id has characters that are not allowed. | Use 1 to 100 letters, numbers and . _ @ : + - |
| user_id looks like an email address. | A warning. Use a random ID that never changes. |
| The link still has {USER_ID} or {HASH} in it. | You pasted the template. Paste a link your site made. |
| hash is missing. | The hash check is on, so the wall shows Link not valid. Add the hash. |
| This link is for your other app, ... | Use this app’s App ID. |
| Unknown parameter: ... | Ignored. Use sub1 to sub5, which come back in your postback. |
For “hash does not match this user ID.”, the checker tests the usual mistakes and names the one it finds, for example “You used the postback secret key. Use the link hash salt instead.”, the API key, a hashed URL-encoded ID, the salt and user ID swapped, plain SHA-256, another HMAC algorithm, your other app’s salt, Base64 instead of 64 hex characters, or other letter case. HMAC, described in RFC 2104, mixes a secret key into the hash; Sharklio uses the link hash salt as the key and the user ID as the message, so swapping them changes the result. You also get the Expected hash for this user ID and the Expected link, each with Copy. If nothing matches, think of an old salt after New link hash salt or a hash made for another user ID. The offerwall link docs have the code.
Test a link, in the same window, shows the exact link for any user ID. Opening it counts as a visit by that user, so use a test account.
Do not fix a hash error by turning off the hash check
With Turn off the hash check under Link security, anyone who knows or guesses a user ID can open that user’s offerwall and My offers. Fix your server code instead. If the salt leaked, follow How to rotate your keys and link salt.
The Users reached your offerwall row
This row counts the different user IDs that opened your wall in the last 7 days, today included, leaving out previews and the test user owner-test. Open as a test user opens your wall in a new tab as owner-test, with the hash filled in when the check is on, and is not counted as a user.
Once users open offers, a grey note splits them by integration, for example “Users who opened an offer, by integration: Offerwall 40, Floating button 12.” The floating button tags its own visits, plain links and iframes count as Offerwall, and adding via=link counts direct links apart. If the button does not show at all, see how to add a floating Earn button.
A red note lists the visits that failed in the last 7 days, with the time of the last one. Each reason matches a page your user saw:
- with a wrong or missing hash: Link not valid. Use Check a link.
- without a valid user ID: Missing user ID. Use Check a link.
- with an SDK session that is not valid: Session not valid.
- with an SDK session already used or expired: Session ended.
A grey note may count visits from blocked users: user IDs blocked on our side, who see Not available. Nothing to fix in your code. If Open as a test user shows VPN detected or Network not supported, no test visit is recorded; VPN or proxy detected on an offerwall explains why.
The Postback row
The row judges real postbacks. Test postbacks decide it only until the first real one, then show as a note such as “Last test postback OK, 5 mins ago.” when newer. A postback is accepted when your server answers with a 2xx code within 6 seconds; RFC 9110 defines 2xx as received, understood, and accepted. We do not follow redirects, so a 3xx counts as a failure.
The warning shows when the newest real postback failed, or when more postbacks failed than were delivered in the last 24 hours, retries included. That second rule can keep the warning up after your fix. The Postback tab words it plainly: “Most postbacks of the last 24 hours failed, so some users may be missing their rewards.” Click View failed postbacks, fix your endpoint, and send the missed ones again as How to resend a failed postback explains. For the hash check, read Postback security.
Accepted is not the same as credited
The row only knows your server answered 2xx. Check your database too: one credit per transaction, no matter how often it arrives. Idempotent postbacks shows how.
The Offers API and Mobile SDK rows
Offers API. Done once a request with your API key reaches us, plus how many users opened an offer from your start_url links in 7 days. Mobile SDK session requests use the same key and count too; Reporting API calls do not. A wrong key never counts, so if the row stays on No requests yet, read the error your server gets, such as invalid_api_key, in the Offers API errors. See also Build your own offerwall with an Offers API.
Mobile SDK. Each open needs a fresh session, valid once and for 10 minutes. Sessions made but never opened mean your app does not pass the token to Sharklio.open(), passes another value, or opens it too late. “Sessions failed” with no session ever made usually means the App ID in your app and the API key on your server belong to different apps. If sessions stop, the row keeps its check mark and says “Last session” with a date, so compare it with your traffic. The Android SDK troubleshooting table and How to add an offerwall to an Android app cover the setup.
How to re-test after a fix
- Link. Deploy, make a fresh link for a real user, and paste it into Check a link. A pass sets the row to “Your last link check passed, just now.” unless enough new failures arrive. Open the link from a normal connection too.
- Users. Old failures stay in the red note for 7 days. If the “Last one” time stops moving, the fix holds.
- Postback. Send Credited (1), then Reversed (2), about 10 seconds apart. The Test postback result window shows the response code, answer time, the request we sent, and your server’s exact answer. Then resend failed real ones from Reports, Postbacks.
- SDK or API. Create a session and open it at once in a debug build, or call the Offers API for a test user. The row shows the new time.
The Testing and troubleshooting docs list common problems, and the Postbacks page explains retries.
How Sharklio fits
Sharklio is a pay-per-result affiliate network, and every credit and every reversal reaches your server as a signed server-to-server postback, so the Postback row is the one to keep green. If a row stays on Needs attention, contact us with the text from Copy full report. See how the wall works, or get in touch.
Frequently asked questions
Why does Integration status say Needs attention when my offerwall works?
One counted row has an alert sign. Often the Users row still lists failures from the last 7 days, or the Postback row weighs the last 24 hours. Check the “Last one” time to see whether it is still happening.
Why is my postback not working?
Your server did not answer 2xx within 6 seconds, it redirected, or a firewall blocked us. View failed postbacks shows the code and answer; fix it, send a test, then resend.
Do test postbacks change the Postback status?
Only before your first real postback. After that, a newer test shows only as a note.
Does Open as a test user count as a user?
No. Visits as owner-test are not counted. A link opened from Test a link with any other user ID does count.
Why are the Offers API and Mobile SDK rows missing?
They show only under their tab of How will you show the offers?, until your server first uses them. After that they always show.
Does Check a link save my link?
No. The link is checked and not saved. Only a count of passed checks is kept, so the row knows your last check passed.


