Channex (channel manager)

Updated on 2026-04-29

Channex is the channel manager BedFlow uses to sync Booking.com, Airbnb, Expedia, OpenGDS, HRS, Check24 and Weekendesk. Without Channex you would have to maintain availability and prices manually per OTA.

Supported channels (via Channex)

| Channel | Code | Region / type | Default commission | |---|---|---|---| | Booking.com | BDC | Worldwide | 18% | | Airbnb | ABB | Worldwide | 15% | | Expedia (incl. Hotels.com / Vrbo) | EXP | Worldwide | 20% | | OpenGDS | GDS | EU + sub-channels (VIPIO, Charmant Hotel) | 22% | | HRS | HRS | DACH corporate / business travellers | 15% (typical) | | Check24 | CCK | Germany metasearch | 10% (typical) | | Weekendesk | WKD | BE/NL/FR weekend & short-break | 17% (typical) |

Each channel is opt-in per property (RateRule + room mapping in Connections). Source-of-truth for channel metadata lives in App\Enums\Channel.

What does Channex do for BedFlow?

  • Availability push: when a room is blocked in BedFlow → within seconds it is also blocked at Booking.com
  • Price push: rate changes go to all OTAs automatically
  • Booking import: new OTA bookings come in via webhook → BedFlow automatically creates a Booking + Debtor

Setup

  1. Create a Channex account (staging.channex.io for testing, app.channex.io for production)
  2. Connect your existing OTAs in Channex (Booking.com extranet credentials, Airbnb, etc.)
  3. In BedFlow: Settings → Integrations → Channex tab — fill in API key + property ID
  4. Go to Room types — per room fill in the Channex Room Type ID and per channel the Rate Plan ID
  5. Activate Channex via the toggle on the Connections page
  6. Click Channex Sync at the top right to run a first full sync

Automatic events

  • Booking createdPushRoomAvailabilityJob per affected room
  • Cell toggled in Room overview → the same job
  • Rate changedSyncRoomPricesJob
  • Daily at 06:00: full price sync for all rooms (365 days ahead)
  • Daily at 06:30: competitor prices scrape (informational)

Rate limiting

Channex has a rate limit:

  • Staging: 1 request / 7 seconds
  • Production: 1 request / second

BedFlow's ChannexService throttles automatically. Jobs run sequentially via the --queue=channex worker (not in parallel).

Webhooks (inbound)

Channex sends webhooks to /api/channex/webhook for:

  • booking.new — new OTA booking
  • booking.modified — OTA booking changed
  • booking.cancelled — OTA booking cancelled

Signature validation via a shared secret in settings.

Staging testing

There are 4 artisan commands to validate:

php artisan channex:test          # check credentials
php artisan channex:sync-rooms    # push room types
php artisan channex:sync-prices   # push prices (365 days)
php artisan channex:sync-availability  # push availability (365 days)