Skip to main content

Mark a No Show

Record that a customer never came, for the whole booking or one person in a group, and undo it when it was marked by mistake.

POST /v1/bookings/{id}/actions/no-show
POST /v1/bookings/{id}/actions/revert-no-show
POST /v1/bookings/{id}/participants/{participantId}/no-show
POST /v1/bookings/{id}/participants/{participantId}/undo-no-show

Authenticationโ€‹

Requires a valid API key with bookings:write scope.

What a no-show changesโ€‹

The booking stays paid and on the books. Use Cancel Booking instead when the money should go back.

After a no-show
Seat on the sessionStays sold
Rental itemsFree for other bookings for the rest of the booking's dates
Invoice and revenueUnchanged. No refund runs and no booking.cancelled webhook is sent
Held security depositReleased
Balance still owedStill due, and collected the same way as on any booking
Booking reminders and the Late check-in or Late pickup emailStop

A booking can be marked any time it is confirmed, before its start time too (a customer can call ahead). A draft, a quote, a booking request still waiting, a store-only sale and a booking that is already completed or returned are refused.

The whole bookingโ€‹

POST /v1/bookings/{id}/actions/no-show

Marks every part of the booking still waiting: rental items not picked up, activity days not checked in, and everyone on those days who has not checked in. The booking status reads no_show once every part is a no-show. On a booking with rental items and an activity where one half already went ahead, only the waiting half is marked: its lines read no_show in fulfillment_status and the booking keeps its status.

Request bodyโ€‹

FieldTypeRequiredDescription
email_customerbooleanNoSend the customer the We missed you email. Default true. Set false when the customer phoned ahead
partstringNogear or activity. Marks only that half of a booking with rental items and an activity. Leave it out to mark the whole booking
schedule_idintegerNoWith part: "activity", the session that was missed, from experiences[].schedule_id. Without it, the activity day that is due

The email goes out only when the booking now reads no_show. Marking one person never sends it, and neither does an undo. Read no_show_emails on Get Booking before you ask: when it is false, the mark sends nothing whatever email_customer says.

Request exampleโ€‹

curl -X POST "https://app.equipdash.com/api/v1/bookings/123/actions/no-show" \
-H "Authorization: Bearer eqd_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"email_customer": false}'

Mark only the rental items of a booking that also has an activity:

curl -X POST "https://app.equipdash.com/api/v1/bookings/123/actions/no-show" \
-H "Authorization: Bearer eqd_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"part": "gear"}'

The half you name reads no_show in its lines' fulfillment_status. The booking reads no_show once the other half is a no-show too, and completed when the other half went ahead.

Success responseโ€‹

Returns 200 OK with the updated booking, in the same shape as Get Booking:

{
"data": {
"id": 123,
"status": "no_show",
"no_show_at": "2026-11-20T09:42:00+00:00",
"no_show_by": null
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-11-20T09:42:00+00:00"
}
}

no_show_by names the staff member (id, name) when someone marked it in the app or on the phone. An API key has no person behind it, so a mark made with one reads null.

One person in a groupโ€‹

POST /v1/bookings/{id}/participants/{participantId}/no-show
POST /v1/bookings/{id}/participants/{participantId}/undo-no-show

participantId is the id of an entry in the booking's participants array on Get Booking. The rest of the group can still check in. The marked person's participants[].no_show_at is set, and the booking reads no_show only when nobody on it came. A rental is marked as a whole, never person by person.

Request bodyโ€‹

FieldTypeRequiredDescription
schedule_idintegerOn a booking on several daysThe day the person missed, from experiences[].schedule_id. Without it, a person booked on several days returns 422 schedule_id_required
curl -X POST "https://app.equipdash.com/api/v1/bookings/123/participants/88/no-show" \
-H "Authorization: Bearer eqd_live_your_api_key"

Undoโ€‹

POST /v1/bookings/{id}/actions/revert-no-show

Send the same part (and schedule_id) to undo only that half.

Puts the booking back to confirmed: the marked lines go back to confirmed, the people on them go back to not checked in, and no_show_at and no_show_by are cleared. No email is sent. The undo is refused when another booking has taken the rental items since.

A customer who turns up late does not need an undo. Check them in or hand over the items as normal with POST /v1/bookings/{id}/actions/check-in, POST /v1/bookings/{id}/actions/pickup, Redeem Ticket or a PATCH to checked_in or picked_up, and the no-show is cleared.

Through Update Bookingโ€‹

PATCH /v1/bookings/{id} accepts "status": "no_show" with the same email_customer field. On a booking that reads no_show, a PATCH that sends only status is allowed: confirmed undoes the no-show, and checked_in or picked_up records a late arrival. Any other field returns 409 Conflict.

Finding no-showsโ€‹

GET /v1/bookings lists them two ways:

  • ?status=no_show returns only bookings that read No show.
  • ?filter=no_show also returns bookings with a no-show inside them: one half of a booking with rental items and an activity, a missed day on a booking on several days, or some people in a group that came.

Webhooksโ€‹

When the booking now reads no_show, booking.no_show fires once, followed by booking.status_changed. Marking one person or one half without changing the booking's status fires booking.updated. An undo fires booking.status_changed. See Webhook Events for the payload.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredMissing or invalid API key
403insufficient_scopeThe API key is missing bookings:write
404resource_not_foundThe booking does not exist or belongs to another business, or the person is not on this booking
422validation_erroremail_customer is not a boolean, schedule_id is not a positive integer, or part is not gear or activity
422no_show_failedThe booking cannot be marked. The message says why, for example "This booking is already marked as a no-show."
422revert_failedThere is nothing to undo, or another booking has taken the rental items since. The message says why
422schedule_id_requiredThe person is on several days. Send schedule_id for the day they missed

Error exampleโ€‹

{
"error": {
"code": "no_show_failed",
"message": "This booking is finished, so it cannot be a no-show."
},
"meta": { "request_id": "req_abc123" }
}