Skip to main content

completed_order

An order was paid: the buyer and what was bought, with the campaign it came through.

One per order, at the moment the payment reached paid (a free order at its creation). The buyer's email and phone are identifiers with role buyer; their answers to the shop's questions become attribute observations on the buyer. The ticket and product lines are separate activities (issued_ticket, issued_product), which carry the revenue; total_paid here is reporting money, not revenue. The touch is the campaign the order is attributed to.

Sent withplatform keys (see write keys)
Modestrict: exactly the declared fields; an undeclared key, a wrong type or a missing required key quarantines the event
Version3 (_schema_version on the stored row)
Stateactive
Required fieldsorder_id
Revenuenone: the revenue block is refused. Money-like names allowed in features: payment_surcharge, total_paid
Identity evidenceemail (buyer) ↔ phone (buyer), strength 100, verified
device ↔ email (buyer), strength 40, verified
Before consentno
Geocarries a geo block in practice; any activity may

Fields​

The activity's own fields, sent as features. Identifier and attribute fields are moved out of features by the processor; see identifiers and attributes.

FieldTypeRequiredWhat happens to itMeaning
citystringno, may be nullbecomes the city attribute observation (weight 50) on the buyer; it leaves featuresThe city as answered. Stored exactly as typed; the place it names is resolved beside it (see the geo block).
countrystringno, may be nullbecomes the country attribute observation (weight 50) on the buyer; it leaves featuresThe country as answered: a code or a name in any language. Stored as typed.
currencystringno, may be nullstays in featuresISO 4217 code of the amounts on the activity.
date_of_birthstringno, may be nullbecomes the date_of_birth attribute observation (weight 50) on the buyer; it leaves featuresAs answered, YYYY-MM-DD.
event_date_idsarray of stringnostays in featuresThe dates (editions) the order's tickets are for.
event_idsarray of stringnostays in featuresThe events the order's tickets are for; an order can span events, so completed_order itself has no _event_id.
first_namestringno, may be nullbecomes the first_name attribute observation (weight 50) on the buyer; it leaves featuresThe person's first name, as answered.
genderstringno, may be nullbecomes the gender attribute observation (weight 50) on the buyer; it leaves featuresAs answered, in the shop's own terms.
is_seatedbooleanno, may be nullstays in featuresWhether the order holds seated tickets.
last_namestringno, may be nullbecomes the last_name attribute observation (weight 50) on the buyer; it leaves featuresThe person's last name, as answered.
localestringno, may be nullbecomes the language attribute observation (weight 50) on the buyer; it leaves featuresThe language and region of the buyer's session, such as nl_NL.
order_idstringyesstays in featuresThe order in the ticketing system, as its own id. The same value on every activity derived from one order, so they can be joined.
payment_methodstringno, may be nullstays in featuresHow the order was paid, in the payment provider's terms (ideal, creditcard, …).
payment_surchargestringno, may be nullstays in featuresThe payment fee charged to the buyer, as a decimal string in the order's currency.
postal_codestringno, may be nullbecomes the postal_code attribute observation (weight 50) on the buyer; it leaves featuresThe postal code as answered. Stored as typed; its district is resolved beside it.
product_countintegernostays in featuresHow many product lines the order holds.
purchase_channelstringno, may be nullstays in featuresWhere the order was made: shop, box_office, import, cancel, …
shop_idstringno, may be nullstays in featuresThe shop the basket is in.
ticket_countintegernostays in featuresHow many tickets the order holds.
total_paidstringno, may be nullstays in featuresWhat the buyer paid in total, as a decimal string. Reporting money; the activity's own revenue is on the lines.
touchobjectno, may be nullstays in featuresThe campaign the activity came through; see the touch block. The same block on every revenue-bearing activity.

Notes​

The Weeztix mapper (order-v10) derives this from the order webhook: first_name/last_name from the order, the address and other answers from the shop's questions under their standard names or the shop's own ("Woonplaats", "Postleitzahl"), the touch from the shop's tracking info, and a geo block from the address answers and the purchaser IP.

Example​

One activity in a batch to POST /v1/activities, with debug so the answer says what the processor made of it. The envelope page explains every top-level field.

{
"batch": [
{
"activity_id": "0192f1a4-4931-7bc5-8000-4931bc5a0000",
"activity": "completed_order",
"ts": "2026-10-17T20:00:00+02:00",
"owner_ref": "own:own_01M4XX0033FV7QXDRB5BQBRPGR",
"identifiers": [
{
"type": "email",
"value": "ana@example.com",
"role": "buyer"
},
{
"type": "phone",
"value": "+31624681357",
"role": "buyer"
}
],
"features": {
"city": "Amsterdam",
"country": "Nederland",
"currency": "EUR",
"date_of_birth": "1990-05-17",
"event_date_ids": [
"9c0e1f2a-0000-4000-8000-000000000002"
],
"event_ids": [
"3a114ef5-6105-48fd-aafc-0ae609d0536c"
],
"first_name": "Ana",
"gender": "female",
"is_seated": false,
"last_name": "de Vries",
"locale": "nl_NL",
"order_id": "1f2d3c4b-0000-4000-8000-000000000001",
"payment_method": "ideal",
"payment_surcharge": "0.35",
"postal_code": "1012 AB",
"product_count": 0,
"purchase_channel": "shop",
"shop_id": "shop_01M4XVBYC3FGXCPFRZEPGV20RZ",
"ticket_count": 2,
"total_paid": "45.35",
"touch": {
"captured_by": "touch.captured by",
"click_ids": {},
"landing_url": "touch.landing url",
"referrer": "touch.referrer",
"utm": {
"campaign": "touch.utm.campaign",
"content": "touch.utm.content",
"medium": "touch.utm.medium",
"source": "touch.utm.source",
"term": "touch.utm.term"
}
}
},
"geo": [
{
"kind": "home",
"role": "buyer",
"city": "Amsterdam",
"postal_code": "1012 AB",
"country": "Nederland",
"locale": "nl_NL"
},
{
"kind": "ip",
"role": "buyer",
"ip": "192.0.2.10"
}
]
}
],
"debug": true
}

Try it​

Sends this request from your browser. The key and the endpoint are kept in this browser only.

Versions​

VersionModeKey classesChange
1strictplatformfirst version
2strictplatformadds city, country, date_of_birth, gender, postal_code
3 (current)strictplatformsame fields

A published version never changes; a change is a new version, and every stored row says which version it was checked against.