Product
Publishers
Advertisers
Networks
Help
Pause animations
Browse help topics
How-to Advertiser

Forward events from AppsFlyer or Adjust

Updated

View as Markdown

AffiliateOS isn’t a built-in partner inside AppsFlyer or Adjust, so nothing turns on with a switch in your tool. Your server, which already receives your tool’s events, forwards each one to us, with the tool’s event name and the user’s stored afos_click_id.

See also: Setup without an SDK

On this page

Before you start

  • A server that already receives your attribution tool’s events, such as its server callbacks.
  • An ak_ key, your appId and your campaignId: see Send events server to server (S2S).

Steps

  1. Choose Your attribution tool posts to AffiliateOS

    On the campaign page, under Connect your app, choose Your attribution tool posts to AffiliateOS. You can also pick it when you create the campaign.

  2. Add your tool’s name to each event

    For each event, fill in Name in your attribution tool (optional) with the name your tool gives it, for example af_purchase. Your server can then send the tool’s name as eventKey, and we match it to the right event. Case doesn’t matter.

    What the user didEvent keyName in your tool
    Finished chapter 1chapter_1af_level_achieved
    Bought the starter packstarter_pack_purchaseaf_purchase

    Example for Tidewater Putt.

  3. Get afos_click_id into the install data

    Use your tool’s links as your product’s App Store URL and Google Play URL, so the afos_click_id we add rides along to your tool. Read it on your server from the tool’s install data and save it on the user. Without a tool, see the other ways in Capture afos_click_id on your site or app.

  4. Forward each event

    In the same server code that receives the tool’s event, send it on to https://affiliateos.xyz/v1/advertiser/events:

    JSON
    {
      "clickId": "<stored afos_click_id>",
      "advertiserUserId": "tp_7731",
      "eventKey": "af_purchase",
      "eventId": "<your tool's ID for this event>",
      "timestamp": "2026-10-30T19:06:00.000Z",
      "appId": "<your appId>",
      "campaignId": "<your campaignId>",
      "transactionId": "order_5518",
      "revenue": 4.99,
      "currency": "USD"
    }
    • Use an ID that stays the same for this event as eventId, so a repeat from your tool comes back as duplicate and is never charged twice.
    • Forward as events arrive. A timestamp more than 48 hours from when we receive it is logged as outside_window and not charged, so a nightly batch can miss.
    • Purchases need a transactionId.
  5. Send a test for each event

    Add "test": true and forward one of each event. Tests are never charged, and each event turns Verified: Send test events without being charged.

  6. Check it worked

    Open Event logs on the campaign. Each forwarded event shows with your tool’s name as its key and a status. After launch, missing_attribution there means the click ID didn’t make it from your tool’s install data onto the user.

Support

Still stuck? Write to us.

One address for every question: hello@affiliateos.ai. Put the details from this list in your first message so we can find the click or conversion without asking you for them again.

Put these in your message

  1. 01The email you sign in with
  2. 02Your role: publisher, advertiser or network
  3. 03The offer ID
  4. 04The click ID or action_id
  5. 05The time it happened, with your time zone
  6. 06What you expected to happen

Looking for a reward in an app? Ask that app's support. It credits your reward, so only it can see your balance.

Search help