OpenAdverts
Not Connected

Become an Affiliate

Monetize Your Website with Decentralized Advertising

Join OpenAdverts's decentralized advertising network and earn from advertisements displayed on your site. Each time a viewer redeems an advertisement on your site, the advertiser's bounty is paid out on-chain in a single transaction — split between the viewer, your affiliate-receiving contract, and the third-party addresses you configured. Payouts are atomic, settled by smart contract, and recorded on the Polygon chain.

Join OpenAdverts's decentralized advertising network and earn from advertisements that advertisers have specifically designated to your affiliate contract. When a viewer clicks Collect on an advertisement rendered on your site, the smart contract atomically pays the advertiser's bounty out across the viewer, your affiliate-receiving contract, and the third-party addresses you have configured — all in one transaction, with no intermediary, no payout queue, and no platform escrow holding your funds.

Why Join Our Network:

  • You set your own revenue split. Each affiliate configures its own claimPercentages on its affiliateClaimInfo contract, deciding how every advertiser bounty is divided between the viewer, your affiliate-receiving contract, and up to six third-party addresses.
  • Atomic, on-chain settlement. Payouts happen in the same transaction the viewer signs to claim a bounty — there is no waiting period and the platform cannot withhold or delay your share.
  • Full transparency. Every claim, bounty, and split is recorded on Polygon and independently verifiable.
  • Community-vetted advertisers. Advertisers must pass an ADV-token-balance-weighted community vote before going live, providing brand-safety filtering before a designated advertisement can ever appear on your site.
  • No minimum traffic. Sites of any size are welcome — your revenue scales with how many viewers actually claim.
  • POL or USDC. Advertisers fund campaigns in either token; payouts arrive in the same token the campaign was funded in.

How You Earn:

  • Integrate the OpenAdverts widget on your site: load the CDN script and mount a container element supplying your affiliateReceivingAddress, the advert contract you wish to display, the connected viewer wallet, and (optionally) an opaque affiliateContext selector — your server derives the third-party beneficiary set from it.
  • Visitors see only advertisements that an advertiser has explicitly designated to your affiliate contract on-chain.
  • When a viewer clicks Collect, the widget calls our signing service for a server-signed reward signature and emits it to your host page via onSignature.
  • Your host application is responsible for submitting processReward from the viewer's wallet — the on-chain contract then atomically distributes the bounty according to your claimPercentages.
  • Funds land directly in your affiliate-receiving contract; you may withdraw at any time.

What Makes Us Different:

  • You control the split: The advertiser sets the bounty per claim; you decide how that bounty is divided across viewer, your contract, and third-party recipients.
  • No platform escrow: Smart contracts settle every claim atomically — there is no payout schedule and the platform cannot freeze your share.
  • On-chain anti-fraud: Every redeemed bounty is gated by an EIP-191 server signature plus on-chain replay/nonce/block checks; the widget adds hCaptcha and mouse-movement gating before requesting a signature.
  • Brand safety: Advertisers go through a community ADV-vote with an open-ended window, a 20% quorum, and a 60% approval threshold before they can be designated to any affiliate.
  • You choose what runs: An advertisement can only appear on your site if (a) the advertiser designated your affiliate-receiving contract on the advert, and (b) you choose to render that advert contract in your widget integration.
  • Your data stays yours: The widget collects no personal data; it only fetches advert content from Irys and forwards a signed reward payload.
💰
You Set the Split
Configure your own claimPercentages — you decide how every advertiser bounty is divided between the viewer, your contract, and up to six third-party addresses.
Atomic Settlement
Your share is paid in the same transaction the viewer claims. No payout queue, no holding account, no manual withdraw schedule.
🔒
No Platform Escrow
Funds flow advertiser → your affiliate-receiving contract directly. The platform never holds your money.
Vote-Gated Advertisers
Advertisers must pass an ADV-token-weighted community vote (20% quorum, 60% approval) before being eligible for designation.
📊
Full Transparency
Every claim, bounty, and split is on-chain. Reconcile your revenue against Polygon directly — no platform-side reporting required.
🌐
POL or USDC
Advertisers fund campaigns in either token. You receive the same token used to fund the campaign.

⚡ Requirements to Join:

🌐Website Ownership: You must own and control the website domain you submit.
👛Crypto Wallet: A Web3 wallet (e.g. MetaMask) is required to sign your application and the affiliate agreement. Earnings are paid to your affiliate-receiving contract, which is configured separately from your signing wallet.
Community Approval: ADV holders vote on your application; approval requires a 20% quorum and a 60% approve-side share. Voting power equals each voter's ADV balance at the moment they cast their vote.
📝Content Standards: Family-friendly content, no illegal or harmful material.
🔗Developer Integration: Ability to add the OpenAdverts CDN script and a widget container element to your site, supplying your affiliateReceivingAddress and the advert contract address you wish to display. Your application must provide the connected viewer wallet and call processReward from that wallet after the widget returns a signature.
📈No Minimum Traffic: Sites of any size are welcome — revenue scales with how many viewers actually claim.

🚀 Getting Started Process:

