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

# Conversion Postbacks

> Automatically send attributed conversion data back to your ad networks so their algorithms learn which campaigns produce real players

<Warning>
  Conversion Postbacks are currently in **alpha**. Behavior and supported networks may change between releases.
</Warning>

<Info>
  **Who is this for?** Marketers running paid acquisition on TikTok Ads, Meta Ads, Google Ads, or Reddit Ads who want to feed conversion data back to those platforms to improve campaign optimisation.
</Info>

When a player clicks your ad, installs the game, and completes an action you've defined as a conversion, Immutable Audience captures the whole journey. Conversion Postbacks close the loop by automatically notifying the ad network that the click led to a real outcome.

What counts as a conversion is set by your [Conversion Goals](/docs/products/audience/conversion-goals). A postback fires whenever an attributed event matches an active Goal, so you control exactly which actions are forwarded.

Without postbacks, ad networks are flying blind. Their optimisation algorithms can see your spend but not your results. With postbacks enabled, every attributed conversion you send back directly improves your campaign targeting.

## How It Works

<Steps>
  <Step title="Player clicks your ad">
    Immutable's Tracking Pixel captures the click ID from your ad campaign on your marketing site.
  </Step>

  <Step title="Player installs and acts">
    Your game sends events via the Unity SDK, Web SDK, or REST API as the player plays.
  </Step>

  <Step title="Immutable attributes the event and checks your Goals">
    The Audience attribution engine matches the in-game event to the original ad click, then checks it against your active [Conversion Goals](/docs/products/audience/conversion-goals). If it matches a Goal, the conversion is recorded.
  </Step>

  <Step title="Postback fires automatically">
    For each matched Goal, Immutable sends a server-to-server callback to your connected ad networks with the conversion data. No code changes needed after initial setup.
  </Step>
</Steps>

## Supported Networks

<CardGroup cols={2}>
  <Card title="TikTok Ads" icon="tiktok" href="/docs/products/audience/tiktok-ads-postbacks">
    TikTok Events API, connected via OAuth in Audience Hub
  </Card>

  <Card title="Meta Ads" icon="meta" href="/docs/products/audience/meta-ads-postbacks">
    Meta Conversions API, connected via OAuth in Audience Hub (sandbox mode)
  </Card>

  <Card title="Google Ads" icon="google" href="/docs/products/audience/google-ads-postbacks">
    Google Ads API offline conversion import, connected via OAuth in Audience Hub (testing mode)
  </Card>

  <Card title="Reddit Ads" icon="reddit" href="/docs/products/audience/reddit-ads-postbacks">
    Reddit Conversions API v3, configured with a paste-in token in Audience Hub
  </Card>
</CardGroup>

## What You Need

Before configuring postbacks for a game:

