People
the people endpoint sends people out of your event their identifiers, contact details, custom fields, categories, and program membership its endpoint is served at /updates/api/{endpoint uuid}/event people how it works the template is the shape of the payload you want out each key is yours to name; the merge tag on the right supplies the value for each person at send time two keys carry json values rather than text, so their tags sit without quotes custom fields and categories everything else is plain text and stays quoted cancelled and checked in use the <\<tag|true\ true,false\ false>> form they render as the strings "true" and "false" custom fields and categories can each be sent two ways, and you can use both at once the whole set custom fields and categories return every one, as a json value one named field of your own <\<custom field|key >> and <\<has category|id >> each return a single value as plain text, so you can promote the one field your system cares about to a top level key the example below does this with dietary requirements and is speaker the two single field tags read different things <\<custom field|key >> returns the value stored against that key, or an empty string when the person has no value for it <\<has category|id >> returns a boolean it reports whether the category is applied, using the two strings you set with true and false set both of those options every time without them the tag falls back to a raw boolean, which renders as "1" and "" rather than anything readable both tags return text, so is speaker below is the string "no" , not false single field tags need the custom field key or category id written into the template, so they are specific to your event change the identifier in the examples below to your own before using them category ids in particular are specific to your jomablue instance sample mapping { "event id" "<\<event id>>", "resource id" "<\<resource id>>", "organisation uid" "<\<organisation uid>>", "first name" "<\<first name>>", "last name" "<\<last name>>", "email" "<\<email>>", "phone" "<\<mobile>>", "company" "<\<company>>", "job title" "<\<job title>>", "cancelled" "<\<cancelled|true\ true,false\ false>>", "checked in" "<\<badge printed|true\ true,false\ false>>", "import type" "<\<import type>>", "updated at" "<\<updated at>>", "created at" "<\<created at>>", "custom fields" <\<custom fields list|format\ json>>, "dietary requirements" "<\<custom field|key\ dietary>>", "categories" <\<categories list|format\ json,category id label\ id,category name label\ name,has category label\ status,true\ applied,false\ not applied>>, "is speaker" "<\<has category|id 2,true\ yes,false\ no>>" } sample output one rendered person from the array the endpoint returns { "event id" "your instance/event/3365", "resource id" "your instance/event person/4676", "organisation uid" "15f04804 9781 35b7 b3f8 cf063c1da67a", "first name" "ada", "last name" "lovelace", "email" "ada\@example com", "phone" "+61400000000", "company" "analytical engines", "job title" "mathematician", "cancelled" "false", "checked in" "true", "import type" "import", "updated at" "2026 05 15t08 40 35 000000z", "created at" "2026 04 10t07 43 13 000000z", "custom fields" { "dietary" "vegetarian", "t shirt size" "m" }, "dietary requirements" "vegetarian", "categories" \[ { "id" "your instance/category/1", "name" "delegate", "status" "applied" }, { "id" "your instance/category/2", "name" "speaker", "status" "not applied" } ], "is speaker" "no" } dietary requirements repeats the dietary value out of custom fields , and is speaker reports the same category 2 that appears in categories this is to illustrate how each approach works typically you would only use one approach (although using both is also allowed) field reference key merge tag emits event id <\<event id>> text the event's resource id resource id <\<resource id>> text the person's resource id organisation uid <\<organisation uid>> text your own identifier for the person first name <\<first name>> text last name <\<last name>> text email <\<email>> text phone <\<mobile>> text mobile number company <\<company>> text job title <\<job title>> text cancelled <\<cancelled| >> text "true" or "false" checked in <\<badge printed| >> text "true" or "false" import type <\<import type>> text how the person entered the event updated at <\<updated at>> text iso 8601 timestamp created at <\<created at>> text iso 8601 timestamp custom fields <\<custom fields list|format\ json>> json object of the person's custom fields unquoted in the template dietary requirements <\<custom field|key\ dietary>> text one named custom field empty string if the person has no value for that key categories <\<categories list| >> json array of the event's categories, each with an applied / not applied status unquoted in the template is speaker <\<has category|id 2,true\ yes,false\ no>> text whether one named category is applied the true and false options set the two strings returned the key names dietary requirements and is speaker are examples name them whatever suits your system programs programs group people across an event, and each membership carries its own identifier and status program membership is sent the same two ways as custom fields and categories the whole set as a json array, or one named program as flat text the whole set add a programs key the tag returns a json value, so it sits without quotes { "programs" <\<programs list|format\ json,program uid label\ uid,program name label\ name,program member uid label\ member uid,program member status label\ member status>> } the four label options name the keys inside each program object set them to whatever your system expects in the example above they produce uid , name , member uid and member status "programs" \[ { "uid" "8162fa36 ab03 44d0 aa9b d305791e211b", "name" "autumn roadshow", "member uid" "ead63b6b 198e 4bde 8ba8 c929fea9a376", "member status" "registered" }, { "uid" "ca7969ae 840d 4624 a15d 03fe41b699e2", "name" "vip hosted buyers", "member uid" "b3bf0fa1 63ac 4136 8f0a 22e09a7d80a6", "member status" "attended" } ] unlike categories, this key lists only the programs the person is a member of a person in no programs returns an empty array member uid and member status return an empty string when the membership does not carry one one named program three tags return a single program's detail as plain text, so each one stays quoted each takes the program uid of the program you want use them instead of programs, or alongside it { "roadshow name" "<\<program name|program uid 8162fa36 ab03 44d0 aa9b d305791e211b>>", "roadshow member uid" "<\<program member uid|program uid 8162fa36 ab03 44d0 aa9b d305791e211b>>", "roadshow member status" "<\<program member status|program uid 8162fa36 ab03 44d0 aa9b d305791e211b>>" } rendered { "roadshow name" "autumn roadshow", "roadshow member uid" "ead63b6b 198e 4bde 8ba8 c929fea9a376", "roadshow member status" "registered" } each returns an empty string if the program does not exist on the event, or if the person is not a member of it roadshow name returns the program's name whether or not the person is a member, so pair it with roadshow member status to tell membership from a plain name lookup because the program uid is fixed in the template, this form is tied to one event's programs use programs when the same mapping has to work across events field reference key merge tag emits programs <\<programs list| >> json array of the programs the person belongs to, each with the program uid, program name, membership uid and membership status unquoted in the template roadshow name <\<program name|program uid >> text the named program's name roadshow member uid <\<program member uid|program uid >> text the person's membership uid for the named program roadshow member status <\<program member status|program uid >> text the person's membership status for the named program the key names starting roadshow are examples name them after the program they point at