Docs
Integrate the Gully Offerwall
Sign in to the dashboard with Gully ID (open to everyone), create a placement or a campaign, then wire it up here.
Embed on a site or web game
Paste the snippet from your placement. It adds an iframe served from offers.kre8.fun that only your listed origins may frame.
<div id="gully-offerwall"></div>
<script src="https://offers.kre8.fun/widget/offerwall.js"
data-placement="pk_…" data-target="#gully-offerwall" async></script>
Options: data-mode="modal" with GullyOfferwall.open() from a button, and data-theme='{"cyan":"#ff7a00","night":"#000"}' to override the Studio Light colors (night = ground, ink = cards, cyan = accent, blue = links, green, white = text, muted, font).
Web and PC placements pay USDC.e (bridged USDC on Gully Chain, 6 decimals) to the player's Gully account. iOS and Android placements never show crypto actions or crypto rewards: players earn your points instead.
Report game events from your server
Advertisers whose offer is a game milestone send a signed postback from the game server (or Nakama) when the player reaches it. The client never reports progress.
POST https://offers.kre8.fun/v1/postback
X-Gully-Key: pbk_… (campaign postback key)
X-Gully-Timestamp: 1793000000 (unix seconds, ±300 s)
X-Gully-Nonce: 16-64 chars [A-Za-z0-9_-], never reused
X-Gully-Signature: hex HMAC-SHA256(secret, timestamp + "." + nonce + "." + rawBody)
{ "clickId": "clk_…", "event": "level_reached", "value": 5 }
clickId arrives on your launch URL as ?gully_click=; games that use Gully ID can send userId (the Gully ID sub) instead. Replays return 409, wrong signatures 401, business rejections 200 with { ok: false, reason }.
Unity (Gully Game SDK)
var wall = new GullyOfferwallClient("pk_…");
var feed = await wall.GetOffersAsync(gullyIdAccessToken);
var start = await wall.StartAsync(feed.offers[0].id, gullyIdAccessToken);
// in-game progress is reported by your game server's postback, never by the client
wall.OpenWidget(); // or render feed.offers in your own UI
The module ships in the Gully Game SDK (Runtime/Offerwall) with a sample and a Nakama postback hook.
Grant points with reward callbacks
For points rewards (mobile placements, or players without a Gully account) we POST to your placement's callback URL, signed the same way with your placement secret sk_…:
{ "completionId": "cmp_…", "userId": "…", "points": 100, "currency": "gems", "campaignId": "camp_…" }
Grant once per completionId and answer 2xx. We retry with backoff for up to 8 attempts. You also receive the reward value and your share in USDC.e on Gully Chain.