Hooks & REST API
Extend Yeti Bookings
Actions
| Hook | Arguments |
|---|---|
ybk_booking_created | $booking_id |
ybk_booking_status_changed | $booking_id, $old_status, $new_status |
ybk_booking_rescheduled | $booking_id, $old_start_timestamp |
ybk_balance_order_created | $booking_id, $order_id |
ybk_product_saved | $product_id, $config |
Filters
| Hook | Use |
|---|---|
ybk_quote | Change a price: ( $quote, $product_id, $start, $args ). $quote has total, deposit, balance and lines. |
ybk_admin_email | Change who receives admin emails |
ybk_send_email | Return false to stop an email: ( $send, $to, $subject, $booking ) |
ybk_max_cart_bookings | Most bookings one cart can hold at once (default 10) |
ybk_holds_per_hour | Most new holds one IP address can make in an hour (default 20) |
ybk_guest_holds | Most live holds visitors who aren't logged in can have across the whole site at once (default 50, 0 turns it off) |
// 10% off bookings made by logged-in members.
add_filter( 'ybk_quote', function ( $quote ) {
if ( is_user_logged_in() ) {
$quote['total'] = round( $quote['total'] * 0.9, 2 );
$quote['deposit'] = min( $quote['deposit'], $quote['total'] );
$quote['balance'] = $quote['total'] - $quote['deposit'];
}
return $quote;
} );
REST API
Namespace yeti-bookings/v1. Booking options are passed as ybk_blocks, ybk_resource, ybk_persons[type] and ybk_extras[].
| Route | Returns |
|---|---|
GET /products/{id}/month?month=2026-11 | Each day: available, full or closed |
GET /products/{id}/slots?date=2026-11-03 | Start times with spaces left |
GET /products/{id}/quote?ybk_start=TIMESTAMP | Price, deposit and balance |
POST /bookings/{id}/reschedule | Moves the logged-in customer's booking |
GET /admin/bookings?from=&to= | Calendar data (shop managers only) |
Need Help?
If you have questions or need assistance, check out our Troubleshooting Guide or FAQ, or contact us through the item's support tab.