1
Submit Your Website
Connect your wallet and submit your website URL below, along with a brief description of your content and audience to help ADV holders evaluate your application.
2
Community Vote
ADV holders cast votes on your application. Voting is open-ended (no fixed deadline) and is weighted by each voter's ADV balance at the moment they cast their vote (not snapshotted). Approval requires a 20% quorum and a 60% approve-side share; rejection requires the same 60% on the deny side. Quorum and threshold may be adjusted by future governance votes.
3
Approval & Configuration
Once approved, your affiliate-receiving contract becomes eligible to be designated by advertisers. Configure your claimPercentages on your affiliateClaimInfo contract — this defines, for every advertiser bounty paid through your affiliate, how the bounty is split across viewer, your receiving contract, and your third-party addresses.
4
Integrate & Earn
On your site, render the OpenAdverts widget for each advertisement designated to you: load the CDN script, mount the container with data-advert-contract, data-affiliate-receiving, data-storage-id, data-viewer-address, and (optionally) data-affiliate-context. When a viewer clicks Collect, the widget emits a server-signed reward payload via onSignature; your host application calls processReward on the advert contract from the viewer's wallet, and the smart contract atomically distributes the bounty according to your claimPercentages.

📦 Widget Integration Reference

The OpenAdverts widget is a single CDN script that mounts a responsive advertisement into a DOM node on your site — a fixed 533:300 (~16:9) media frame inside a container whose width you may tune within a 40vw–95vw clamp, collapsing to a single column below a 600px viewport. The full React host wrapper and a vanilla HTML/JS mount snippet are embedded in the application form below. Here is the complete public API the widget accepts.

PropTypeRequiredDescription
advertContractAddressstring (0x…)yesThe on-chain advert contract this slot displays.
affiliateReceivingAddressstring (0x…)yesYour approved affiliate-receiving contract.
storageIdstringyesIrys transaction ID of the advert media payload.
viewerAddressstring (0x…)yesThe connected viewer's wallet address.
onSignature(sigData) => Promise<void>yesCalled when the viewer clicks Collect. Forward sigData unmutated to your backend.
affiliateContextstringnoOpaque, affiliate-defined selector (e.g. a content/thread id) forwarded verbatim to your /api/affiliateAUTH, which derives the authoritative third-party beneficiary set server-side. The widget never interprets it and the client never supplies address values.
emptyStatebooleanno (default false)Render the placeholder creative with an inert Collect button and skip advert loading — for an empty slot or a not-yet-connected viewer. Fully inert (no Irys fetch, no auth, no signature, no hCaptcha).
openAdvertsApiUrlstringno (default https://www.openadverts.io)Override only for testing.
onError(err) => voidnoCalled with { code, message?, cause? } on widget failure.
themeobjectnoOptional theming. Any subset of bg, bgImage, borderRadius, borderColor, textColor, btnBg, btnColor, shadow, glowColor, glowBg. Each key maps 1:1 to the matching --openadverts-* CSS variable.

🎨 Theming

The widget exposes a set of CSS custom properties so it can blend into your site's look-and-feel. Structure (grid, 533:300 media frame, font family) is fixed so advertisers see consistent presentation; the container width is tunable within a 40vw–95vw clamp — colors, radii, shadows, and the hover glow are all yours.

CSS variabletheme keyDefaultEffect
--openadverts-bgbgdark gradientContainer background (gradient or solid)
--openadverts-bg-imagebgImagenoneBackground image layer
--openadverts-border-radiusborderRadius12pxContainer corner radius
--openadverts-border-colorborderColorrgba(255,255,255,0.1)Container border color
--openadverts-text-colortextColor#ffffffPrimary text
--openadverts-text-color-secondary#afafafBody/description text. Set via CSS only — no theme key.
--openadverts-shadowshadow0 4px 20px rgba(0,0,0,0.3)Box shadow around the container
--openadverts-btn-bgbtnBg#22FFAECollect button background
--openadverts-btn-colorbtnColor#282828Collect button text
--openadverts-glow-colorglowColortransparentHover glow color. Set any color to enable.
--openadverts-glow-bgglowBgderived from glowColorFull override for the hover-glow background
--openadverts-widthwidth100%Container width, clamped 40vw–95vw of the screen (the 40vw floor protects the advertiser's placement and cannot be lowered).

Three equivalent ways to apply a theme: (1) plain CSS — set the variables on any ancestor of the mount node; (2) data-theme-* attributes on the auto-mount <div> (e.g. data-theme-btn-bg="#e94560"); (3) the theme object on window.OpenAdverts.mount() or your React host wrapper.

⚠️ Integration Invariants

  • Never mutate sigData. The signature is computed against the exact byte order of every field. Any reorder, rename, or value change invalidates the on-chain preimage and processReward will revert.
  • Never re-sign with the viewer's wallet. The widget emits a server-signed payload — do not route it through signMessage.
  • Never supply tpAddresses from the client. Your /api/affiliateAUTH derives the third-party set server-side and commits to it in the signature. Forward the tpAddresses the widget returns in sigData byte-for-byte into processReward; any reorder or substitution invalidates the on-chain preimage.
  • Production requires SRI. Refuse to load the CDN bundle without the published integrity hash.
  • Deploy POST /api/affiliateAUTH on your own origin. The widget calls this endpoint automatically (same-origin) before requesting a reward signature; without it every Collect attempt fails authentication. A working reference implementation lives in OTHERREFS/affiliateAUTH-reference.js — copy it to src/app/api/affiliateAUTH/route.js, implement deriveThirdPartyAddresses() for your revenue-share model, set AFFILIATE_SIGNING_PRIVATE_KEY=0x…, and register the corresponding public address in the submission form below as your Affiliate Signing Public Key (EOA).
Ready to Apply?
Submit your website below to apply to the OpenAdverts affiliate network. Once your application passes the community vote, advertisers can designate your affiliate contract and — once you have integrated the widget — your visitors will start seeing those advertisements. All settlement is on-chain and atomic.
⚠️ Please connect your wallet to submit your website
🔌
Wallet Not Connected
Please connect your wallet to submit your website as an affiliate