> ## 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**.

If your game has no Goals yet, the Goals page shows quick-start options for common actions such as first purchase, wishlist add, email capture, and first launch. These shortcuts pre-fill the event and trigger. They only appear while the Goals list is empty.

To configure a Goal yourself, select **Create goal**. The wizard has up to three steps:

<Steps>
  <Step title="Choose an event">
    Select **Built-in** to use one of Immutable's pre-built events, or select **Custom event** to use an event defined by your game.

    For a custom event, you can choose an event seen in your game's data, reuse an event from another Goal, or enter a new event name.

    <Warning>
      Custom event names are case-sensitive and must exactly match the `eventName` your game sends. A Goal for `level_complete` does not match an event named `Level_Complete`.
    </Warning>
  </Step>

  <Step title="Add filters">
    Optionally narrow when the Goal fires. Built-in events provide their supported properties. For a custom event, enter the property name, select its type, choose an operator, and enter the value.

    This step is skipped when the selected built-in event has no filterable properties.
  </Step>

  <Step title="Review and create">
    Enter a name and optional description, confirm the event, trigger, and filters, then select **Create goal**.
  </Step>
</Steps>

## 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` or custom **Number**)             | `=`, `≠`, `>`, `≥`, `<`, `≤`, `in` |
| String (`currency`, `game_id`, or custom **Text**) | `=`, `≠`, `in`                     |
| Boolean (custom **Boolean**)                       | `=`, `≠`                           |

You can add up to five filters to a Goal. Every filter must match for the Goal to fire.

## Built-in Events

Conversion Goals provides five built-in events. You can also create a Goal from a custom event your game sends. Filterable properties for built-in events 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/attribution/postbacks/overview) 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 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

* **Exact custom event names.** Custom event matching is case-sensitive. Immutable does not correct misspelled or differently cased event names.
* **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/attribution/postbacks/overview">
    Configure which ad networks receive postbacks when a Goal is matched
  </Card>

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

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

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

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