---
title: "Update a guest on an order"
method: PUT
path: "/shop/orders/{orderId}/guests/{guestId}"
tags: ["Orders"]
---

# Update a guest on an order

`PUT /shop/orders/{orderId}/guests/{guestId}`

Update the details of a guest already attached to an order. Linking the
guest to a customer via `customer_id` overwrites the guest's `first_name`,
`last_name`, `name` and `email` with the customer's profile values, and
transfers any existing visit intake form submission to that customer.

## Request body

- object
  - `name` string — The guest's full name. Required if `first_name` and `last_name` are not provided.
  - `first_name` string — The guest's first name. Required when the site enforces separate first/last name fields; otherwise required if `name` is not provided.
  - `last_name` string — The guest's last name. Required when the site enforces separate first/last name fields; otherwise required if `name` is not provided.
  - `customer_id` string, uuid — Identifier of an existing `Customer` to link this guest to. The customer must belong to the same brand as the order's site; cross-brand links are rejected with 422.

## Response `200`

The guest was successfully created or updated.

- object
  - `data` Guest, required
    - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
    - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
    - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
    - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
    - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
    - `first_name` string, required — The first name of the guest.
    - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
    - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
    - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
    - `last_name` string, required — The last name of the guest.
    - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.

## Other responses

- `404` — The resource couldn't be found
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
