# Attribution and rewards

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

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

## Attribution with sub\_id

Append your own attribution values to `action.payload.url` as query parameters before opening it: `sub_id`, plus optional `sub_id_2` … `sub_id_5`. Conversions come back on your [conversion Webhook](https://docs.aon.pro/api/webhooks) with the same `sub_id` values, so you can credit the right user, and earning status events carry the same values, so you can credit and reverse per user; see [Crediting users by sub\_id](https://docs.aon.pro/api/webhooks#crediting-users-by-sub_id).

```text
{action.payload.url}&sub_id={USER_ID}
```

Use `?` instead of `&` if the link has no query string yet.

-   The keys are exactly `sub_id`, `sub_id_2`, `sub_id_3`, `sub_id_4`, and `sub_id_5`. They are case-sensitive, and there is no `sub_id_1`.
-   URL-encode each value. Values are kept up to 2048 bytes each; longer values are cut.
-   AON removes these values before the user reaches the merchant.
-   On the [hosted page](https://docs.aon.pro/offer-wall/hosted-page), put them on the hosted link instead; the page passes them on to every offer.

## Click link lifetime

Click links have no time-based expiry, and you can cache and reuse them. A link keeps working while your application is serving, the placement is active, and the offer stays selected on the placement. After that, it opens an "unavailable" page instead of the offer.

Offers are matched to the user's resolved location, so refresh the list with their current location context when they next open the wall.

## Conversion amounts

`goals[].pricing.amount` on an offer is its listed payout before the AON platform fee. What you earn per conversion arrives as `amount` on the [conversion Webhook](https://docs.aon.pro/api/webhooks): a USD decimal string with exactly six decimal places, such as `"0.010000"`. Your share is rounded up to the next cent (minimum `0.01` when above zero), so a sub-cent conversion now arrives as `0.01`; if you convert `amount` into points, sub-cent conversions yield more points than before. Use decimal arithmetic when calculating rewards from it.

Conversion Webhooks are always delivered on Protocol v1.0, with `AON-Protocol-Version: 1.0`.

## Crediting users

Credit and reverse rewards by following [Crediting users by sub\_id](https://docs.aon.pro/api/webhooks#crediting-users-by-sub_id). In short: key credits by `earning_id`, use the amount from the event with the largest `sequence` rather than adding amounts together, deduplicate by `(application_id, event_id)`, and on `earning_rejected` reverse only what you already credited.

## Next

[Set up your Webhook](https://docs.aon.pro/api/webhooks)
