# Offer Wall

Source: https://docs.aon.pro/offer-wall

> Derived from the same AON Docs release as the source page.

An Offer Wall is a Developer Portal placement type (`offerwall`) that shows a scrollable list of offers your users can browse and open. When a user completes an offer, AON sends a conversion to your Webhook with the attribution values you attached, so you can reward that user.

Create an **Offer Wall** placement in your application's Placements page in the [Developer Portal](https://developer.aon.pro/). The placement id (`plc_…`) is the only identity the wall needs.

## How it works

1.  You show the wall: either open the AON-hosted page, or call Offer Query with your placement id and render the list yourself.
2.  The user taps an offer. You open its tracked click link, `action.payload.url`, with your own user id appended as `sub_id`.
3.  The user completes the offer with the merchant.
4.  AON sends a conversion to your [Webhook](https://docs.aon.pro/api/webhooks) carrying the same `sub_id`, followed by earning status events as the payout is confirmed or reversed.
5.  You credit (or reverse) the reward for that user.

## Choose how to show the wall

| Option | Use it when | What you build |
| --- | --- | --- |
| [Hosted page](https://docs.aon.pro/offer-wall/hosted-page) | You want a wall live with no code, or your app can open a web view. | Nothing: open the AON-hosted link in a web view or browser. |
| [API](https://docs.aon.pro/offer-wall/api) | You want the wall rendered in your own native or web UI, with your own layout and styling. | A list screen that calls Offer Query with your placement id and pages through the results. |

Both options use the same placement, the same offers, and the same `sub_id` attribution, so you can start with the hosted page and move to the API later.

## Pages in this section

| Page | Covers |
| --- | --- |
| [Hosted page](https://docs.aon.pro/offer-wall/hosted-page) | The no-code wall link and how to open it. |
| [API integration](https://docs.aon.pro/offer-wall/api) | Request headers and body, user context, filtering, where to call from, the response, and paging. |
| [Render offers](https://docs.aon.pro/offer-wall/rendering) | Which fields to show on each card, images, and opening an offer later. |
| [Attribution and rewards](https://docs.aon.pro/offer-wall/rewards) | `sub_id`, click link lifetime, conversion amounts, and crediting users. |

The placement's **Integration & test** dialog in the Developer Portal also has a **Copy for LLM** button that copies an integration brief for this exact placement, ready to paste into a coding assistant.

## Checklist

-   Offer Wall placement created in the Developer Portal.
-   [Webhook](https://docs.aon.pro/api/webhooks) endpoint configured to receive conversions.

Hosted page:

-   Hosted link opened in a web view, with `sub_id` set to your user id.

API:

-   Offer Query sent with `X-AON-Placement-Id`, `AON-Protocol-Version: 1.0`, and `pagination.limit` set explicitly.
-   Server-side calls include the user's actual `country` or `location_ids` under `context.user_profile` and forward the user's `User-Agent`.
-   Optional fields (`short_description`, `entity.logo`, `claims`, images) handled when missing, and an empty state for `CATALOG_NO_AVAILABLE_OFFERS`.
-   Next pages fetched with `extra.pagination.next_offset` while `extra.pagination.has_more` is `true`.
-   `sub_id` appended to `action.payload.url` before opening it.

## Next

[Hosted page](https://docs.aon.pro/offer-wall/hosted-page)
