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

# Send test events without being charged

Advertiser campaigns · For advertisers · Updated 30 October 2026
Web version: https://www.affiliateos.ai/help/campaigns/send-test-events

A test event checks one of your events and is never charged. Press **Send test** next to the event, or send it from your server with `"test": true`. Either way, the event turns **Verified**, which is what the launch checklist needs before you can submit.

## Steps

### Send test from the campaign page

Under **Events you pay for**, each event that isn't verified yet has a **Send test** button. Press it, and "Test event received - event marked verified" confirms it. No API key or code is needed. This proves the event is set up, not that your server can send it.

### Send a test from your server

Send the same request as a live event, with `"test": true` added:

```bash
curl -X POST "https://affiliateos.xyz/v1/advertiser/events" \
  -H "Authorization: Bearer $AFOS_ADVERTISER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "advertiserUserId": "tp_test_01",
    "eventKey": "level_25",
    "eventId": "test_level_25_01",
    "timestamp": "2026-10-30T19:06:00.000Z",
    "appId": "<your product ID>",
    "campaignId": "<your campaign ID>",
    "test": true
  }'
```

Example for Tidewater Putt. A test needs no click ID, can run before the campaign is approved and comes back as `approved` without a charge. This one checks your key, your `appId`, the event key and the shape of your request.

### Give every test its own eventId

A test uses up its `eventId` the same way a live event does. Send a second test with the same one and it comes back as `duplicate`. Send a live event with a test's `eventId` and the live one comes back as `duplicate` too, and is never counted. Start test IDs with something like `test_`.

### Check it worked

The event shows **Verified** on the campaign page. **Event logs** lists the test with a **test** badge and the event's price beside it, and tests are never billed. When every required event is **Verified**, the checklist's **Verify it works** item is done. Next: [Submit for approval and go live](https://www.affiliateos.ai/help/campaigns/submit-for-approval-go-live).

## What a test checks, and what it doesn't

| A test checks | A test doesn't check |
|---|---|
| Your API key, when sent from your server | That your app or site captured `afos_click_id` |
| That the `appId` and event key match an event | The 48-hour timestamp check |
| The required fields in your request | Your balance, whether the campaign is live or the `transactionId` a live purchase or deposit event must carry |

A test never charges you and never pays a publisher.

> **Tests are free. The first real check costs one event.** The only full check of click ID capture is a real tap on your live campaign, followed by a live event from your server. That live event is charged its price like any other. Open **Event logs** afterwards: `approved` means it matched the tap.

## Tests after you go live

You can still send tests from your server on a live campaign. They stay free, and the event keeps its **Live** status. Keep `test` on in your staging setup and off for real users, so a real user's event is never sent as a test and left unpaid to the publisher.
