{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/google-campaign-manager/json-schema/google-campaign-manager-conversions-batch-insert-request-schema.json",
  "title": "ConversionsBatchInsertRequest",
  "description": "Insert Conversions Request.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/google-campaign-manager-conversions-api-openapi.yml#/components/schemas/ConversionsBatchInsertRequest",
  "properties": {
    "kind": {
      "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionsBatchInsertRequest\".",
      "type": "string"
    },
    "conversions": {
      "items": {
        "$ref": "#/$defs/Conversion"
      },
      "description": "The set of conversions to insert.",
      "type": "array"
    },
    "encryptionInfo": {
      "$ref": "#/$defs/EncryptionInfo",
      "description": "Describes how encryptedUserId or encryptedUserIdCandidates[] is encrypted. This is a required field if encryptedUserId or encryptedUserIdCandidates[] is used."
    }
  },
  "type": "object",
  "$defs": {
    "CartData": {
      "description": "Contains additional information about cart data. This field may only be used when calling batchinsert; it is not supported by batchupdate. Cart data reporting is only supported in SA360. [Learn more](https://support.google.com/sa360/topic/13425788)",
      "type": "object",
      "properties": {
        "merchantFeedLabel": {
          "type": "string",
          "description": "The feed labels associated with the feed where your items are uploaded. For more information, please refer to ​​ https://support.google.com/merchants/answer/12453549. Providing the feed label reduces ambiguity in identifying the right offer details."
        },
        "items": {
          "items": {
            "$ref": "#/$defs/CartDataItem"
          },
          "type": "array",
          "description": "Data of the items purchased."
        },
        "merchantId": {
          "description": "The Merchant Center ID where the items are uploaded. Providing Merchant Center ID reduces ambiguity in identifying the right offer details.",
          "format": "int64",
          "type": "string"
        },
        "merchantFeedLanguage": {
          "type": "string",
          "description": "The language associated with the feed where your items are uploaded. Use ISO 639-1 language codes. Providing the feed language reduces ambiguity in identifying the right offer details."
        }
      }
    },
    "CartDataItem": {
      "description": "Contains data of the items purchased.",
      "type": "object",
      "properties": {
        "quantity": {
          "format": "int32",
          "type": "integer",
          "description": "Number of items sold. This is a required field."
        },
        "unitPrice": {
          "type": "number",
          "description": "Unit price excluding tax, shipping, and any transaction level discounts. Interpreted in CM360 Floodlight config parent advertiser's currency code. This is a required field.",
          "format": "double"
        },
        "itemId": {
          "type": "string",
          "description": "The shopping id of the item. Must be equal to the Merchant Center product identifier. This is a required field."
        }
      }
    },
    "Conversion": {
      "properties": {
        "matchId": {
          "description": "The match ID field. A match ID is your own first-party identifier that has been synced with Google using the match ID feature in Floodlight. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[],mobileDeviceId, gclid, dclid, and impressionId. This or encryptedUserId orencryptedUserIdCandidates[] or mobileDeviceId or gclid or dclid or impressionIdis a required field.",
          "type": "string"
        },
        "adUserDataConsent": {
          "enum": [
            "GRANTED",
            "DENIED"
          ],
          "type": "string",
          "description": "This represents consent for ad user data."
        },
        "userIdentifiers": {
          "description": "The user identifiers to enhance the conversion. The maximum number of user identifiers for each conversion is 5.",
          "items": {
            "$ref": "#/$defs/UserIdentifier"
          },
          "type": "array"
        },
        "cartData": {
          "$ref": "#/$defs/CartData",
          "description": "The cart data associated with this conversion."
        },
        "encryptedUserId": {
          "type": "string",
          "description": "The alphanumeric encrypted user ID. When set, encryptionInfo should also be specified. This field is mutually exclusive with encryptedUserIdCandidates[], matchId, mobileDeviceId, gclid, dclid, and impressionId. This or encryptedUserIdCandidates[] or matchId or mobileDeviceId or gclid or dclid or impressionId is a required field."
        },
        "timestampMicros": {
          "format": "int64",
          "type": "string",
          "description": "The timestamp of conversion, in Unix epoch micros. This is a required field."
        },
        "encryptedUserIdCandidates": {
          "type": "array",
          "description": "A list of the alphanumeric encrypted user IDs. Any user ID with exposure prior to the conversion timestamp will be used in the inserted conversion. If no such user ID is found then the conversion will be rejected with INVALID_ARGUMENT error. When set, encryptionInfo should also be specified. This field may only be used when calling batchinsert; it is not supported by batchupdate. This field is mutually exclusive with encryptedUserId, matchId, mobileDeviceId, gclid dclid, and impressionId. This or encryptedUserId or matchId or mobileDeviceId or gclid or dclid or impressionId is a required field.",
          "items": {
            "type": "string"
          }
        },
        "mobileDeviceId": {
          "description": "The mobile device ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, gclid, dclid, and impressionId. This or encryptedUserId or encryptedUserIdCandidates[] or matchId or gclid or dclid or impressionId is a required field.",
          "type": "string"
        },
        "nonPersonalizedAd": {
          "type": "boolean",
          "description": "Whether the conversion was for a non personalized ad."
        },
        "sessionAttributesEncoded": {
          "type": "string",
          "description": "Session attributes for the conversion, encoded as based64 bytes. This field may only be used when calling batchinsert; it is not supported by batchupdate.",
          "format": "byte"
        },
        "treatmentForUnderage": {
          "type": "boolean",
          "description": "Whether this particular request may come from a user under the age of 16 (may differ by country), under compliance with the European Union's General Data Protection Regulation (GDPR)."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversion\".",
          "type": "string"
        },
        "floodlightConfigurationId": {
          "description": "Floodlight Configuration ID of this conversion. This is a required field.",
          "type": "string",
          "format": "int64"
        },
        "quantity": {
          "format": "int64",
          "description": "The quantity of the conversion. This is a required field.",
          "type": "string"
        },
        "floodlightActivityId": {
          "format": "int64",
          "description": "Floodlight Activity ID of this conversion. This is a required field.",
          "type": "string"
        },
        "ordinal": {
          "description": "The ordinal of the conversion. Use this field to control how conversions of the same user and day are de-duplicated. This is a required field.",
          "type": "string"
        },
        "customVariables": {
          "description": "Custom floodlight variables.",
          "items": {
            "$ref": "#/$defs/CustomFloodlightVariable"
          },
          "type": "array"
        },
        "childDirectedTreatment": {
          "type": "boolean",
          "description": "Whether this particular request may come from a user under the age of 13, under COPPA compliance."
        },
        "impressionId": {
          "description": "The impression ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, mobileDeviceId, and gclid. One of these identifiers must be set.",
          "type": "string"
        },
        "gclid": {
          "type": "string",
          "description": "The Google click ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, mobileDeviceId, dclid, and impressionId. This or encryptedUserId or encryptedUserIdCandidates[] or matchId or mobileDeviceId or dclid or impressionId is a required field."
        },
        "value": {
          "description": "The value of the conversion. Interpreted in CM360 Floodlight config parent advertiser's currency code. This is a required field.",
          "type": "number",
          "format": "double"
        },
        "limitAdTracking": {
          "type": "boolean",
          "description": "Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing."
        },
        "dclid": {
          "type": "string",
          "description": "The display click ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, mobileDeviceId, gclid, and impressionId. This or encryptedUserId or encryptedUserIdCandidates[] or matchId or mobileDeviceId or gclid or impressionId is a required field."
        }
      },
      "type": "object",
      "description": "A Conversion represents when a user successfully performs a desired action after seeing an ad."
    },
    "CustomFloodlightVariable": {
      "description": "A custom floodlight variable. Can be used in both batchinsert and batchupdate. Adding this in batchupdate will update or append the variable to the existing list.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of custom floodlight variable to supply a value for. These map to the \"u[1-100]=\" in the tags.",
          "enum": [
            "U1",
            "U2",
            "U3",
            "U4",
            "U5",
            "U6",
            "U7",
            "U8",
            "U9",
            "U10",
            "U11",
            "U12",
            "U13",
            "U14",
            "U15",
            "U16",
            "U17",
            "U18",
            "U19",
            "U20",
            "U21",
            "U22",
            "U23",
            "U24",
            "U25",
            "U26",
            "U27",
            "U28",
            "U29",
            "U30",
            "U31",
            "U32",
            "U33",
            "U34",
            "U35",
            "U36",
            "U37",
            "U38",
            "U39",
            "U40",
            "U41",
            "U42",
            "U43",
            "U44",
            "U45",
            "U46",
            "U47",
            "U48",
            "U49",
            "U50",
            "U51",
            "U52",
            "U53",
            "U54",
            "U55",
            "U56",
            "U57",
            "U58",
            "U59",
            "U60",
            "U61",
            "U62",
            "U63",
            "U64",
            "U65",
            "U66",
            "U67",
            "U68",
            "U69",
            "U70",
            "U71",
            "U72",
            "U73",
            "U74",
            "U75",
            "U76",
            "U77",
            "U78",
            "U79",
            "U80",
            "U81",
            "U82",
            "U83",
            "U84",
            "U85",
            "U86",
            "U87",
            "U88",
            "U89",
            "U90",
            "U91",
            "U92",
            "U93",
            "U94",
            "U95",
            "U96",
            "U97",
            "U98",
            "U99",
            "U100"
          ]
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#customFloodlightVariable\"."
        },
        "value": {
          "description": "The value of the custom floodlight variable. The length of string must not exceed 100 characters.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "EncryptionInfo": {
      "properties": {
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#encryptionInfo\"."
        },
        "encryptionSource": {
          "enum": [
            "ENCRYPTION_SCOPE_UNKNOWN",
            "AD_SERVING",
            "DATA_TRANSFER"
          ],
          "type": "string",
          "description": "Describes whether the encrypted cookie was received from ad serving (the %m macro) or from Data Transfer."
        },
        "encryptionEntityType": {
          "type": "string",
          "description": "The encryption entity type. This should match the encryption configuration for ad serving or Data Transfer.",
          "enum": [
            "ENCRYPTION_ENTITY_TYPE_UNKNOWN",
            "DCM_ACCOUNT",
            "DCM_ADVERTISER",
            "DBM_PARTNER",
            "DBM_ADVERTISER",
            "ADWORDS_CUSTOMER",
            "DFP_NETWORK_CODE"
          ]
        },
        "encryptionEntityId": {
          "description": "The encryption entity ID. This should match the encryption configuration for ad serving or Data Transfer.",
          "type": "string",
          "format": "int64"
        }
      },
      "type": "object",
      "description": "A description of how user IDs are encrypted."
    },
    "OfflineUserAddressInfo": {
      "description": "Identify a user by name and address.",
      "properties": {
        "state": {
          "type": "string",
          "description": "State code of the address."
        },
        "hashedLastName": {
          "type": "string",
          "description": "Last name of the user, which is hashed as SHA-256 after normalized (lower case only and no punctuation)."
        },
        "hashedFirstName": {
          "description": "First name of the user, which is hashed as SHA-256 after normalized (Lowercase all characters; Remove any extra spaces before, after, and in between).",
          "type": "string"
        },
        "countryCode": {
          "type": "string",
          "description": "2-letter country code in ISO-3166-1 alpha-2 of the user's address."
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code of the user's address."
        },
        "city": {
          "description": "City of the address.",
          "type": "string"
        },
        "hashedStreetAddress": {
          "type": "string",
          "description": "The street address of the user hashed using SHA-256 hash function after normalization (lower case only)."
        }
      },
      "type": "object"
    },
    "UserIdentifier": {
      "description": "User identifying information. Exactly one type of identifier must be specified.",
      "properties": {
        "addressInfo": {
          "$ref": "#/$defs/OfflineUserAddressInfo",
          "description": "Address information."
        },
        "hashedPhoneNumber": {
          "type": "string",
          "description": "Hashed phone number using SHA-256 hash function after normalization (E164 standard)."
        },
        "hashedEmail": {
          "type": "string",
          "description": "Hashed email address using SHA-256 hash function after normalization."
        }
      },
      "type": "object"
    }
  }
}