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

# Mobile Conversions

> X mobile app promotion measurement allows advertisers to track the success of advertising campaigns on X that are designed to drive installs or other in-app.

export const Button = ({href, children}) => {
  return <div className="not-prose group">
    <a href={href}>
      <button className="flex items-center space-x-2.5 py-1 px-4 bg-primary-dark dark:bg-white text-white dark:text-gray-950 rounded-full group-hover:opacity-[0.9] font-medium">
        <span>
          {children}
        </span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

## MACT Overview

X [mobile app promotion](https://biz.x.com/mobile-app-promotion) measurement allows advertisers to track the success of advertising campaigns on X that are designed to drive installs or other in-app conversions. A X mobile measurement partner provides the ability for an advertiser to manage what conversions they want to track from the apps they are promoting on X. Once the advertiser has set up the type and time windows of the events they want to track the mobile measurement partner will send all of those events to X and immediately receive attribution data indicating the campaign and creative that the user engaged with to drive the conversion.

### Conversion Events

In order to report a [conversion event](https://developer.x.com/en/docs/x-ads-api/measurement/api-reference/conversion-event) to X and get attribution data the partner must send the mobile app ID, type and timestamp of the conversion, as well as a hashed value of the advertising/device ID. Providing this data will record the conversion event on X’s platform as well as return the attribution where appropriate. In addition, the advertiser may elect to provide extra metadata about the conversion event such as value of a purchase, the ID of a product, or a registration method.

## API reference

### Conversion Event

<Button href="https://app.getpostman.com/run-collection/1d12b9fc623b8e149f87">
  Run in Postman
</Button>

#### POST conversion\_event

Record a mobile measurement conversion event. The response will indicate X or X Audience Platform (TAP) attribution.

This relates to the [GET conversion\_attribution](https://developer.x.com/en/docs/x-ads-api/measurement/api-reference/conversion-attribution#get-conversion-attribution) endpoint.

Either X, TAP or no attribution will be claimed in the response. The `twitter_attribution` node will always be present and have a value of `null` when there is no X attribution (see the example response below). If TAP attribution is claimed a `tpn_attribution` node will be present and populated accordingly. Please refer to the [TAP overview](https://developer.x.com/en/docs/x-ads-api/measurement/overview/twitter-audience-platform) for more information.

There are several optional parameters available to set metadata associated with each conversion event. This metadata has no effect on attribution calculations.

##### Resource URL

`https://ads-api.x.com/12/conversion_event`

##### Parameters

| Name                                             | Description                                                                                                                                                                                                                                                                                                                                                                         |
| :----------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| app\_id  <br />*required*                        | The unique identifier with the corresponding app store.<br /><br />Type: int, string<br /><br />Example: `333903271`, `com.vine.android`                                                                                                                                                                                                                                            |
| conversion\_time  <br />*required*               | The time of the conversion event in an ISO-8601 timestamp format, with milliseconds appended.<br /><br />Type: string<br /><br />Example: `2014-05-22T02:38:28.103Z`                                                                                                                                                                                                                |
| conversion\_type  <br />*required*               | The type of conversion event.<br /><br />Type: enum<br /><br />Possible values: `PURCHASE`, `SIGN_UP`, `INSTALL`, `RE_ENGAGE`, `UPDATE`, `TUTORIAL_COMPLETE`, `RESERVATION`, `ADD_TO_CART`, `ADD_TO_WISHLIST`, `LOGIN`, `CHECKOUT_INITIATED`, `SEARCH`, `LEVEL_ACHIEVED`, `ACHIEVEMENT_UNLOCKED`, `CONTENT_VIEW`, `SHARE`, `INVITE`, `ADDED_PAYMENT_INFO`, `SPENT_CREDITS`, `RATED` |
| hashed\_device\_id  <br />*required*             | The HMAC\_SHA-256 hashed IDFA or AdID.<br /><br />Type: string<br /><br />Example: `ABCD1234XYZ`                                                                                                                                                                                                                                                                                    |
| os\_type  <br />*required*                       | The OS type for the app.<br /><br />Type: enum<br /><br />Possible values: `IOS`, `ANDROID`                                                                                                                                                                                                                                                                                         |
| click\_window  <br />*optional*                  | The click window for this event in days.<br /><br />Type: int<br /><br />**Note**: `click_window` must be greater than or equal to view\_through\_window<br /><br />Default: `14`  <br />Possible values: `1`, `7`, `14`, `30`                                                                                                                                                      |
| device\_ip\_address  <br />*optional*            | IPv4 or IPv6 address of the device when the conversion event happened.<br /><br />Type: string<br /><br />Example: `192.133.78.1`                                                                                                                                                                                                                                                   |
| level  <br />*optional*                          | A level associated with this event.<br /><br />Type: int<br /><br />Example: `2`                                                                                                                                                                                                                                                                                                    |
| non\_twitter\_engagement\_time  <br />*optional* | The time of the last non-twitter engagement prior to the conversion.<br /><br />Type: string<br /><br />Example: `2014-05-22T02:38:28.103Z`                                                                                                                                                                                                                                         |
| non\_twitter\_engagement\_type  <br />*optional* | The type of non-twitter engagement prior to the conversion event.<br /><br />Type: enum<br /><br />Possible values: `CLICK`, `VIEW`                                                                                                                                                                                                                                                 |
| number\_items  <br />*optional*                  | Number of items associated with this event.<br /><br />Type: int<br /><br />Example: `2`                                                                                                                                                                                                                                                                                            |
| price\_currency  <br />*optional*                | Expected to be an ISO 4217 code to indicate the currency associated with this event.<br /><br />Type: String<br /><br />Examples: `EUR`,`USD`,`JPY`                                                                                                                                                                                                                                 |
| price\_micro  <br />*optional*                   | A price amount associated to this event in micro.<br /><br />Type: int<br /><br />Example: `123450000`                                                                                                                                                                                                                                                                              |
| user\_payment\_info  <br />*optional*            | A boolean value to indicate if the user’s payment information is stored in the app associated with this event.<br /><br />Type: bool<br /><br />Possible values: `true` or `false`                                                                                                                                                                                                  |
| view\_through\_window  <br />*optional*          | The view through window for this event in days.<br /><br />**Note**:<br /><br />`click_window` must be greater than or equal to view\_through\_window.<br /><br />Type: int<br /><br />Default: `1`  <br />Possible values: `0`, `1`, `7`, `14`, `30`                                                                                                                               |

##### Example Request

`https://ads-api.x.com/12/conversion_event?app_id=333903271&os_type=IOS&hashed_device_id=ABCD1234XYZ&conversion_type=INSTALL&conversion_time=2013-04-16T07:00:00.123Z&click_window=14&view_through_window=1`

##### Example Response

```json theme={null}
    {
      "data": {
        "conversion_value_micro": 0,
        "view_through_window": 1,
        "tpn_attribution": null,
        "conversion_time": "2017-01-21T01:14:00.602Z",
        "click_window": 30,
        "limit_ad_tracking": false,
        "event_metadata": null,
        "non_twitter_engagement_type": null,
        "conversion_type": "INSTALL",
        "partner_client_id": "com.appname contact id",
        "app_id": "com.appname",
        "hashed_device_id": "lke1GZa3AseB343ZcCQq7svfHzLfuSqyYnE+Rf49MOI=",
        "twitter_attribution": {
          "country_code": "US",
          "engagement_time": "2017-01-21T01:13:00.602Z",
          "engagement_type": "CLICK",
          "attribution_type": "PROMOTED",
          "promoted_properties": {
            "campaign_id": "4ns44",
            "line_item_id": "3x44d",
            "publisher_app_id": "333903271"
            "account_id":"18ce11e3egb",
            "line_item_objective": "APP_INSTALLS",
            "campaign_name": null
          },
          "tweet_id": "11434635565377600"
        },
        "os_type": "ANDROID",
        "non_twitter_engagement_time": null
      },
      "request": {
        "params": {
          "version_number": "1",
          "app_id": "com.appname",
          "conversion_type": "INSTALL",
          "os_type": "ANDROID",
          "hashed_device_id": "lke1GZa3AseB343ZcCQq7svfHzLfuSqyYnE+Rf49MOI=",
          "conversion_time": "2017-01-21T01:14:00.602Z",
          "click_window": "30",
          "view_through_window": "1",
          "limit_ad_tracking": "false"
        }
      }
    }
```

### App Event Tags

<Button href="https://app.getpostman.com/run-collection/1d12b9fc623b8e149f87">
  Run in Postman
</Button>

#### GET accounts/:account\_id/app\_event\_tags

Retrieve details for some or all app event tags associated with the current account.

These are what define the conversion windows set up per each conversion type for Mobile App Conversion Tracking.

##### Resource URL

`https://ads-api.x.com/12/accounts/:account_id/app_event_tags`

##### Parameters

| Name                                   | Description                                                                                                                                                                                                                                                                                                                                                     |
| :------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| account\_id  <br />*required*          | The identifier for the leveraged account. Appears within the resource's path and is generally a required parameter for all Advertiser API requests excluding [GET accounts](/x-ads-api/campaign-management/reference#accounts). The specified account must be associated with the authenticated user.<br /><br />Type: string<br /><br />Example: `18ce54d4x5t` |
| app\_event\_tag\_ids  <br />*optional* | Scope the response to just the desired app event tags by specifying a comma-separated list of identifiers. Up to 200 IDs may be provided.<br /><br />Type: string<br /><br />Example: `jhp`                                                                                                                                                                     |
| count  <br />*optional*                | Specifies the number of records to try and retrieve per distinct request.<br /><br />Type: int<br /><br />Default: `200`  <br />Min, Max: `1`, `1000`                                                                                                                                                                                                           |
| cursor  <br />*optional*               | Specifies a cursor to get the next page of results. See [Pagination](/x-ads-api/introduction) for more information.<br /><br />Type: string<br /><br />Example: `8x7v00oow`                                                                                                                                                                                     |
| sort\_by  <br />*optional*             | Sorts by supported attribute in ascending or descending order. See [Sorting](/x-ads-api/fundamentals/sorting) for more information.<br /><br />Type: string<br /><br />Example: `created_at-asc`                                                                                                                                                                |
| with\_deleted  <br />*optional*        | Include deleted results in your request.<br /><br />Type: boolean<br /><br />Default: `false`  <br />Possible values: `true`, `false`                                                                                                                                                                                                                           |
| with\_total\_count  <br />*optional*   | Include the `total_count` response attribute.<br /><br />**Note**: This parameter and `cursor` are exclusive.<br /><br />**Note**: Requests which include `total_count` will have lower rate limits, currently set at 200 per 15 minutes.<br /><br />Type: boolean<br /><br />Default: `false`  <br />Possible values: `true`, `false`                          |

##### Example Request

`GET https://ads-api.x.com/12/accounts/18ce54d4x5t/app_event_tags?app_event_tag_ids=jhp`

##### Example Response

```json theme={null}
    {
      "request": {
        "params": {
          "app_event_tag_ids": [
            "jhp"
          ],
          "account_id": "18ce54d4x5t"
        }
      },
      "next_cursor": null,
      "data": [
        {
          "provider_app_event_name": null,
          "app_store_identifier": "co.vine.android",
          "post_view_attribution_window": 1,
          "deep_link_scheme": "vine://",
          "id": "jhp",
          "retargeting_enabled": true,
          "conversion_type": "INSTALL",
          "created_at": "2016-12-08T07:49:58Z",
          "post_engagement_attribution_window": 14,
          "provider_app_event_id": null,
          "last_tracked_at": "2021-05-22T17:00:04Z",
          "status": "TRACKING",
          "updated_at": "2016-12-08T23:07:54Z",
          "os_type": "ANDROID",
          "deleted": false
        }
      ]
    }
```

#### GET accounts/:account\_id/app\_event\_tags/:app\_event\_tag\_id

Retrieve a specific app event tag associated with the current account.

These are what define the conversion windows set up per each conversion type for Mobile App Conversion Tracking.

##### Resource URL

`https://ads-api.x.com/12/accounts/:account_id/app_event_tags/:app_event_tag_id`

##### Parameters

| Name                                  | Description                                                                                                                                                                                                                                                                                                                                                     |
| :------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| account\_id  <br />*required*         | The identifier for the leveraged account. Appears within the resource's path and is generally a required parameter for all Advertiser API requests excluding [GET accounts](/x-ads-api/campaign-management/reference#accounts). The specified account must be associated with the authenticated user.<br /><br />Type: string<br /><br />Example: `18ce54d4x5t` |
| app\_event\_tag\_id  <br />*required* | A reference to the app event tag you are operating with in the request.<br /><br />Type: string<br /><br />Example: `jhp`                                                                                                                                                                                                                                       |
| with\_deleted  <br />*optional*       | Include deleted results in your request.<br /><br />Type: boolean<br /><br />Default: `false`  <br />Possible values: `true`, `false`                                                                                                                                                                                                                           |

#### Example Request

`GET https://ads-api.x.com/12/accounts/18ce54d4x5t/app_event_tags/jhp`

#### Example Response

```json theme={null}
    {
      "request": {
        "params": {
          "app_event_tag_id": "jhp",
  
```
