> AffiliateOS Help Center. Index of every article for AI tools: https://www.affiliateos.ai/help/llms.txt

# Go-live checklist

Advertiser campaigns · For advertisers · Updated 30 October 2026
Web version: https://www.affiliateos.ai/help/campaigns/go-live-checklist

Run the first three groups, and the forwarding checks if you use an attribution tool, before you choose **Submit for approval**. The rest need a live campaign: run them with your first live event. Each line says where to confirm it.

## Account and campaign

| Check | Where to confirm |
|---|---|
| You can sign in at the [advertiser log in](https://app.affiliateos.xyz/login?type=advertiser) | The dashboard opens on **Overview** |
| The product is a mobile app (iOS, Android or both) or a website, not a mix | **Campaigns**, the product on your campaign |
| Website only: the landing URL is the exact public HTTPS page you want people on | The campaign's **Destination** |
| Website only: a once-per-user **Primary result** is chosen | The campaign's **Events you pay for** |
| Every event has an event key and a price | **Events you pay for** |
| How you send events is chosen | **Connect your app**, one option picked |
| An API key is minted and stored only in your server's environment | **API keys** lists it as **Active** |
| Your balance is $50 or more | **Billing**, or the checklist's **Add funds** item |

## Click ID capture

| Check | Where to confirm |
|---|---|
| Website: opening your landing URL with `?afos_click_id=checklist-click-1` stores that value on the visitor | Your own database |
| Mobile: your install referrer, install matching or attribution tool path stores a real `afos_click_id` on a new user | Your own database |
| The click ID is still on the user after they sign out and back in | Your own database |

## Test events

| Check | Where to confirm |
|---|---|
| Each required event is sent with `"test": true`, or with **Send test**, and comes back `approved` | The API response, or the "Test event received" message after **Send test** |
| Each required event shows **Verified** | **Events you pay for** |
| Each test shows as a row in the log, not charged | **Event logs** |
| Submit is refused while any required event isn't **Verified** yet | **Submit for approval** stays greyed out |

## First live event, after approval

| Check | Where to confirm |
|---|---|
| A live event with a real stored click ID comes back `approved` | The API response and **Event logs** |
| **Balance left** drops by that event's price | The campaign page |
| Sending the same `eventId` again comes back `duplicate`, and the balance doesn't move | The API response |
| A purchase or deposit event without `transactionId` comes back `rejected` | **Event logs** |
| An event without a click ID comes back `missing_attribution`, and isn't charged | **Event logs** |

> **Only live, matched events are charged.** Test events, events without a click ID and repeats are never charged. Live events sent before approval aren't charged either. Funds are non-refundable.

## Running controls

| Check | Where to confirm |
|---|---|
| After **Pause**, a live event comes back `campaign_paused` | The API response |
| **Resume** works while your balance covers the cheapest paid event | The campaign is **Live** again |
| A balance below a live campaign's cheapest paid event pauses your live campaigns | The campaign reads **Paused** |

## Reporting

| Check | Where to confirm |
|---|---|
| Mobile: **Clicks**, **Installs**, **Spend** and **Balance left** show | The campaign page, once live |
| Website: **Primary results** shows instead of installs | The campaign page, once live |
| Clicks rise after real taps | The campaign page |

## Forwarding from an attribution tool

Only if you picked **Your attribution tool posts to AffiliateOS**.

| Check | Where to confirm |
|---|---|
| **Name in your attribution tool (optional)** matches the tool's event name. Case doesn't matter. | **Events you pay for** |
| A test sent under the tool's name verifies the matching event | The event turns **Verified** |
| Every forwarded event still carries the stored `afos_click_id` as `clickId` | **Event logs** shows no `missing_attribution` |

When every row passes, [submit for approval](https://www.affiliateos.ai/help/campaigns/submit-for-approval-go-live). The request format and every status are in the [advertiser events reference](https://www.affiliateos.ai/help/developers#advertiser-events).
