ENGINEERING EXAMPLE / NO LIVE REWARDS
Verify the event. Record the outcome.
A signed callback, an approved activity and a settled reward are different outcomes. This example runs offline with synthetic records. No participant, campaign or redemption was tested.
Reproduce four signature checks
Download adgem-postback.ts, verify.mjs and fixtures.json into one folder. With Node.js 25.6.1 run node --experimental-strip-types verify.mjs. It checks the source hash, matching signature, tampered amount, missing signature and wrong key without contacting a server.
Read seven synthetic ledger records
Pending and failed records leave the balance unchanged. An example credit adds 100 neutral fixture points; its duplicate adds zero. A reversal removes those points, a repeated reversal has zero effect, and an unmatched reversal stays unresolved. The final fixture balance is zero.
This reconciliation model is separate from the production ledger. The pinned AdGem validator does not test the separate PubScale reversal path, concurrency, fraud decisions or settlement. Do not send these fixtures to live callback endpoints.
Before joining an activity
Check the offer shown to you for location, age/account/device requirements, permitted actions, time limits, attribution conditions, validation delays, reversal rules and available reward methods. Signup does not establish eligibility. Keep pending, failed, credited and redeemed outcomes separate.
Explore the consumer pathBefore launching a campaign
Agree the actual event contract, secret handling, duplicate and reversal behavior, eligible markets, reward inventory, audit records and rollback procedure. A partner inquiry becomes qualified only after scope, permission, budget and feasibility review.
Discuss a business integrationPublished by QuestX about its own service. Actual eligibility, activity completion, reward receipt and settlement are not verified by this publication.