← Files Zuora Coding AgentARCHIVED FILE

references/cpq-js-hooks.json

4.81 KB · Oct 3, 2026 · 06:32 UTC

↓ Download file

{
  "sourceDocs": [
    "https://docs.zuora.com/en/zuora-cpq/manage-subscriptions/customize-cpq-x/customize-quote-studio-with-extensibility-framework/headless-component---hooks"
  ],
  "notes": [
    "Starter catalog from public docs. Extend with internal CPQ docs for exact payload details.",
    "Common incorrect names to avoid: onQuoteLoad (use afterQuoteStudioLoad), onChargeChange (use beforeProductUpdate/afterProductUpdate).",
    "Hook signatures are exact. Do not add resolver/reject callback parameters or host payload parameters such as { record, connectedQuote }; beforeSave, beforeSubmit, and beforePreviewCall take no parameters and return optional Boolean values."
  ],
  "hooks": [
    {
      "name": "beforeSave",
      "introducedIn": "10.21",
      "componentType": "headless",
      "params": [],
      "returnType": "Boolean optional",
      "returnRequiredKeys": [],
      "description": "Runs before Save. Return false to stop save."
    },
    {
      "name": "beforeSubmit",
      "introducedIn": "10.21",
      "componentType": "headless",
      "params": [],
      "returnType": "Boolean optional",
      "returnRequiredKeys": [],
      "description": "Runs before Submit, Back, or Save changes and Leave."
    },
    {
      "name": "beforePreviewCall",
      "introducedIn": "10.21",
      "componentType": "headless",
      "params": [],
      "returnType": "Boolean optional",
      "returnRequiredKeys": [],
      "description": "Runs before preview call."
    },
    {
      "name": "beforeProductAdd",
      "introducedIn": "10.34",
      "componentType": "headless",
      "params": [
        "addedProducts"
      ],
      "returnType": "Object",
      "returnRequiredKeys": [
        "proceed"
      ],
      "description": "Runs before product add."
    },
    {
      "name": "afterProductAdd",
      "introducedIn": "10.34",
      "componentType": "headless",
      "params": [
        "addedProducts"
      ],
      "returnType": "void",
      "returnRequiredKeys": [],
      "description": "Runs after product add."
    },
    {
      "name": "beforeProductUpdate",
      "introducedIn": "10.34",
      "componentType": "headless",
      "params": [
        "updatedCharges",
        "updatedAmendment",
        "updatedRatePlan",
        "isRevert"
      ],
      "returnType": "Object",
      "returnRequiredKeys": [
        "proceed"
      ],
      "description": "Runs after UI product edit and before product update logic."
    },
    {
      "name": "afterProductUpdate",
      "introducedIn": "10.34",
      "componentType": "headless",
      "params": [
        "updatedCharges",
        "updatedAmendment",
        "updatedRatePlan",
        "isRevert"
      ],
      "returnType": "void",
      "returnRequiredKeys": [],
      "description": "Runs after product update."
    },
    {
      "name": "beforeRulesExecution",
      "introducedIn": "10.34",
      "componentType": "headless",
      "params": [],
      "returnType": "Boolean optional",
      "returnRequiredKeys": [],
      "description": "Runs before rules execution."
    },
    {
      "name": "afterRulesExecution",
      "introducedIn": "10.34",
      "componentType": "headless",
      "params": [],
      "returnType": "void",
      "returnRequiredKeys": [],
      "description": "Runs after rules execution."
    },
    {
      "name": "beforeSubmitNavigation",
      "introducedIn": "10.37",
      "componentType": "headless",
      "params": [],
      "returnType": "Boolean optional",
      "returnRequiredKeys": [],
      "description": "Runs before submit navigation."
    },
    {
      "name": "afterQuoteUpdate",
      "introducedIn": "10.37",
      "componentType": "headless",
      "params": [
        "quote"
      ],
      "returnType": "void",
      "returnRequiredKeys": [],
      "description": "Runs after quote update."
    },
    {
      "name": "beforeMSQChildSave",
      "introducedIn": "10.42",
      "componentType": "headless",
      "params": [
        "childQuote"
      ],
      "returnType": "Boolean or Object optional",
      "returnRequiredKeys": [],
      "description": "Runs before MSQ child save."
    },
    {
      "name": "beforeProductRemove",
      "introducedIn": "10.45",
      "componentType": "headless",
      "params": [
        "removedQplan",
        "deletedTimeline",
        "timelineId"
      ],
      "returnType": "Object",
      "returnRequiredKeys": [
        "proceed"
      ],
      "description": "Runs before product remove."
    },
    {
      "name": "afterQuoteStudioLoad",
      "introducedIn": "10.50",
      "componentType": "headless",
      "params": [
        "index"
      ],
      "returnType": "void",
      "returnRequiredKeys": [],
      "description": "Runs after Quote Studio loads."
    }
  ],
  "publicProperties": [
    "quoteState",
    "pageState",
    "metricState",
    "masterQuoteState",
    "parentQuoteState"
  ]
}

SHA-256: 1c84305923ff61588a7f6d949b0c35973a1053b3c7ed65b79691db8799dc931d