---
title: "Upload conversion adjustments"
method: POST
path: "/api/v1/conversions/adjustments"
tags: ["conversions"]
---

# Upload conversion adjustments

`POST /api/v1/conversions/adjustments`

## Request

- Base URL: `https://api.growomat.com`
- URL: `https://api.growomat.com/api/v1/conversions/adjustments`
- Auth: HTTP bearer

Corrects conversions you already reported: `RETRACTION` for a refund or churn, `RESTATEMENT` for a new value, `ENHANCEMENT` to add identity data. Each adjustment names the original conversion by `orderId` (or by `gclid` plus `originalConversionDateTime`). Send one or a batch of up to 500. Also accepted with the `campaigns:write` scope.

**Errors**

- `400 VALIDATION_ERROR`: the body failed validation; `details.issues[]` names each field.

## Headers

- `X-Space-Id` string

## Request body

- union: One adjustment, an array of adjustments, or `{ adjustments: [...] }` with up to 500.
  - ConversionAdjustment: A correction to a conversion you reported earlier, identified by `orderId` or by `gclid` plus `originalConversionDateTime`.
    - `adjustmentType` 'RETRACTION' | 'RESTATEMENT' | 'ENHANCEMENT', required: `RETRACTION` cancels the conversion, `RESTATEMENT` changes its value, `ENHANCEMENT` adds identity data.
    - `conversionAction` string, required: The conversion action's name or id.
    - `orderId` string: The `orderId` of the original conversion.
    - `gclid` string: Google Ads click id of the original conversion, with `originalConversionDateTime`.
    - `msclkid` string: Microsoft Advertising click id of the original conversion.
    - `originalConversionDateTime` string, date-time: When the original conversion happened.
    - `value` number: The new value, for a `RESTATEMENT`.
    - `currency` string: ISO 4217 currency of `value`.
    - `occurredAt` string, date-time: When the adjustment happened. Must not be earlier than the original conversion.
    - `consent` ConsentSignal: Consent Mode signals for visitors in the EEA. `UNKNOWN` is sent to the platform as `DENIED`.
      - `ad_user_data` 'GRANTED' | 'DENIED' | 'UNKNOWN': Whether user data may be used for advertising.
      - `ad_personalization` 'GRANTED' | 'DENIED' | 'UNKNOWN': Whether ads may be personalised.
  - ConversionAdjustment[]
    - `adjustmentType` 'RETRACTION' | 'RESTATEMENT' | 'ENHANCEMENT', required: `RETRACTION` cancels the conversion, `RESTATEMENT` changes its value, `ENHANCEMENT` adds identity data.
    - `conversionAction` string, required: The conversion action's name or id.
    - `orderId` string: The `orderId` of the original conversion.
    - `gclid` string: Google Ads click id of the original conversion, with `originalConversionDateTime`.
    - `msclkid` string: Microsoft Advertising click id of the original conversion.
    - `originalConversionDateTime` string, date-time: When the original conversion happened.
    - `value` number: The new value, for a `RESTATEMENT`.
    - `currency` string: ISO 4217 currency of `value`.
    - `occurredAt` string, date-time: When the adjustment happened. Must not be earlier than the original conversion.
    - `consent` ConsentSignal: Consent Mode signals for visitors in the EEA. `UNKNOWN` is sent to the platform as `DENIED`.
      - `ad_user_data` 'GRANTED' | 'DENIED' | 'UNKNOWN': Whether user data may be used for advertising.
      - `ad_personalization` 'GRANTED' | 'DENIED' | 'UNKNOWN': Whether ads may be personalised.
  - object
    - `adjustments` ConversionAdjustment[], required
      - `adjustmentType` 'RETRACTION' | 'RESTATEMENT' | 'ENHANCEMENT', required: `RETRACTION` cancels the conversion, `RESTATEMENT` changes its value, `ENHANCEMENT` adds identity data.
      - `conversionAction` string, required: The conversion action's name or id.
      - `orderId` string: The `orderId` of the original conversion.
      - `gclid` string: Google Ads click id of the original conversion, with `originalConversionDateTime`.
      - `msclkid` string: Microsoft Advertising click id of the original conversion.
      - `originalConversionDateTime` string, date-time: When the original conversion happened.
      - `value` number: The new value, for a `RESTATEMENT`.
      - `currency` string: ISO 4217 currency of `value`.
      - `occurredAt` string, date-time: When the adjustment happened. Must not be earlier than the original conversion.
      - `consent` ConsentSignal: Consent Mode signals for visitors in the EEA. `UNKNOWN` is sent to the platform as `DENIED`.
        - `ad_user_data` 'GRANTED' | 'DENIED' | 'UNKNOWN': Whether user data may be used for advertising.
        - `ad_personalization` 'GRANTED' | 'DENIED' | 'UNKNOWN': Whether ads may be personalised.

## Response `200`

OK. The result is in `data`. List responses also carry `meta` with `nextCursor` and `total`.

- SuccessEnvelope: The shape of every successful response.
  - `data` unknown, required
  - `meta` object: Present on list responses.
    - `nextCursor` union: Pass as `cursor` to get the next page. `null` on the last page.
      - string
      - number
    - `total` integer: Number of items in this page.

## Other responses

- `201`: Created. The new resource is in `data`.
- `400`: The request is malformed or fails validation. `error.code` is `VALIDATION_ERROR` (with `details.issues[]` naming each field), `INVALID_REQUEST` (the body is not valid JSON or has the wrong shape), or one of the specific codes listed in this operation's description.
- `401`: The bearer token is missing, invalid, expired or revoked (`INVALID_TOKEN`).
- `403`: The token lacks the scope this operation needs (`INSUFFICIENT_SCOPE`), the plan is read-only (`READ_ONLY_MODE`), or the caller is not a member of the Space named in `X-Space-Id` (`NOT_A_MEMBER`).
- `404`: No such resource in the active Space (`NOT_FOUND`), or `X-Space-Id` names a Space that does not exist (`SPACE_NOT_FOUND`).
- `409`: The request conflicts with the current state, for example a delete blocked by dependents or a sync already running. This operation's description names the `error.code` values it can return.
- `429`: Too many requests (`RATE_LIMITED`). Wait for the number of seconds in the `Retry-After` header, then retry.

---

[API](https://skmtc.dev/growomat/apis/growomat-public-api.md) · [All operations](https://skmtc.dev/growomat/apis/growomat-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/growomat/apis/growomat-public-api/revisions/f02611b531aa?raw)
