In Google Ads, a [conversion](https://support.google.com/google-ads/answer/6365) is a valuable user action---such as
purchasing a product, submitting a lead form, calling your business, or visiting
a physical store---that follows an ad interaction. [Conversion
tracking](https://support.google.com/google-ads/answer/1722022) measures these customer interactions so you
can evaluate campaign performance and optimize automated bidding.

The Google Ads API lets you programmatically configure conversion actions, import
offline conversion events, enhance or adjust recorded conversions, group actions
into bidding and lifecycle goals, and monitor upload diagnostics.

## Choose your conversion workflow

Use the following table to identify the [`ConversionActionType`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionTypeEnum.ConversionActionType.md.txt),
API service, and implementation guide for your use case:

| Task | Conversion action type | API service or resource | Implementation guide |
|---|---|---|---|
| **Verify account setup and create a conversion action** | `UPLOAD_CLICKS`, `WEBPAGE`, `UPLOAD_CALLS`, `AD_CALL`, `WEBSITE_CALL`, `GOOGLE_PLAY_DOWNLOAD`, `GOOGLE_PLAY_IN_APP_PURCHASE` | [`Customer`](https://developers.google.com/google-ads/api/reference/rpc/v26/Customer.md.txt) (`ConversionTrackingSetting`), [`ConversionActionService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionService.md.txt) | [Getting started](https://developers.google.com/google-ads/api/docs/conversions/getting-started.md.txt) and [Conversion action categories](https://developers.google.com/google-ads/api/docs/conversions/categories.md.txt) |
| **Import offline click conversions or enhanced conversions for leads** | `UPLOAD_CLICKS` | [`ConversionUploadService.UploadClickConversions`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionUploadService/UploadClickConversions.md.txt) (or [Data Manager API](https://developers.google.com/data-manager/api/devguides/events/google-ads/offline.md.txt) for new integrations) | [Import offline click conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-offline.md.txt) |
| **Enhance online conversions (enhanced conversions for web)** | `WEBPAGE` | [`ConversionAdjustmentUploadService.UploadConversionAdjustments`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAdjustmentUploadService/UploadConversionAdjustments.md.txt) (`ENHANCEMENT`) | [Import online click conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-online.md.txt) |
| **Import phone call conversions** | `UPLOAD_CALLS` | [`ConversionUploadService.UploadCallConversions`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionUploadService/UploadCallConversions.md.txt) | [Import call conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-calls.md.txt) |
| **Import store sales transactions** | `STORE_SALES`, `STORE_SALES_DIRECT_UPLOAD` | [`OfflineUserDataJobService`](https://developers.google.com/google-ads/api/reference/rpc/v26/OfflineUserDataJobService.md.txt) (or [Data Manager API](https://developers.google.com/data-manager/api/devguides/events/google-ads/store-sales.md.txt)) | [Import store sales conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-store-sales-transactions.md.txt) |
| **Retract or restate recorded conversions** | `UPLOAD_CLICKS`, `WEBPAGE`, `SALESFORCE` (deprecated) | [`ConversionAdjustmentUploadService.UploadConversionAdjustments`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAdjustmentUploadService/UploadConversionAdjustments.md.txt) (`RETRACTION`, `RESTATEMENT`) | [Adjust conversions after import](https://developers.google.com/google-ads/api/docs/conversions/upload-adjustments.md.txt) |
| **Attach custom tag metadata to conversions** | `UPLOAD_CLICKS`, `UPLOAD_CALLS`, `WEBPAGE` | [`ConversionCustomVariableService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionCustomVariableService.md.txt) | [Custom conversion variables](https://developers.google.com/google-ads/api/docs/conversions/conversion-custom-variables.md.txt) |
| **Configure bidding goals, lifecycle goals, and value rules** | Account, campaign, and lifecycle goals | [`CustomerConversionGoalService`](https://developers.google.com/google-ads/api/reference/rpc/v26/CustomerConversionGoalService.md.txt), [`CampaignConversionGoalService`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignConversionGoalService.md.txt), [`CustomConversionGoalService`](https://developers.google.com/google-ads/api/reference/rpc/v26/CustomConversionGoalService.md.txt), [`ConversionGoalCampaignConfigService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionGoalCampaignConfigService.md.txt), [`GoalService`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoalService.md.txt), [`CampaignGoalConfigService`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignGoalConfigService.md.txt), [`ConversionValueRuleService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionValueRuleService.md.txt) | [Conversion goals](https://developers.google.com/google-ads/api/docs/conversions/goals/overview.md.txt), [Lifecycle goals](https://developers.google.com/google-ads/api/docs/conversions/goals/lifecycle-goals.md.txt), and [Conversion value rules](https://developers.google.com/google-ads/api/docs/conversions/conversion-value-rules.md.txt) |
| **Monitor import health and error diagnostics** | `UPLOAD_CLICKS`, `WEBPAGE`, `UPLOAD_CALLS` | [`offline_conversion_upload_client_summary`](https://developers.google.com/google-ads/api/fields/v26/offline_conversion_upload_client_summary.md.txt), [`offline_conversion_upload_conversion_action_summary`](https://developers.google.com/google-ads/api/fields/v26/offline_conversion_upload_conversion_action_summary.md.txt) | [Monitor offline data diagnostics](https://developers.google.com/google-ads/api/docs/conversions/upload-summaries.md.txt) |
| **Query conversion metrics and troubleshoot errors** | All conversion types | [`GoogleAdsService.SearchStream`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService/SearchStream.md.txt) (`customer`, `campaign`, `conversion_action`) | [Fetch conversion statistics](https://developers.google.com/google-ads/api/docs/conversions/reporting.md.txt) and [Troubleshoot conversion imports](https://developers.google.com/google-ads/api/docs/conversions/troubleshooting.md.txt) |

> [!WARNING]
> **Warning:** Since **June 15, 2026** , [`UploadClickConversions`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionUploadService/UploadClickConversions.md.txt) requests in the Google Ads API fail with a [`NotAllowlistedError.CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE`](https://developers.google.com/google-ads/api/reference/rpc/v26/NotAllowlistedErrorEnum.NotAllowlistedError.md.txt#customer_not_allowlisted_for_this_feature) error if your Google Cloud project (or legacy [developer
> token](https://developers.google.com/google-ads/api/docs/api-policy/developer-token), sunset on September 9, 2026) had no offline click conversion upload activity between December 17, 2025 and June 15, 2026. To integrate offline click conversions, enhanced conversions for leads, or store sales, use the **Data Manager API** ([offline conversions guide](https://developers.google.com/data-manager/api/devguides/events/google-ads/offline.md.txt) and [store sales guide](https://developers.google.com/data-manager/api/devguides/events/google-ads/store-sales.md.txt)). For details, see [Feature
> deprecations](https://developers.google.com/google-ads/api/docs/deprecations#feature-deprecations).

## End-to-end conversion lifecycle

A complete conversion management integration in the Google Ads API follows four stages:

1. **Verify account setup and create conversion actions** : Query [`Customer.conversion_tracking_setting`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionTrackingSetting.md.txt) to confirm the effective conversion account (`google_ads_conversion_customer`), verify that conversion tracking is active, configure [user consent](https://developers.google.com/google-ads/api/docs/conversions/getting-started.md.txt#configure_consent), and create a [`ConversionAction`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAction.md.txt) with the target [`ConversionActionType`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionTypeEnum.ConversionActionType.md.txt) and [`ConversionActionCategory`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionCategoryEnum.ConversionActionCategory.md.txt).
2. **Import conversion events** : Stream offline click or call conversions using [`ConversionUploadService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionUploadService.md.txt) with `partial_failure` set to `true`, supplement website conversions with `ENHANCEMENT` adjustments using [`ConversionAdjustmentUploadService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAdjustmentUploadService.md.txt), or batch-upload store sales using [`OfflineUserDataJobService`](https://developers.google.com/google-ads/api/reference/rpc/v26/OfflineUserDataJobService.md.txt).
3. **Adjust and optimize conversions** : Retract or restate recorded conversions using [`ConversionAdjustmentUploadService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAdjustmentUploadService.md.txt), attach [`ConversionCustomVariable`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionCustomVariable.md.txt) metadata, apply [conversion value rules](https://developers.google.com/google-ads/api/docs/conversions/conversion-value-rules.md.txt), and organize actions into [conversion
   goals](https://developers.google.com/google-ads/api/docs/conversions/goals/overview) and [lifecycle goals](https://developers.google.com/google-ads/api/docs/conversions/goals/lifecycle-goals.md.txt) to control bidding optimization.
4. **Monitor diagnostics and report performance** : Query [`offline_conversion_upload_client_summary`](https://developers.google.com/google-ads/api/fields/v26/offline_conversion_upload_client_summary.md.txt) and [`offline_conversion_upload_conversion_action_summary`](https://developers.google.com/google-ads/api/fields/v26/offline_conversion_upload_conversion_action_summary.md.txt) to inspect upload processing status and partial failure alerts. Query the [`customer`](https://developers.google.com/google-ads/api/fields/v26/customer.md.txt) or [`campaign`](https://developers.google.com/google-ads/api/fields/v26/campaign.md.txt) resources (optionally segmented by `segments.conversion_action`) to compare the `metrics.conversions` and `metrics.all_conversions` metrics, or query the [`conversion_action`](https://developers.google.com/google-ads/api/fields/v26/conversion_action.md.txt) resource to inspect `metrics.all_conversions` and last-conversion timestamps.

## Quickstart: Verify setup, create actions, and check health

The following examples show the three most common queries and mutations needed
to initialize and monitor conversion tracking.

### 1. Verify conversion tracking settings with GAQL

Before creating a [`ConversionAction`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAction.md.txt) or uploading events,
query the [`customer`](https://developers.google.com/google-ads/api/fields/v26/customer.md.txt) resource by using
[`GoogleAdsService.SearchStream`](https://developers.google.com/google-ads/api/reference/rpc/v26/GoogleAdsService/SearchStream.md.txt) to determine which account
manages conversions (`google_ads_conversion_customer`), whether customer data
terms are accepted, and whether account-level enhanced conversions are turned on
([`EnhancedConversionsConfig`](https://developers.google.com/google-ads/api/reference/rpc/v26/EnhancedConversionsConfigEnum.EnhancedConversionsConfig.md.txt)):

```sql
SELECT
  customer.conversion_tracking_setting.conversion_tracking_id,
  customer.conversion_tracking_setting.conversion_tracking_status,
  customer.conversion_tracking_setting.cross_account_conversion_tracking_id,
  customer.conversion_tracking_setting.google_ads_conversion_customer,
  customer.conversion_tracking_setting.accepted_customer_data_terms,
  customer.conversion_tracking_setting.enablement_setting,
  customer.conversion_tracking_setting.effective_enablement_setting
FROM customer
```

Extract the `{customer_id}` from the `customers/{customer_id}` resource name
returned in `google_ads_conversion_customer`, and issue all subsequent
[`ConversionActionService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionService.md.txt) and
[`ConversionUploadService`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionUploadService.md.txt) requests against that
customer ID. For full setup and cross-account hierarchy details, see [Getting
started](https://developers.google.com/google-ads/api/docs/conversions/getting-started).

### 2. Create a conversion action

Use [`ConversionActionService.MutateConversionActions`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionService/MutateConversionActions.md.txt) to
create a [`ConversionAction`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAction.md.txt). The following example creates
an `UPLOAD_CLICKS` conversion action with custom value and lookback settings:


### Java

```java
private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

  // Creates a ConversionAction.
  ConversionAction conversionAction =
      ConversionAction.newBuilder()
          // Note that conversion action names must be unique. If a conversion action already
          // exists with the specified conversion_action_name the create operation will fail with
          // a ConversionActionError.DUPLICATE_NAME error.
          .setName("Earth to Mars Cruises Conversion #" + getPrintableDateTime())
          .setCategory(ConversionActionCategory.DEFAULT)
          .setType(ConversionActionType.WEBPAGE)
          .setStatus(ConversionActionStatus.ENABLED)
          .setViewThroughLookbackWindowDays(15L)
          .setValueSettings(
              ValueSettings.newBuilder()
                  .setDefaultValue(23.41)
                  .setAlwaysUseDefaultValue(true)
                  .build())
          .build();

  // Creates the operation.
  ConversionActionOperation operation =
      ConversionActionOperation.newBuilder().setCreate(conversionAction).build();

  try (ConversionActionServiceClient conversionActionServiceClient =
      googleAdsClient.getLatestVersion().createConversionActionServiceClient()) {
    MutateConversionActionsResponse response =
        conversionActionServiceClient.mutateConversionActions(
            Long.toString(customerId), Collections.singletonList(operation));
    System.out.printf("Added %d conversion actions:%n", response.getResultsCount());
    for (MutateConversionActionResult result : response.getResultsList()) {
      System.out.printf(
          "New conversion action added with resource name: '%s'%n", result.getResourceName());
    }
  }
}
      
```

### C#

```c#
public void Run(GoogleAdsClient client, long customerId)
{
    // Get the ConversionActionService.
    ConversionActionServiceClient conversionActionService =
        client.GetService(Services.V26.ConversionActionService);

    // Note that conversion action names must be unique.
    // If a conversion action already exists with the specified name the create operation
    // will fail with a ConversionAction.DUPLICATE_NAME error.
    string ConversionActionName = "Earth to Mars Cruises Conversion #"
        + ExampleUtilities.GetRandomString();

    // Add a conversion action.
    ConversionAction conversionAction = new ConversionAction()
    {
        Name = ConversionActionName,
        Category = ConversionActionCategory.Default,
        Type = ConversionActionType.Webpage,
        Status = ConversionActionStatus.Enabled,
        ViewThroughLookbackWindowDays = 15,
        ValueSettings = new ConversionAction.Types.ValueSettings()
        {
            DefaultValue = 23.41,
            AlwaysUseDefaultValue = true
        }
    };

    // Create the operation.
    ConversionActionOperation operation = new ConversionActionOperation()
    {
        Create = conversionAction
    };

    try
    {
        // Create the conversion action.
        MutateConversionActionsResponse response =
            conversionActionService.MutateConversionActions(customerId.ToString(),
                    new ConversionActionOperation[] { operation });

        // Display the results.
        foreach (MutateConversionActionResult newConversionAction in response.Results)
        {
            Console.WriteLine($"New conversion action with resource name = " +
                $"'{newConversionAction.ResourceName}' was added.");
        }
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      
```

### PHP

```php
    public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
    {
        // Creates a conversion action.
        $conversionAction = new ConversionAction(
            [
            // Note that conversion action names must be unique.
            // If a conversion action already exists with the specified conversion_action_name
            // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
            'name' => 'Earth to Mars Cruises Conversion #' . Helper::getPrintableDatetime(),
            'category' => ConversionActionCategory::PBDEFAULT,
            'type' => ConversionActionType::WEBPAGE,
            'status' => ConversionActionStatus::ENABLED,
            'view_through_lookback_window_days' => 15,
            'value_settings' => new ValueSettings(
                [
                'default_value' => 23.41,
                'always_use_default_value' => true
                ]
            )
            ]
        );

        // Creates a conversion action operation.
        $conversionActionOperation = new ConversionActionOperation();
        $conversionActionOperation->setCreate($conversionAction);

        // Issues a mutate request to add the conversion action.
        $conversionActionServiceClient = $googleAdsClient->getConversionActionServiceClient();
        $response = $conversionActionServiceClient->mutateConversionActions(
            MutateConversionActionsRequest::build($customerId, [$conversionActionOperation])
        );

        printf("Added %d conversion actions:%s", $response->getResults()->count(), PHP_EOL);

        foreach ($response->getResults() as $addedConversionAction) {
            /**
 * @var ConversionAction $addedConversionAction
*/
            printf(
                "New conversion action added with resource name: '%s'%s",
                $addedConversionAction->getResourceName(),
                PHP_EOL
            );
        }
    }
      
```

### Python

```python
def main(client: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

    # Create the operation.
    conversion_action_operation: ConversionActionOperation = client.get_type(
        "ConversionActionOperation"
    )

    # Create conversion action.
    conversion_action: ConversionAction = conversion_action_operation.create

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}"
    conversion_action.type_ = (
        client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
    )
    conversion_action.category = (
        client.enums.ConversionActionCategoryEnum.DEFAULT
    )
    conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED
    conversion_action.view_through_lookback_window_days = 15

    # Create a value settings object.
    value_settings: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        conversion_action_service.mutate_conversion_actions(
            customer_id=customer_id,
            operations=[conversion_action_operation],
        )
    )

    print(
        "Created conversion action "
        f'"{conversion_action_response.results[0].resource_name}".'
    )
      
```

### Ruby

```ruby
def add_conversion_action(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new


  # Add a conversion action.
  conversion_action = client.resource.conversion_action do |ca|
    ca.name = "Earth to Mars Cruises Conversion #{(Time.new.to_f * 100).to_i}"
    ca.type = :UPLOAD_CLICKS
    ca.category = :DEFAULT
    ca.status = :ENABLED
    ca.view_through_lookback_window_days = 15

    # Create a value settings object.
    ca.value_settings = client.resource.value_settings do |vs|
      vs.default_value = 15
      vs.always_use_default_value = true
    end
  end

  # Create the operation.
  conversion_action_operation = client.operation.create_resource.conversion_action(conversion_action)

  # Add the ad group ad.
  response = client.service.conversion_action.mutate_conversion_actions(
    customer_id: customer_id,
    operations: [conversion_action_operation],
  )

  puts "New conversion action with resource name = #{response.results.first.resource_name}."
end
      
```

### Perl

```perl
sub add_conversion_action {
  my ($api_client, $customer_id) = @_;

  # Note that conversion action names must be unique.
  # If a conversion action already exists with the specified conversion_action_name,
  # the create operation fails with error ConversionActionError.DUPLICATE_NAME.
  my $conversion_action_name = "Earth to Mars Cruises Conversion #" . uniqid();

  # Create a conversion action.
  my $conversion_action =
    Google::Ads::GoogleAds::V26::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V26::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V26::Services::ConversionActionService::ConversionActionOperation
    ->new({create => $conversion_action});

  # Add the conversion action.
  my $conversion_actions_response =
    $api_client->ConversionActionService()->mutate({
      customerId => $customer_id,
      operations => [$conversion_action_operation]});

  printf "New conversion action added with resource name: '%s'.\n",
    $conversion_actions_response->{results}[0]{resourceName};

  return 1;
}
      
```

### curl

> [!NOTE]
> **Note:** While a direct REST code sample for this step isn't provided here, you can achieve this using a manual REST request.   
>
> Refer to the Google Ads API REST interface documentation and the method-specific reference pages. You will need to construct the JSON payload based on the proto definitions.   
>
> Key Resources:
>
> - [Using REST](https://developers.google.com/google-ads/api/rest/overview.md.txt)
> - [REST Interface Structure](https://developers.google.com/google-ads/api/rest/design/overview.md.txt)
> - [JSON Field Mappings](https://developers.google.com/google-ads/api/rest/design/json-mappings.md.txt)
> - Consult the [REST API Reference](https://developers.google.com/google-ads/api/reference/rpc/latest/overview) for the specific service and method.

<br />

#### REST request

To create the same [`ConversionAction`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionAction.md.txt) over REST, send a
`POST` request to
[`ConversionActionService.MutateConversionActions`](https://developers.google.com/google-ads/api/reference/rpc/v26/ConversionActionService/MutateConversionActions.md.txt):

```console
POST https://googleads.googleapis.com/v26/customers/{customer_id}/conversionActions:mutate
```

```json
{
  "operations": [
    {
      "create": {
        "name": "Earth to Mars Cruise Conversion",
        "type": "UPLOAD_CLICKS",
        "category": "DEFAULT",
        "status": "ENABLED",
        "primaryForGoal": true,
        "countingType": "ONE_PER_CLICK",
        "clickThroughLookbackWindowDays": "60",
        "valueSettings": {
          "defaultValue": 23.41,
          "defaultCurrencyCode": "USD",
          "alwaysUseDefaultValue": true
        }
      }
    }
  ]
}
```

Once your conversion action is `ENABLED`, import conversion events or
enhancements using the workflow for your conversion source (see [Import
conversion events](https://developers.google.com/google-ads/api/docs/conversions/overview#import-guides)).

### 3. Monitor offline conversion upload health

After uploading click conversions, call conversions, or conversion adjustments,
query [`offline_conversion_upload_client_summary`](https://developers.google.com/google-ads/api/fields/v26/offline_conversion_upload_client_summary.md.txt) to
check overall job status, success and pending rates, and error breakdowns across
your recent uploads:

```sql
SELECT
  offline_conversion_upload_client_summary.client,
  offline_conversion_upload_client_summary.status,
  offline_conversion_upload_client_summary.total_event_count,
  offline_conversion_upload_client_summary.successful_event_count,
  offline_conversion_upload_client_summary.success_rate,
  offline_conversion_upload_client_summary.pending_event_count,
  offline_conversion_upload_client_summary.pending_rate,
  offline_conversion_upload_client_summary.last_upload_date_time,
  offline_conversion_upload_client_summary.alerts
FROM offline_conversion_upload_client_summary
```

Query
[`offline_conversion_upload_conversion_action_summary`](https://developers.google.com/google-ads/api/fields/v26/offline_conversion_upload_conversion_action_summary.md.txt)
for conversion action-level diagnostics (see [Monitor offline data
diagnostics](https://developers.google.com/google-ads/api/docs/conversions/upload-summaries)), and refer to [Troubleshoot conversion
imports](https://developers.google.com/google-ads/api/docs/conversions/troubleshooting) to resolve specific error codes.

## Guide directory by lifecycle stage

Explore the full set of conversion management guides organized by lifecycle
stage:

### 1. Account setup and conversion actions

- **[Conversion action categories](https://developers.google.com/google-ads/api/docs/conversions/categories.md.txt)** : Select the right conversion source---website (`WEBPAGE`), phone call (`UPLOAD_CALLS`, `AD_CALL`, `WEBSITE_CALL`), mobile app (`GOOGLE_PLAY_DOWNLOAD`, `GOOGLE_PLAY_IN_APP_PURCHASE`, Firebase, `SKAdNetwork`), Google Analytics 4 (`GOOGLE_ANALYTICS_4_CUSTOM`, `GOOGLE_ANALYTICS_4_PURCHASE`), offline (`UPLOAD_CLICKS`), or physical store (`STORE_SALES`)---and map it to the corresponding `ConversionActionType` and API workflow.
- **[Getting started](https://developers.google.com/google-ads/api/docs/conversions/getting-started.md.txt)** : Configure [user
  consent](https://developers.google.com/google-ads/api/docs/conversions/getting-started#configure_consent), verify `ConversionTrackingSetting`, set up cross-account conversion tracking, and [create conversion
  actions](https://developers.google.com/google-ads/api/docs/conversions/getting-started#create-conversion-actions) using client libraries or REST.

### 2. Import conversion events

- **[Import offline click conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-offline.md.txt)** : Upload [offline
  conversions](https://support.google.com/google-ads/answer/2998031) (`GCLID`, `GBRAID`, `WBRAID`) and **enhanced conversions for leads** (first-party hashed email and phone number) to measure real-world transactions.
- **[Import online click conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-online.md.txt)** : Supplement website conversion tags with first-party user data---such as email address, name, home address, and phone number---using **enhanced conversions for web** (`ENHANCEMENT` adjustments).
- **[Import call conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-calls.md.txt)**: Upload conversion events for phone calls tracked through Google forwarding numbers or your own call tracking system.
- **[Import store sales conversions](https://developers.google.com/google-ads/api/docs/conversions/upload-store-sales-transactions.md.txt)** : Batch-upload in-store transaction data using `OfflineUserDataJobService`.

### 3. Adjust and optimize conversions

- **[Adjust conversions after import](https://developers.google.com/google-ads/api/docs/conversions/upload-adjustments.md.txt)** : Retract canceled orders (`RETRACTION`) or restate modified conversion values (`RESTATEMENT`) for `UPLOAD_CLICKS`, `WEBPAGE`, and `SALESFORCE` (deprecated) conversion actions.
- **[Manage conversion value rules](https://developers.google.com/google-ads/api/docs/conversions/conversion-value-rules.md.txt)**: Dynamically adjust conversion values at auction time based on audience, device, geographic location, or itinerary criteria.
- **[Custom conversion variables](https://developers.google.com/google-ads/api/docs/conversions/conversion-custom-variables.md.txt)** : Define and attach custom key-value tags (`ConversionCustomVariable`) to click, call, and web conversions for segmented reporting.
- **[Conversion goals](https://developers.google.com/google-ads/api/docs/conversions/goals/overview.md.txt)** : Group conversion actions by the `category` (`ConversionActionCategory`) and `origin` (`ConversionOrigin`) fields, and configure [customer goals](https://developers.google.com/google-ads/api/docs/conversions/goals/customer-goals.md.txt), [campaign and custom
  goals](https://developers.google.com/google-ads/api/docs/conversions/goals/campaign-goals), and [customer lifecycle goals](https://developers.google.com/google-ads/api/docs/conversions/goals/lifecycle-goals.md.txt) (new customer acquisition, customer retention, and loyalty retention). You can also retrieve and apply [`OPTIMIZE_FOR_NEW_CUSTOMERS`](https://developers.google.com/google-ads/api/reference/rpc/v26/RecommendationTypeEnum.RecommendationType.md.txt#optimize_for_new_customers) [recommendations](https://developers.google.com/google-ads/api/docs/recommendations.md.txt) for incremental new-customer conversion values.

### 4. Monitor, report, and troubleshoot

- **[Monitor offline data diagnostics](https://developers.google.com/google-ads/api/docs/conversions/upload-summaries.md.txt)** : Query [offline
  data diagnostics](https://support.google.com/google-ads/answer/13812240) at the account level (`offline_conversion_upload_client_summary`) and conversion action level (`offline_conversion_upload_conversion_action_summary`) to track success rates, pending events, and upload alerts.
- **[Fetch conversion statistics](https://developers.google.com/google-ads/api/docs/conversions/reporting.md.txt)** : Query conversion performance metrics in GAQL and [map Google Ads UI columns to Google Ads API fields](https://developers.google.com/google-ads/api/docs/conversions/reporting.md.txt#map-metrics).
- **[Troubleshoot conversion imports](https://developers.google.com/google-ads/api/docs/conversions/troubleshooting.md.txt)** : Diagnose and resolve common `ConversionUploadError` and `ConversionAdjustmentUploadError` codes.