# Using Installation Attribution

Learn how to interpret ad attribution alongside the ads you run and choose information for your personalization goals.

Source: https://cue.airbridge.io/docs/en/guides/install-touchpoint
Language: en
Updated: 2026-10-15

Installation attribution helps you understand the advertising context behind an app user's arrival. Knowing which ad brought a user to the app helps you continue its message through app screens or messages.

## What installation attribution tells you

The `context.lastTouchpoint` object in the Context API response contains ad attribution associated with the user. The channel identifies the advertising platform. The campaign and ad group help you understand how the ads are organized, while the creative and keyword help you understand individual ad content and settings.

Connecting ad attribution to the ads you run helps you choose what to show the user next.

From ad attribution to the app experience

Ad
Introduce the service and content

The ad delivers a message to the user.

Ad attribution
Identify the associated ad

CUE provides information such as the channel and campaign.

Use in the app
Tailor screens and messages

The app presents content that connects to the ad's message.

## Continue the ad's message with personalization

Matching the campaign or creative name in the response to an ad you run helps you decide what to show or send next. For example, if `campaign` is `promotion_A`, your app's first screen or a CRM message can introduce that campaign's promotion. If creatives within the same campaign feature different products, your service can use `adCreative` to choose the corresponding product.

Campaigns, ad groups, and creatives describe different levels of an ad's structure, as shown below. Your ad settings identify the promotion or product behind each returned name. CUE does not automatically generate personalization rules from these names, so your service needs to define what to do for each value.

From a campaign to an ad creative

Campaign
Advertising goal and theme

Ad group
Audience and settings

Ad creative
The message and how it was presented

Campaign information may be enough to introduce a promotion as a whole. To match the specific product featured in an ad, you also need the creative information. Choose the level of detail that supports the content you want to personalize.

## Choose information for your goal

The information you choose needs to match how you want to vary screens or messages. Campaign information works for content shared across a campaign. Creative information works for content tailored to an individual ad.

* The campaign (`campaign`) helps you group users who arrived through ads with the same goal or theme. It supports content that applies across the campaign.
* The ad group (`adGroup`) reflects how you organized ads within a campaign. If groups have different audiences or content, you can use them to tailor app screens or messages.
* The ad creative (`adCreative`) helps you distinguish the message and presentation of individual ads. It supports choosing content that continues the creative's message.
* The channel (`channel`) identifies the advertising platform. It supports varying content by platform.
* The keyword (`term`) identifies the keyword configured for the ad. You can match the returned value to your ad settings and choose content for each keyword.

You can also combine the advertising information you choose with purchase or churn tiers to define your audience more precisely. [Using Context](/docs/en/guides/using-context#use-installation-attribution-alongside-predictions) explains how to combine ad attribution and predictions in personalization rules.

## Work with the information available

A personalization rule requires the advertising information it uses to be present in the response. A rule based on a campaign needs different information from one based on a creative.

* If the campaign is available, you can provide a screen or message shared across that campaign even when creative information is unavailable.
* If both the campaign and creative are available, you can show different content for each creative within the same campaign.
* If only the channel is available, you can choose content based on the advertising platform. Rules that distinguish specific campaigns or creatives need that information.

Your rules also need a default screen or message for cases where required information is unavailable.

## Compare response examples

The examples below show only `context.lastTouchpoint`. Select a case to compare which advertising information is available and which rules your app or CRM can apply. The fields containing restricted values and the values of other fields depend on the actual response.

Advertising information available in each response

Compare fields with values, null fields, and restricted strings.

Information available

All five field values are available.

Match these values to your ad settings to identify the campaign, creative, and keyword.

channel

media_A
Available

campaign

promotion_A
Available

adGroup

ad_group_A
Available

adCreative

creative_A
Available

term

keyword_A
Available

Apply rules in your app or CRM

Your app or CRM can apply personalization rules based on the campaign or creative.

View response JSON

```json lineNumbers
{
  "context": {
    "lastTouchpoint": {
      "channel": "media_A",
      "campaign": "promotion_A",
      "adGroup": "ad_group_A",
      "adCreative": "creative_A",
      "term": "keyword_A"
    }
  }
}
```

Entire object null

No installation attribution result is available.

The lookup succeeded, but no installation attribution result is available.

`context.lastTouchpoint` = `null`

This response has no individual fields such as channel or campaign.

Apply rules in your app or CRM

Your app or CRM skips rules that require advertising information and provides the default screen or message. If predictions are available, rules based only on those predictions can still apply.

View response JSON

```json lineNumbers
{
  "context": {
    "lastTouchpoint": null
  }
}
```

Some fields null

Only the channel and campaign are available.

The channel and campaign are available, but details such as the ad group, creative, and keyword were not collected and are unavailable in this example.

channel

media_A
Available

campaign

promotion_A
Available

adGroup

null
No value

adCreative

null
No value

term

null
No value

Apply rules in your app or CRM

Your app or CRM can provide a screen or message shared across the campaign. Skip rules that need a specific creative, and keep the default behavior for that part of the experience.

View response JSON

```json lineNumbers
{
  "context": {
    "lastTouchpoint": {
      "channel": "media_A",
      "campaign": "promotion_A",
      "adGroup": null,
      "adCreative": null,
      "term": null
    }
  }
}
```

restricted

The channel contains restricted instead of a channel name.

In this example, advertising information is masked according to the ad channel's privacy policy. The channel name is shown as `restricted`, and details such as the campaign are not provided. See Airbridge's guide to the [Meta Ads data sharing policy](https://help.airbridge.io/en/guides/meta-business-channel-integration#meta-ads-data-sharing-policy) for the relevant policy.

channel

restricted
Restricted

campaign

null
No value

adGroup

null
No value

adCreative

null
No value

term

null
No value

Apply rules in your app or CRM

Do not interpret this value as a specific ad channel name or as organic acquisition. Skip rules that require the actual advertising information, and apply rules based on other available information or use the default behavior.

View response JSON

```json lineNumbers
{
  "context": {
    "lastTouchpoint": {
      "channel": "restricted",
      "campaign": null,
      "adGroup": null,
      "adCreative": null,
      "term": null
    }
  }
}
```

unattributed

The channel contains unattributed instead of a channel name.

In this example, the installation is shown as not attributed to a specific ad channel.

channel

unattributed
Unattributed

campaign

null
No value

adGroup

null
No value

adCreative

null
No value

term

null
No value

Apply rules in your app or CRM

Skip rules based on an attributed ad channel. Apply rules based on other available information or keep the default behavior.

View response JSON

```json lineNumbers
{
  "context": {
    "lastTouchpoint": {
      "channel": "unattributed",
      "campaign": null,
      "adGroup": null,
      "adCreative": null,
      "term": null
    }
  }
}
```

See [Context API](/docs/en/reference/context-api#response-body) for the field definitions and response contract used in these examples.

These examples describe successful API lookups. If the lookup fails with an API error, use your default behavior. Do not convert the error into `lastTouchpoint: null`. See [Error Handling](/docs/en/reference/errors) for each error.

After connecting the API, you need to compare the ad attribution in the response with the attribution result expected in your test. [Check the response in Get Started](/docs/en/quickstart#check-the-response) explains the checks.
