issued_ticket
A ticket was issued as part of a paid order: one per ticket, with the ticket's own revenue.
The barcode is the holder's identifier; the buyer's email rides along with confidence 40, which gives a weak verified edge barcode ↔ buyer until the ticket is personalised. The revenue is the ticket's price, positive; service_fee is money that is not the organiser's and is allowed in features by name.
| Sent with | platform keys (see write keys) |
| Mode | strict: exactly the declared fields; an undeclared key, a wrong type or a missing required key quarantines the event |
| Version | 3 (_schema_version on the stored row) |
| State | active |
| Required fields | order_id, event_id |
| Revenue | yes, positive; the revenue block is required to mean something and never accepted from a browser key. Money-like names allowed in features: service_fee, scan_amount |
| Identity evidence | barcode (holder) ↔ email (buyer), strength 40, verified |
| Before consent | no |
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.
| Field | Type | Required | What happens to it | Meaning |
|---|---|---|---|---|
discount_code | string | no, may be null | stays in features | The discount code applied to the ticket, if any. |
event_date_id | string | no, may be null | stays in features | The date (edition) of the event, where the event has several. |
event_id | string | yes | stays in features | The Eventix event the activity is about. Copied to the stream's _event_id column, so filters on an event are fast; it must be a plain string. |
event_start | string | no, may be null | stays in features | When the event (date) starts, as the ticketing system has it. |
order_id | string | yes | stays in features | The order in the ticketing system, as its own id. The same value on every activity derived from one order, so they can be joined. |
order_ticket_id | string | no, may be null | stays in features | The ticket within the order: the id of the ticket line, not the barcode. |
scan_amount | integer | no, may be null | stays in features | How many units the scan consumed (a multi-entry ticket, a product with a quantity). |
seat_label | string | no, may be null | stays in features | The seat, for a seated ticket. |
service_fee | string | no, may be null | stays in features | The service fee on the ticket, as a decimal string. Money that is not the organiser's revenue. |
swapped_from_order_ticket_id | string | no, may be null | stays in features | When the ticket replaced another one (a swap), the ticket it replaced. |
ticket_type_id | string | no, may be null | stays in features | The ticket type (product) the ticket was bought as. |
ticket_type_name | string | no, may be null | stays in features | The ticket type's name at the time of sale, for reading without a join. |
touch | object | no, may be null | stays in features | The campaign the activity came through; see the touch block. The same block on every revenue-bearing activity. |
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-5125-7af2-8000-5125af200000",
"activity": "issued_ticket",
"ts": "2026-10-17T20:00:00+02:00",
"owner_ref": "own:own_01M4XX0033FV7QXDRB5BQBRPGR",
"identifiers": [
{
"type": "barcode",
"value": "TK-4471",
"role": "holder",
"namespace": "weeztix"
},
{
"type": "email",
"value": "ana@example.com",
"role": "buyer",
"confidence": 40
}
],
"revenue": {
"amount": "45.00",
"currency": "EUR"
},
"features": {
"discount_code": null,
"event_date_id": "9c0e1f2a-0000-4000-8000-000000000002",
"event_id": "3a114ef5-6105-48fd-aafc-0ae609d0536c",
"event_start": "2027-07-10T14:00:00+02:00",
"order_id": "1f2d3c4b-0000-4000-8000-000000000001",
"order_ticket_id": "5e6f7a8b-0000-4000-8000-000000000004",
"scan_amount": 1,
"seat_label": null,
"service_fee": "1.25",
"ticket_type_id": "tt_01M4XVBYC3FGXCPFRZEPGV20RZ",
"ticket_type_name": "Weekend",
"swapped_from_order_ticket_id": null,
"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"
}
}
}
}
],
"debug": true
}
Try it
Sends this request from your browser. The key and the endpoint are kept in this browser only.
Versions
| Version | Mode | Key classes | Change |
|---|---|---|---|
| 1 | strict | platform | first version |
| 2 | strict | platform | adds swapped_from_order_ticket_id |
| 3 (current) | strict | platform | adds touch |
A published version never changes; a change is a new version, and every stored row says which version it was checked against.