> ## 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 Goals

> Define which player actions count as a conversion so only the right events are forwarded to your connected ad networks

<Warning>
  Conversion Goals are currently in **alpha**. Supported events and behavior may change between releases.
</Warning>

<Info>
  **Who is this for?** Marketers and game developers who want control over which in-game actions trigger postbacks to ad networks, rather than forwarding every supported event.
</Info>

Conversion Goals let you define which player actions count as a conversion for your game. Only the actions you configure are forwarded to your connected ad networks.

## What Is a Goal?

A Goal is a rule that defines which player actions count as a conversion. For example:

* When a player completes a purchase, that counts as *First Purchase*
* When a player adds your game to their wishlist, that counts as *Wishlist Add*
* When a player submits their email, that counts as *Email Captured*

A Goal is made up of:

| Part                         | What it does                                              |
| ---------------------------- | --------------------------------------------------------- |
| **Name**                     | A label you choose so you can find the Goal later         |
| **Description** *(optional)* | A note describing what the Goal tracks                    |
| **Event**                    | The player action that can trigger the Goal               |
| **Trigger**                  | Whether the Goal counts once per player or every time     |
| **Filter** *(optional)*      | Narrows the Goal to events with a specific property value |

Goals are scoped per game. A Goal you create for one game does not appear in another.

## How to Create a Goal

Open [Audience Hub](https://hub.immutable.com), navigate to your game, then go to **Settings** then **Goals**.

To use a template, select one of the pre-built options on the Goals page. The wizard opens with the event and trigger pre-filled, so you can review and save in seconds.

| Template       | Event          | Trigger         |
| -------------- | -------------- | --------------- |
| First Purchase | Purchase       | Once per player |
| Wishlist Add   | Wishlist add   | Once per player |
| Email Captured | Email acquired | Once per player |
| First Launch   | Game launch    | Once per player |

To build from scratch, select **Create goal** without choosing a template.

Either way, the wizard has up to three steps: **Event**, **Filter**, and **Review**. You can change anything before saving. The Filter step only appears for events that have filterable properties. For *Email acquired* and *Game launch*, the wizard goes from Event straight to Review.

## Triggers

| Trigger             | What it does                                                                        | Good for                                                    |
| ------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| **Once per player** | Only the first time a player does the action counts. Later occurrences are ignored. | Wishlist add or email capture, which happen once per player |
| **Repeatable**      | Every occurrence counts.                                                            | Purchases, where every purchase is a conversion             |

<Note>
  When you create a Goal you choose **Once per player**, but a saved Goal displays this trigger as **First-time only**. The two labels mean the same thing.
</Note>

## Filters

A filter narrows a Goal so it only counts events that match a specific property value. For example, count a purchase only when `value` is greater than 10. Filters are optional and can be combined with either trigger.

The available operators depend on the property type:

| Property type                  | Operators                          |
| ------------------------------ | ---------------------------------- |
| Numeric (`value`)              | `=`, `≠`, `>`, `≥`, `<`, `≤`, `in` |
| String (`currency`, `game_id`) | `=`, `≠`, `in`                     |

## Supported Events

Conversion Goals currently supports five predefined events. Filterable properties depend on the event:

| Event               | What it means                                  | Filterable properties |
| ------------------- | ---------------------------------------------- | --------------------- |
| **Purchase**        | A player completes a purchase                  | `currency`, `value`   |
| **Wishlist add**    | A player adds your game to their wishlist      | `game_id`             |
| **Wishlist remove** | A player removes your game from their wishlist | `game_id`             |
| **Email acquired**  | A player submits their email address           | None                  |
| **Game launch**     | A player launches your game                    | None                  |

## How Goals Connect to Postbacks

[Conversion Postbacks](/docs/products/audience/conversion-postbacks) are server-to-server callbacks Immutable sends to your connected ad networks when a conversion happens. A Goal defines what counts as a conversion; a postback is what Immutable sends when one occurs. A postback only fires when an attributed event matches an active Goal.

The path from a player action to an ad network:

<Steps>
  <Step title="Player action reaches Immutable">
    Your game sends an event via the Unity SDK, Web SDK, or REST API.
  </Step>

  <Step title="Attribution check">
    Immutable's attribution engine checks whether the event is linked to a paid ad click captured by the Tracking Pixel or Web SDK.
  </Step>

  <Step title="Goals evaluation">
    The event is checked against every active Goal for the game. If it matches a Goal's event, trigger, and filters, the conversion is recorded.
  </Step>

  <Step title="Postback fires">
    Immutable sends a postback for that conversion to every connected ad network. If no Goal matches, no postback is sent.
  </Step>
</Steps>

In Conversion Goals, a matching conversion fires to all connected ad networks. Per-Goal network selection is not available yet. To manage which networks receive postbacks, go to **Settings** then **Integrations**.

## Managing Goals

From **Settings** then **Goals** you can:

* **View** all active Goals and their configuration
* **Edit** a Goal's name, description, event, trigger, or filter. Changing the event clears any filter clauses, because they may not apply to the new event.
* **Archive** a Goal to stop it matching new events. Archiving is permanent and cannot be reversed. Archived Goals are kept for reference and do not count toward the active limit.
* **Filter** the list by active or archived status

<Note>
  Each game can have up to **50 active Goals**. Archived Goals do not count toward this limit. If you reach the cap, archive an existing Goal before creating a new one.
</Note>

## Current Limitations

* **Five predefined events.** Purchase, wishlist add, wishlist remove, email acquired, and game launch. Custom in-game events are not supported yet.
* **Predefined events only.** Custom events your game sends cannot be used as Goal triggers.
* **No retention-window triggers.** Conditions like "active on day 7" are not available yet.
* **All Goals fire to all connected networks.** Per-Goal network selection is not available yet.

## FAQ

<AccordionGroup>
  <Accordion title="Can I change a Goal after creating it?">
    Yes. You can edit a Goal's name, description, event, trigger, and filter at any time. If you change the event, any existing filter clauses are cleared because they may not apply to the new event.
  </Accordion>

  <Accordion title="Can two Goals match the same player action?">
    Yes. Each matching Goal records its own conversion and sends its own postback. For example, two active Goals on the `purchase` event with different filters will each fire independently if a purchase satisfies both.
  </Accordion>

  <Accordion title="What happens when I archive a Goal?">
    Archiving stops the Goal matching new events straight away. It cannot be reversed. Conversion records from before archiving are preserved, and archived Goals do not count toward the 50-active-Goal limit. To see archived Goals, switch the filter on the Goals page to **Archived**.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Conversion Postbacks" icon="share-from-square" href="/docs/products/audience/conversion-postbacks">
    Configure which ad networks receive postbacks when a Goal is matched
  </Card>

  <Card title="Attribution" icon="route" href="/docs/products/audience/attribution">
    How Immutable attributes player actions back to ad campaigns
  </Card>

  <Card title="Tracking Pixel" icon="crosshairs" href="/docs/products/audience/tracking-pixel">
    Capture click IDs from ad platforms on your marketing site
  </Card>

  <Card title="Unity SDK" icon="unity" href="/docs/products/audience/unity-sdk">
    Send in-game conversion events from Unity builds
  </Card>

  <Card title="Web SDK" icon="code" href="/docs/products/audience/web-sdk">
    Send events from web games and marketing sites
  </Card>

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