## Summary SENERE 14 / **TRU-106**: only PICKUP bookings should post a new-booking notification to the department Slack channel. Drop-off bookings (pickup_bool = 0) are now silently filtered out. SMS and email delivery paths are unaffected. ## Change Minimal, non-refactor: - New `classes\slack::send_new_booking_notification(...)` that wraps `format_new_booking` + `send_webhook_message` and short-circuits when `pickup_bool === false`. Returns bool (sent vs. filtered). - Two call sites in `objects/bookings_o.php` (`addOrUpdate` + `notifyNewBooking`) updated to use the new wrapper. Same arguments, no other behavior changes. - Other Slack notification types (customer registration, internal department goal progress, unfulfilled bookings) are deliberately untouched. ## Tests New Pest test `tests/Unit/Slack/SlackNewBookingPickupFilterTest.php`: - pickup -> notification sent (one webhook call, message contains the booking id) - drop-off -> no notification, no log entry - no webhook configured -> no notification - webhook URL never appears in log payload PHP isn't installed in this sandbox; the test was code-reviewed against the existing `SlackCustomerRegistrationWebhookTest` pattern (subclass + it()/expect()). Please run `./vendor/bin/phpunit tests/Unit/Slack/SlackNewBookingPickupFilterTest.php` on CI / locally to confirm. ## Risk Low. Adds an early-return filter inside a new method; existing call sites already pass pickup_bool as a boolean. No DB schema change, no new dependency, no config file change. Closes TRU-106 --------- Co-authored-by: backend-subagent <agent@openclaw.local> Co-authored-by: Jeppe B <jeppe@copenhagentruckwash.io> Co-authored-by: OpenClaw Bugfix <bugfix@openclaw.local> Co-authored-by: Truck Wash Bugfix Bot <bugfix@truckwash.local>