Payload versions (V1 vs V2)
Payload versions (V1 vs V2)
The estimate-export webhook supports two payload schema versions, selected per connection. The version is a property of the connection/integration — it is not negotiated per request. Whichever version a connection is configured with is reflected in the payload body's schemaVersion field on every delivery.
Choosing a version
The version is controlled by the Payload version setting on the connection in Connections settings:
| Setting value | schemaVersion in payload |
Behaviour |
|---|---|---|
| V1 (default) | v1 |
estimate[] contains only the selected quantity option. |
| V2 (opt-in) | v2 |
estimate[] contains all priced quantity options of the selected tier, each marked with isSelected. |
To opt into V2, set the connection's Payload version field to V2 in Connections settings. New connections default to V1, so existing integrations are unaffected until you change the setting.
What differs between V1 and V2
V2 is a strict superset of V1 on the estimate[] array, plus one new field:
| Aspect | V1 | V2 |
|---|---|---|
estimate[] contents |
Only the selected quantity option (one item per product). | All priced quantity options of the selected tier (e.g. 250 / 500 / 1000). |
isSelected field on each estimate[] item |
Not present. | Present — true on the selected/primary option, false on the others. |
Quote-level aggregation (top-level delivery, metadata currency, multi-product top-level pricing) |
Derived from the selected option. | Derived from the selected option only — not summed across the quantity options in estimate[]. |
| All other fields (pricing, products, productionSteps, versions, delivery, customer, metadata, top-level fields) | — | Unchanged — identical to V1. |
V2 adds no other fields: there are no new currency, unitPrice, or optionTier keys, and no new arrays. The only addition is the isSelected marker on each estimate[] item.
Before / after — the estimate[] array shape
V1 — selected quantity option only, no isSelected key:
"estimate": [
{
"status": "won",
"quantity": 500,
"pricing": { "price": 799.99, "totalPrice": 4100.00 }
// ...products, versions, etc.
}
]
V2 — all priced quantity options of the selected tier, each with isSelected:
"estimate": [
{
"status": "won",
"quantity": 250,
"isSelected": false,
"pricing": { "price": 899.99, "totalPrice": 2350.00 }
// ...products, versions, etc.
},
{
"status": "won",
"quantity": 500,
"isSelected": true,
"pricing": { "price": 799.99, "totalPrice": 4100.00 }
// ...products, versions, etc.
},
{
"status": "won",
"quantity": 1000,
"isSelected": false,
"pricing": { "price": 699.99, "totalPrice": 7100.00 }
// ...products, versions, etc.
}
]
Everything outside estimate[] is the same in both versions. In V2, the top-level delivery, metadata currency, and (for multi-product estimates) the aggregate top-level pricing continue to reflect the selected option (isSelected: true) only — they are not aggregated across the quantity options listed in estimate[].
For complete payloads, see the Example payload (v1) and Example payload (v2) pages.