---
updatedAt: 2026-08-13T09:02:29.000Z
agentTools:
  projectIndex: https://mcm-docs.moloco.com/llms.txt
---

# campaign.budget.high_upsell

Provides budget-increase recommendations for campaigns with high budget
utilization. A delivery can batch campaigns from up to 20 ad accounts.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "description": "Reference schemas for webhook requests sent by Moloco Commerce Media (MCM).\n\nEach delivery is an HTTP `POST` to the HTTPS endpoint configured for the\nplatform. Verify the signature against the raw request body, then use\n`x-moloco-webhook-id` as the idempotency key before processing the event.\n",
    "summary": "Webhook events delivered by Moloco Commerce Media",
    "title": "MCM Webhooks",
    "version": "0.1.0"
  },
  "tags": [
    {
      "description": "Event payloads that MCM sends to registered webhook endpoints.",
      "name": "Webhook Events"
    }
  ],
  "webhooks": {
    "campaign.budget.high_upsell": {
      "post": {
        "description": "Provides budget-increase recommendations for campaigns with high budget\nutilization. A delivery can batch campaigns from up to 20 ad accounts.",
        "operationId": "receiveCampaignBudgetHighUpsell",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookId"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgent"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CampaignBudgetHighUpsellWebhook"
              }
            }
          },
          "description": "A signed `campaign.budget.high_upsell` webhook delivery.",
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx status to acknowledge the delivery."
          },
          "default": {
            "description": "A non-2xx response is treated as a failed attempt and may be retried."
          }
        },
        "summary": "campaign.budget.high_upsell",
        "tags": [
          "Webhook Events"
        ]
      }
    }
  },
  "components": {
    "parameters": {
      "WebhookId": {
        "description": "Idempotency key for the delivery. This value is identical to the body\n`id`. Store processed IDs and ignore duplicate deliveries.\n",
        "in": "header",
        "name": "x-moloco-webhook-id",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/WebhookDeliveryId"
        }
      },
      "WebhookSignature": {
        "description": "Versioned HMAC signature for the raw request body. The value has the\nform `t=<unix>,v1=<hex signature>`. During signing-key rotation, more\nthan one `v1` value can be present.\n\nCompute `HMAC-SHA256(signing_secret, \"{t}.{raw_request_body}\")` and\ncompare its lowercase hexadecimal digest with a `v1` value. Do not\nparse or re-serialize the body before verification.\n",
        "in": "header",
        "name": "x-moloco-webhook-signature",
        "required": true,
        "schema": {
          "pattern": "^t=[0-9]+,v1=[0-9a-f]{64}(,v1=[0-9a-f]{64})*$",
          "type": "string"
        }
      },
      "WebhookUserAgent": {
        "description": "Identifies webhook requests sent by MCM.",
        "in": "header",
        "name": "User-Agent",
        "required": true,
        "schema": {
          "const": "Moloco-Webhook/1",
          "type": "string"
        }
      }
    },
    "schemas": {
      "CampaignBudgetHighUpsellData": {
        "additionalProperties": false,
        "description": "Budget recommendations grouped by ad account.",
        "properties": {
          "ad_account_count": {
            "description": "Number of objects in `ad_accounts`.",
            "format": "int32",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "campaign_count": {
            "description": "Total number of campaigns across all ad accounts.",
            "format": "int32",
            "minimum": 1,
            "type": "integer"
          },
          "ad_accounts": {
            "description": "Ad accounts in the delivery. Each ad account ID is unique.",
            "items": {
              "$ref": "#/components/schemas/HighUpsellAdAccount"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "ad_account_count",
          "campaign_count",
          "ad_accounts"
        ],
        "type": "object"
      },
      "CampaignBudgetHighUpsellWebhook": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "$ref": "#/components/schemas/WebhookDeliveryId"
          },
          "event": {
            "const": "campaign.budget.high_upsell",
            "description": "Event type for this delivery.",
            "type": "string"
          },
          "test": {
            "description": "Whether the delivery was initiated as a test.",
            "type": "boolean"
          },
          "event_at": {
            "description": "Time at which MCM created the webhook event, in RFC 3339 format.",
            "format": "date-time",
            "type": "string"
          },
          "platform_id": {
            "description": "MCM platform that owns the webhook endpoint.",
            "minLength": 1,
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/CampaignBudgetHighUpsellData"
          }
        },
        "required": [
          "id",
          "event",
          "test",
          "event_at",
          "platform_id",
          "data"
        ],
        "type": "object"
      },
      "Currency": {
        "description": "ISO 4217 currency code.",
        "enum": [
          "USD",
          "KRW",
          "JPY",
          "EUR",
          "GBP",
          "SEK",
          "INR",
          "THB",
          "IDR",
          "CNY",
          "CAD",
          "RUB",
          "BRL",
          "SGD",
          "HKD",
          "AUD",
          "PLN",
          "DKK",
          "VND",
          "MYR",
          "PHP",
          "TRY",
          "VES",
          "AED",
          "CHF"
        ],
        "type": "string"
      },
      "DailyBudget": {
        "additionalProperties": false,
        "description": "A daily campaign budget.",
        "properties": {
          "period": {
            "const": "DAILY",
            "description": "Budget period. Always `DAILY` for this event.",
            "type": "string"
          },
          "amount": {
            "$ref": "#/components/schemas/MoneyMicro"
          }
        },
        "required": [
          "period",
          "amount"
        ],
        "type": "object"
      },
      "HighUpsellAdAccount": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Ad account ID.",
            "minLength": 1,
            "type": "string"
          },
          "title": {
            "description": "Human-readable ad account title.",
            "minLength": 1,
            "type": "string"
          },
          "campaigns": {
            "description": "Campaigns recommended for a budget increase. IDs are unique within the ad account.",
            "items": {
              "$ref": "#/components/schemas/HighUpsellCampaign"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "id",
          "title",
          "campaigns"
        ],
        "type": "object"
      },
      "HighUpsellCampaign": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Existing campaign ID.",
            "minLength": 1,
            "type": "string"
          },
          "title": {
            "description": "Existing campaign title.",
            "minLength": 1,
            "type": "string"
          },
          "recommended_budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DailyBudget"
              }
            ],
            "description": "Recommended daily campaign budget. It is greater than `current_budget`."
          },
          "current_budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DailyBudget"
              }
            ],
            "description": "Current daily campaign budget, in the same currency as `recommended_budget`."
          },
          "additional_budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DailyBudget"
              }
            ],
            "description": "Positive difference between `recommended_budget` and `current_budget`."
          },
          "budget_utilization_pct": {
            "description": "Current budget utilization in percent, for example `97`.",
            "format": "int32",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "title",
          "recommended_budget",
          "current_budget",
          "additional_budget",
          "budget_utilization_pct"
        ],
        "type": "object"
      },
      "MoneyMicro": {
        "additionalProperties": false,
        "description": "A monetary amount in millionths of the currency unit. For example,\n`1234` micro USD represents USD 0.001234. `amount_micro` is encoded as a\ndecimal string to preserve 64-bit integer precision.\n",
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "amount_micro": {
            "description": "Positive amount in micro units, encoded as a decimal string.",
            "pattern": "^[1-9][0-9]*$",
            "type": "string"
          }
        },
        "required": [
          "currency",
          "amount_micro"
        ],
        "type": "object"
      },
      "WebhookDeliveryId": {
        "description": "A 16-character Base62 delivery identifier. It remains unchanged across automatic retries and manual resends.",
        "pattern": "^[A-Za-z][A-Za-z0-9]{15}$",
        "type": "string"
      }
    }
  }
}
```