Follow these steps to create an ad campaign.

## Preparation

The focus of your campaign will determine the values for specific settings as
well as which features you can use. Before you start coding, choose and expand
one option from the following list and refer to its settings as you go through
each [step in the campaign creation process](https://developers.google.com/google-ads/api/docs/app-campaigns/create-campaign#steps).

For more information on the different campaign types and goals, see the
[Google Ads Help article on App campaigns](https://support.google.com/google-ads/answer/6247380).

#### Focus on getting more installs

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_INSTALLS_TARGET_INSTALL_COST`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_installs_target_install_cost) |
| Bidding strategy | [`target_cpa`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_cpa) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | Optional. |

#### Focus on getting more installs without target install cost

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_INSTALLS_WITHOUT_TARGET_INSTALL_COST`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_installs_without_target_install_cost) |
| Bidding strategy | [`maximize_conversions`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#maximize_conversions) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | Optional. |

#### Focus on getting users likely to install and perform a specific in-app action

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_IN_APP_CONVERSIONS_TARGET_INSTALL_COST`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_in_app_conversions_target_install_cost) |
| Bidding strategy | [`target_cpa`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_cpa) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | **Required** to identify the conversion action corresponding to the in-app action. |

#### Focus on finding users who are most likely to complete specific in-app actions

Settings [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) Targets users who have not installed your app. [`APP_CAMPAIGN_FOR_ENGAGEMENT`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign_for_engagement) Targets users who have installed your app. [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) [`OPTIMIZE_IN_APP_CONVERSIONS_TARGET_CONVERSION_COST`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_in_app_conversions_target_conversion_cost) Bidding strategy [`target_cpa`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_cpa) [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) **Required** to identify the conversion actions corresponding to each in-app action.

#### Focus on driving in-app conversions without target CPA

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_IN_APP_CONVERSIONS_WITHOUT_TARGET_CPA`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_in_app_conversions_without_target_cpa) |
| Bidding strategy | [`maximize_conversions`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#maximize_conversions) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | **Required** to identify the conversion actions corresponding to each in-app action. |

#### Focus on driving in-app action value

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_RETURN_ON_ADVERTISING_SPEND`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_return_on_advertising_spend) |
| Bidding strategy | [`target_roas`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_roas) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | **Required.** The `conversion_actions` listed must come from the Firebase SDK, and you'll need to install the [Google Analytics for Firebase SDK](https://firebase.google.com/docs/analytics) in your app. |

#### Focus on driving in-app action value without target ROAS

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_TOTAL_VALUE_WITHOUT_TARGET_ROAS`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_total_value_without_target_roas) |
| Bidding strategy | [`maximize_conversion_value`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#maximize_conversion_value) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | **Required.** The `conversion_actions` listed must come from the Firebase SDK, and you'll need to install the [Google Analytics for Firebase SDK](https://firebase.google.com/docs/analytics) in your app. |

#### Focus on driving app pre-registrations

| Settings ||
|---|---|
| [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) | [`APP_CAMPAIGN_FOR_PRE_REGISTRATION`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign_for_pre_registration) |
| [`app_campaign_setting.bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) | [`OPTIMIZE_PRE_REGISTRATION_CONVERSION_VOLUME`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType#optimize_pre_registration_conversion_volume) |
| Bidding strategy | [`target_cpa`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_cpa) |
| [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization) | **Immutable.** Conversion actions are added to the campaign automatically. |
| [`optimization_goal_setting`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#optimization_goal_setting) | **Required.** The [optimization_goal_types](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.OptimizationGoalSetting#optimization_goal_types[]) field must contain the [APP_PRE_REGISTRATION](https://developers.google.com/google-ads/api/reference/rpc/v26/OptimizationGoalTypeEnum.OptimizationGoalType#app_pre_registration) optimization goal type. |

## Steps

Using the settings for the selected area of focus, follow these steps to create
an App campaign.

1. Set the [`name`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#name).

2. Set the [`advertising_channel_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_type) to `MULTI_CHANNEL`.

   > [!IMPORTANT]
   > **Key Point:** All App campaigns in the Google Ads API have an [`advertising_channel_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_type) of [`MULTI_CHANNEL`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelTypeEnum.AdvertisingChannelType#multi_channel) to reflect the fact that ads from these campaigns are eligible to appear on multiple channels, including Google Search, Google Play, search partners, YouTube, the Google Display Network, Google AdMob, and other publishers who host app ads.

3. Set the [`campaign_budget`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#campaign_budget)
   to the resource name of an existing campaign
   budget. If you need to create a campaign budget, follow the code example in
   the [Create Campaigns guide](https://developers.google.com/google-ads/api/docs/campaigns/create-campaigns).

   > [!NOTE]
   > **Note:** An App campaign cannot use a shared campaign budget. Make sure the campaign budget you specify has [`CampaignBudget.explicitly_shared`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignBudget#explicitly_shared) set to `false`.

4. Set the [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type) based on your selected goal.

5. Set the [`app_campaign_setting`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#app_campaign_setting)
   to an [`AppCampaignSetting`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting)
   with:

   - [`app_store`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#app_store) set to the appropriate [`AppCampaignAppStore`](https://developers.google.com/google-ads/api/reference/rpc/v26/AppCampaignAppStoreEnum.AppCampaignAppStore) for your app.
   - [`app_id`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#app_id) set to the identifier for your app (for example, the package name `com.example.app` for Google Play, or the numeric store ID for Apple App Store).
   - [`bidding_strategy_goal_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.AppCampaignSetting#bidding_strategy_goal_type) based on your selected goal.
6. Set the bidding strategy field according to your selected goal:

   - For target-based bidding goals (target CPA or target install cost), set [`target_cpa`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_cpa) with its [`target_cpa_micros`](https://developers.google.com/google-ads/api/reference/rpc/v26/TargetCpa#target_cpa_micros) field specified in micros of your account currency (for example, $1.50 is `1500000`).
   - For target ROAS bidding goals, set [`target_roas`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#target_roas) with its [`target_roas`](https://developers.google.com/google-ads/api/reference/rpc/v26/TargetRoas#target_roas) field specified as a double representing your target return on advertising spend (for example, `3.0` for 300%).
   - For non-target bidding goals without target install cost or without target CPA, set [`maximize_conversions`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#maximize_conversions).
   - For non-target bidding goals without target ROAS, set [`maximize_conversion_value`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#maximize_conversion_value).

   > [!NOTE]
   > **Note:** You must define the bidding strategy during campaign creation. An App campaign cannot use a portfolio bidding strategy created with the [`BiddingStrategyService`](https://developers.google.com/google-ads/api/reference/rpc/v26/BiddingStrategyService).

7. Indicate the conversion types for which Google Ads should optimize your
   campaign by setting its
   [`selective_optimization`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#selective_optimization),
   where the resource name of each conversion action is in the
   [`conversion_actions`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign.SelectiveOptimization#conversion_actions%5B%5D)
   list.

   This is *required* if the campaign's
   [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type)
   is [`APP_CAMPAIGN_FOR_ENGAGEMENT`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign_for_engagement), or if optimizing for in-app actions
   or target ROAS, but optional otherwise.

   Campaigns with the
   [`advertising_channel_sub_type`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#advertising_channel_sub_type)
   of
   [`APP_CAMPAIGN_FOR_PRE_REGISTRATION`](https://developers.google.com/google-ads/api/reference/rpc/v26/AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType#app_campaign_for_pre_registration)
   will automatically have conversion actions added to them once the first user
   pre-registers, and can *only* track pre-registration conversions.

   > [!NOTE]
   > **Note:** Unlike most other campaign types that use [`CampaignConversionGoal`](https://developers.google.com/google-ads/api/docs/conversions/goals/campaign-goals), App campaigns (`MULTI_CHANNEL`) manage campaign-level conversion optimization exclusively through `selective_optimization.conversion_actions`.

8. (Optional) Refine your campaign's targeting by adding
   [`CampaignCriterion`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignCriterion) objects. App
   campaigns support campaign-level targeting by
   [`language`](https://developers.google.com/google-ads/api/reference/rpc/v26/LanguageInfo) and
   [`location`](https://developers.google.com/google-ads/api/reference/rpc/v26/LocationInfo).

   You can also attach negative keyword shared sets to App campaigns by
   creating a [`CampaignSharedSet`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignSharedSet) that links the campaign to a
   [`SharedSet`](https://developers.google.com/google-ads/api/reference/rpc/v26/SharedSet) of type `NEGATIVE_KEYWORDS`.
9. (Optional, starting in v24) Enable view-through conversion (VTC)
   optimization by setting [`view_through_conversion_optimization_enabled`](https://developers.google.com/google-ads/api/reference/rpc/v26/Campaign#view_through_conversion_optimization_enabled)
   to `true`.

   When enabled, Google Ads optimizes your App campaign for view-through
   conversions in addition to click-through conversions. This setting is only
   supported for Android (`GOOGLE_APP_STORE`) campaigns with an
   `advertising_channel_sub_type` of `APP_CAMPAIGN`.

## Code example

See [Add app campaign](https://developers.google.com/google-ads/api/samples/add-app-campaign).