> ## Documentation Index
> Fetch the complete documentation index at: https://onlytraffic.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Postbacks & Delivery Log

> Send Tracking Link conversions to your own tracker with macros, and inspect every delivery, request and response in the log.

Besides [pixels](/tracking-links-pixels), every Tracking Link can call your own URL on each conversion. This is how you feed Keitaro, Binom, Voluum, a spreadsheet endpoint or any custom backend.

## Postback URL

Set the URL in the link's **Destinations** section. It is called on every conversion event of that link: new subscribers, transactions and chat dialogs. Use the `{{event}}` macro to tell them apart on your side.

```
https://your-tracker.com/postback?event={{event}}&click_id={{subscriber.click_id}}&amount={{transaction.amount}}
```

Macros are filled per event and URL-encoded automatically. Fields that do not apply to the current event resolve to an empty string: for example, `{{transaction.amount}}` is empty on a subscription event.

## Macros

### Click

| Macro                         | Value                                                                                            |
| ----------------------------- | ------------------------------------------------------------------------------------------------ |
| `{{subscriber.click_id}}`     | The click ID: your `click_id` parameter if you passed one, otherwise the captured ad platform ID |
| `{{click.external_click_id}}` | Same click ID, from the click record                                                             |
| `{{click.ip}}`                | Visitor IP at click time                                                                         |
| `{{click.user_agent}}`        | Visitor user agent at click time                                                                 |
| `{{click.country}}`           | Visitor country code                                                                             |
| `{{click_params.*}}`          | Any `params[key]=value` you appended to the link URL                                             |

### Subscriber

| Macro                               | Value                                 |
| ----------------------------------- | ------------------------------------- |
| `{{subscriber.id}}`                 | Fan's OnlyFans ID                     |
| `{{subscriber.username}}`           | Fan's masked username                 |
| `{{subscriber.name}}`               | Fan's display name                    |
| `{{subscriber.revenue}}`            | Lifetime revenue from this fan so far |
| `{{subscriber.date_subscribe_iso}}` | Subscription time, ISO 8601           |

### Transaction (transaction events only)

| Macro                      | Value                                                                |
| -------------------------- | -------------------------------------------------------------------- |
| `{{transaction.id}}`       | Transaction ID                                                       |
| `{{transaction.type}}`     | `subscription`, `resubscription`, `tip`, `message`, `post`, `stream` |
| `{{transaction.amount}}`   | Amount in USD, net of the OnlyFans fee                               |
| `{{transaction.revenue}}`  | Same as amount for your own links                                    |
| `{{transaction.date_iso}}` | Transaction time, ISO 8601                                           |

### Campaign

| Macro                   | Value                                               |
| ----------------------- | --------------------------------------------------- |
| `{{event}}`             | `new_subscriber`, `new_transaction` or `new_dialog` |
| `{{campaign.id}}`       | Campaign ID behind the link                         |
| `{{campaign.name}}`     | Link name                                           |
| `{{onlyfans.username}}` | Your OnlyFans account username                      |
| `{{smartlink.hash}}`    | The link's hash                                     |

<Tip>
  The macro picker under the URL field in Studio inserts any of these with one click, so you do not have to type them.
</Tip>

## Delivery rules

* Events are queued the moment a conversion is detected and usually leave within a minute.
* Your endpoint must be publicly reachable over HTTP or HTTPS. HTTPS certificates are verified.
* Any HTTP response completes the delivery; the status code and body are stored in the log.
* If the request cannot complete (timeout, connection refused), it is retried up to 3 times, 10 minutes apart.
* A stopped link sends no further conversion events. The `marketing_stop` event is the exception, so trackers can close the campaign.

## Delivery log

**Tracking Links > Logs** shows every delivery for all your links: pixels and custom postbacks in one place. Filter by link, event, platform and state, and expand any row to see the exact request and the exact response.

| State     | Meaning                                                                                                              |
| --------- | -------------------------------------------------------------------------------------------------------------------- |
| Delivered | The endpoint or ad platform accepted the event                                                                       |
| Failed    | The request failed, returned a non-2xx code, or the ad platform rejected the event. The response body has the reason |
| Pending   | Queued or between retry attempts                                                                                     |
| Skipped   | Intentionally not sent: the link was stopped or the pixel was archived before delivery                               |

The log refreshes automatically every 10 seconds, so you can keep it open while testing: click your link with a test `click_id`, complete a subscription, and watch the event arrive and get delivered.

Access tokens and other credentials are masked in logged requests.

<Info>
  Pixel test events sent from the **Test** button go directly to the platform's Test Events tool and do not appear in this log. The log shows real conversion traffic.
</Info>

## Troubleshooting

<AccordionGroup>
  <Accordion title="No rows in the log">
    No conversions have happened yet. Clicks alone do not create deliveries; events fire when a fan subscribes, pays or chats. Check the link's stats for fans first.
  </Accordion>

  <Accordion title="Deliveries marked Failed">
    Expand the row. The response code and body are the endpoint's own answer: a 404 means the URL path is wrong, a 401/403 means your tracker expects other credentials, a Meta or TikTok error message names the exact field it rejected.
  </Accordion>

  <Accordion title="My tracker shows the conversion without a click ID">
    The visitor arrived without a `click_id` parameter, and no ad platform ID was captured. Confirm your ads point at the Tracking Link URL with `&click_id={your_tracker_macro}` filled by the tracker.
  </Accordion>

  <Accordion title="Deliveries stopped after I stopped the link">
    That is by design: a stopped link is final and sends no further conversion events, including for fans acquired earlier.
  </Accordion>
</AccordionGroup>