* The Immutable [Tracking Pixel](/docs/products/audience/tracking-pixel) or [Web SDK](/docs/products/audience/web-sdk) is installed on your marketing site (captures click IDs from ad platforms)
* The [Unity SDK](/docs/products/audience/unity-sdk), [Web SDK](/docs/products/audience/web-sdk), or [REST API](/docs/products/audience/rest-api) is sending the events your Conversion Goals are built on (such as `purchase`)
* At least one [Conversion Goal](/docs/products/audience/conversion-goals) is active for the game. A postback fires when an attributed event matches an active Goal.
* You have admin access to the game in [Audience Hub](https://hub.immutable.com)

## Event Mapping

A postback carries the event from the [Conversion Goal](/docs/products/audience/conversion-goals) that matched. Immutable maps each Goal event to the closest standard event on each network:

| Goal event        | TikTok Ads             | Meta Ads               | Google Ads                          | Reddit Ads                       |
| ----------------- | ---------------------- | ---------------------- | ----------------------------------- | -------------------------------- |
| `purchase`        | `Purchase`             | `Purchase`             | Conversion Action (mapped per Goal) | `Purchase`                       |
| `wishlist_add`    | `AddToWishlist`        | `AddToWishlist`        | Conversion Action (mapped per Goal) | `AddToWishlist`                  |
| `wishlist_remove` | `wishlist_remove`      | `wishlist_remove`      | Conversion Action (mapped per Goal) | `Custom` named `wishlist_remove` |
| `email_acquired`  | `CompleteRegistration` | `CompleteRegistration` | Conversion Action (mapped per Goal) | `SignUp`                         |

For `purchase` conversions, Immutable forwards `value` and `currency` when both are present, so ad networks can optimise for revenue (ROAS), not just conversion count. This applies to all four networks.

Google Ads requires you to map each active Goal to a Conversion Action you've created in your Google Ads account. See the [Google Ads setup guide](/docs/products/audience/google-ads-postbacks) for details.

To choose which events count as conversions for your game, set up your [Conversion Goals](/docs/products/audience/conversion-goals).

***

## Monitoring Postback Delivery

The **Delivery logs** section on each ad network's integration page (**Settings** then **Integrations** then **\[Network]**) shows every postback dispatch attempt for that game.

Filter by time range (last hour, 24 hours, 7 days, or 30 days) and status. Each log entry shows:

| Column      | Description                                                                       |
| ----------- | --------------------------------------------------------------------------------- |
| **Time**    | When the postback was sent (hover for the exact timestamp)                        |
| **Event**   | The Conversion Goal event that triggered it, such as `purchase` or `wishlist_add` |
| **Status**  | Delivery outcome (see below)                                                      |
| **HTTP**    | The HTTP status code returned by the ad network                                   |
| **Latency** | Round-trip time in milliseconds                                                   |
| **Attempt** | Which retry attempt this entry represents                                         |

<CardGroup cols={3}>
  <Card title="Success" icon="circle-check">
    The network accepted the postback
  </Card>

  <Card title="Failed" icon="circle-xmark">
    The network rejected the payload, usually a credential or configuration issue. Not retried.
  </Card>

  <Card title="Retried" icon="arrows-rotate">
    A transient network error. Immutable automatically retried the delivery.
  </Card>
</CardGroup>

### Health status

Each postback config in the list shows a health indicator alongside its enabled/disabled badge:

| Indicator                                     | Meaning                                                                                       |
| --------------------------------------------- | --------------------------------------------------------------------------------------------- |
| No indicator                                  | Postbacks are delivering normally                                                             |
| "Credential failures detected" (warning icon) | Recent deliveries are failing with auth errors. Credentials may have been revoked or expired. |
| "No recent activity" (clock icon)             | No delivery history yet. Normal for a newly configured postback.                              |

***

## FAQ

<AccordionGroup>
  <Accordion title="Can I use Conversion Postbacks without the Tracking Pixel?">
    No. Postbacks rely on click IDs captured by the [Tracking Pixel](/docs/products/audience/tracking-pixel) or [Web SDK](/docs/products/audience/web-sdk) on your marketing site when a player arrives from an ad. Without a click ID, Immutable cannot tie the in-game conversion back to the original ad click, and there is nothing to forward to the ad network.

    Reddit Ads also accepts a hashed email address as a fallback identifier when no click ID is present. See the [Reddit Ads setup guide](/docs/products/audience/reddit-ads-postbacks) for details.
  </Accordion>

  <Accordion title="Will postbacks fire for organic conversions?">
    No. Only conversions attributed to a paid ad click on a configured network are forwarded. Organic players, players from untracked sources, and players whose click happened outside the supported networks do not generate postbacks.
  </Accordion>

  <Accordion title="Can I send conversion events from my game server instead of the Unity SDK?">
    Yes. The [REST API](/docs/products/audience/rest-api) accepts the same events. Events from any source (Unity SDK, Web SDK, REST API) are eligible to match a [Conversion Goal](/docs/products/audience/conversion-goals) and trigger postbacks once attributed.
  </Accordion>

  <Accordion title="How does the consent model affect postback delivery?">
    Postbacks only fire for events that were collected at `anonymous` or `full` consent. Events at `none` are not collected so cannot be attributed or forwarded. See the [Data Dictionary](/docs/products/audience/data-dictionary#consent-model) for the full consent model.
  </Accordion>

  <Accordion title="What happens to postbacks when SDK testMode is enabled?">
    Events marked `test: true` (from SDK or Pixel `testMode`) are handled differently per network. TikTok and Reddit route them to each platform's test environment if a test code or test ID is configured on the postback. Meta uses `test_event_code` in the same way. Normal production events are never affected by test codes, even when one is set.
  </Accordion>

  <Accordion title="What happens to forwarded postbacks if a user requests data erasure?">
    Erasure removes the user's data from Immutable's systems (see [Deleting User Data](/docs/products/audience/rest-api#deleting-user-data)). Postbacks already delivered to ad networks are not retracted by Immutable. Once the network has received the conversion signal, it operates under that network's data retention policy. To request erasure from the ad network itself, contact the network directly. New postbacks will not be sent for the erased user.
  </Accordion>

  <Accordion title="Why aren't postbacks appearing in the delivery log?">
    Check the following:

    * Is the postback config **enabled**?
    * Is there at least one active [Conversion Goal](/docs/products/audience/conversion-goals) matching the events you're sending? Without a matching Goal, nothing is forwarded.
    * Is the Immutable Tracking Pixel installed and capturing click IDs on the pages you're running ads against? Without a click ID, Immutable can't attribute the conversion to a paid ad click.
    * Is the Unity SDK, Web SDK, or REST API sending the expected events?
  </Accordion>

  <Accordion title="What does a non-retryable failure in the delivery log mean?">
    The ad network rejected the payload. Check the HTTP status code shown in the log entry:

    * **401 / 403:** your credentials have expired or been revoked. For OAuth networks (TikTok, Meta, Google), reconnect the integration. For Reddit, rotate your Conversion Access Token.
    * **400:** the event payload was rejected by the network's validation. Contact your Immutable account manager with the attribution event ID from the log.
  </Accordion>

  <Accordion title="How do I set up a network that isn't listed here?">
    Additional networks are not yet available for self-service configuration. Contact your Immutable account manager or reach out via the [support portal](https://support.immutable.com) to discuss your needs.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Conversion Goals" icon="bullseye-arrow" href="/docs/products/audience/conversion-goals">
    Define which player actions count as a conversion and control what triggers postbacks
  </Card>

  <Card title="Attribution" icon="route" href="/docs/products/audience/attribution">
    How tracking data powers player attribution and Hub reports
  </Card>

  <Card title="Data Dictionary" icon="book" href="/docs/products/audience/data-dictionary">
    Full reference of event schemas and consent levels
  </Card>

  <Card title="Tracking Pixel" icon="crosshairs" href="/docs/products/audience/tracking-pixel">
    Make sure click IDs are being captured from your ad platforms
  </Card>

  <Card title="Web SDK" icon="code" href="/docs/products/audience/web-sdk">
    Typed SDK for web games, marketing sites, and SPAs
  </Card>

  <Card title="Unity SDK" icon="unity" href="/docs/products/audience/unity-sdk">
    In-game tracking for Unity desktop builds
  </Card>

  <Card title="REST API" icon="server" href="/docs/products/audience/rest-api">
    Send events from your backend or game server
  </Card>
</CardGroup>
