pixellint

vendor/google-ads-conversion-adjustments · vendor documented

Conversion adjustments need an identity and a restatement value

Not UploadClickConversions. The adjustment upload wants conversionAction, partialFailure true, adjustmentType, a timestamp with a timezone offset, and either orderId or gclidDateTimePair.gclid. RESTATEMENT needs restatementValue.adjustedValue.

RESTATEMENT needs the new value

Google documents restatementValue.adjustedValue as required on a restatement. A retraction must not send it.

Rule: vendor.google-ads-conversion-adjustments.body.restatement_requires_value

What this pack matches

Hosts
googleads.googleapis.com
Paths
…uploadConversionAdjustments…
Vendor docs
developers.google.com/google-ads/api/docs/conversions/upload-adjustments

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
conversionAdjustments required UploadConversionAdjustments requires a `conversionAdjustments` array. Fix: Send at least one ConversionAdjustment in `conversionAdjustments`. vendor.google-ads-conversion-adjustments.body.conversionAdjustments.missing docs
partialFailure required Google documents `partial_failure` as required, and the upload guides say to always send true. Fix: Set `partialFailure` to `true`. vendor.google-ads-conversion-adjustments.body.partialFailure.missing
vendor.google-ads-conversion-adjustments.body.partialFailure.empty
vendor.google-ads-conversion-adjustments.body.partialFailure.invalid
docs
conversionAction required It is the conversion action resource name, and every uploaded adjustment requires it. Fix: Set `conversionAction` to `customers/{id}/conversionActions/{id}`. vendor.google-ads-conversion-adjustments.body.conversionAction.missing
vendor.google-ads-conversion-adjustments.body.conversionAction.empty
docs
adjustmentType required Google documents `RETRACTION`, `RESTATEMENT`, and `ENHANCEMENT`. Fix: Set `adjustmentType` to `RETRACTION`, `RESTATEMENT`, or `ENHANCEMENT`. vendor.google-ads-conversion-adjustments.body.adjustmentType.missing
vendor.google-ads-conversion-adjustments.body.adjustmentType.empty
vendor.google-ads-conversion-adjustments.body.adjustmentType.invalid
docs
adjustmentDateTime required Google documents the adjustment time with a timezone offset as `yyyy-mm-dd hh:mm:ss+|-hh:mm`. Fix: Send a timestamp such as `2026-08-21 12:00:00+00:00`. vendor.google-ads-conversion-adjustments.body.adjustmentDateTime.missing
vendor.google-ads-conversion-adjustments.body.adjustmentDateTime.empty
vendor.google-ads-conversion-adjustments.body.adjustmentDateTime.invalid
docs
orderId optional It identifies the conversion to adjust. Google documents `orderId` as the recommended identifier. vendor.google-ads-conversion-adjustments.body.orderId.empty docs
gclidDateTimePair.gclid optional Google click ID plus conversion time, as an alternative to `orderId`. vendor.google-ads-conversion-adjustments.body.gclidDateTimePair.gclid.empty docs
gclidDateTimePair.conversionDateTime optional The original conversion time when identifying via `gclidDateTimePair`. Same timestamp shape as `adjustmentDateTime`. vendor.google-ads-conversion-adjustments.body.gclidDateTimePair.conversionDateTime.empty
vendor.google-ads-conversion-adjustments.body.gclidDateTimePair.conversionDateTime.invalid
docs
restatementValue.adjustedValue optional The restated conversion value. Google documents it as required on `RESTATEMENT` and invalid on `RETRACTION`. docs
restatementValue.currencyCode optional It is an ISO 4217 currency code for `adjustedValue`. Fix: Use the three-letter code, such as `USD`. vendor.google-ads-conversion-adjustments.body.restatementValue.currencyCode.empty
vendor.google-ads-conversion-adjustments.body.restatementValue.currencyCode.invalid
docs
body.order_or_gclid_required required The adjustment has neither `orderId` nor `gclidDateTimePair.gclid`. Google documents one of them as required so the conversion can be identified. Fix: Send `orderId`, or send `gclidDateTimePair` with `gclid` and `conversionDateTime`. vendor.google-ads-conversion-adjustments.body.order_or_gclid_required docs
body.restatement_requires_value required A `RESTATEMENT` has no `restatementValue.adjustedValue`. Google documents the restated value as required. Fix: Set `restatementValue.adjustedValue` to the new conversion value. vendor.google-ads-conversion-adjustments.body.restatement_requires_value docs

Validate a payload

pixellint validate json @payload.json --rulepack vendor/google-ads-conversion-adjustments

Try this failing payload in the playground. Conversion adjustment restatement without a value.

{"partialFailure":true,"conversionAdjustments":[{"conversionAction":"customers/1/conversionActions/2","adjustmentType":"RESTATEMENT","adjustmentDateTime":"2026-08-21 12:00:00+00:00","orderId":"ORDER-1"}]}

cargo install pixellint · npm install pixellint