How to configure Beds24 Channel Manager

Overview diagram of the Solidres and Beds24 channel manager integration

This channel manager is provided by the integration between Solidres and Beds24.com

UPGRADING FROM CHANNEL MANAGER 3.x? Read this before anything else.

From Channel Manager 4.0.0 onwards, the inbound Beds24 booking webhook is authenticated. Beds24 does not sign its notifications, so Solidres uses a shared secret that you paste into Beds24 as a custom HTTP header. Until that header is in place, every incoming booking notification is refused and no channel booking reaches your site.

After upgrading you must do two things:

  1. Open Joomla → System → Plugins → Solidres - Channel Manager and copy the Webhook custom header line shown under the Webhook URL field.
  2. Paste that line into the Custom Header field of the Booking Webhook screen of every Beds24 property. See STEP 7.

The same release also made the webhook POST-only. If your Beds24 webhook is configured to send a GET request, change it to POST.

PREREQUISITES:

  • Joomla 6.x, PHP 8.4+
  • Solidres 4.2.0+
  • Channel Manager plugin v4.0.1+ installed and enabled
  • A rate plan editor for the room type prices that get synced — Rate Plan plugin v1.1.0+ (or the legacy Complex tariff plugin v2.0.4+)
  • Dashboard plugin v1.0.1+ (or the legacy Statistics plugin v2.0.3+) if you want the channel manager activity widget
  • An https:// site. Beds24 only sends booking data to a secure address; on a plain http site the webhook arrives empty and no booking can be imported.

The Solidres - Channel Manager task plugin is bundled with the Channel Manager plugin and is installed automatically. You do not need to download it separately.

Please follow the following steps to join:

STEP 1. Register a Beds24 account.

Go to https://beds24.com/join.html to sign up for a free trial account (it is easy, no credit card is required). Enter the information in the signup form and click the "Join now" button

The Beds24 sign up form with the Join now button

STEP 2. Create property.

To create a new property, go to menu Properties in Settings backend and click on the "Add New Property" button, the form is pretty straightforward.

Properties can be Hotels, Hostels, B&B´s, holiday houses, vacation rentals, apartment houses, camp sites. You can have one properties or multiple properties of different types.

The Beds24 Properties screen with the Add New Property button

STEP 3. Create room type

A property has one or more rooms. The room management interface can be accessed via Setting backend → Properties → Rooms.

Here, click on the "Add New Room" button to create a new room.

The Beds24 Rooms screen with the Add New Room button

STEP 4. Set up the Beds24 API.

In beds24.com, go to Apps & Integrations → API → Generate invite code, then copy this code and go back to your Joomla site.

The Beds24 Apps and Integrations API screen showing the Generate invite code button

Open Joomla Plugin Manager → Channel Manager plugin, then paste the Invite code generated above into field Invite code, set Yes for field Generate tokens, the save the plugin to trigger the tokens generation process.

The Solidres Channel Manager plugin settings with the Invite code and Generate tokens fields

After the plugin is saved, the field Token and Refresh token should be automatically filled for you. Token needs to be rotated every 24 hours (by using the Refresh token) while Refresh token is not rotated but it will be expired if not being used within 30 days. If the Refresh Token expired, you will need to generate a new Invite code and start over.

STEP 5. Associate Solidres property/room type with Beds24 property/room type.

In Solidres, edit your property → Channel Manager → Beds24: enter your Beds24 property Id into field Property Id.

In Solidres, edit your room type → Channel Manager → Beds24: enter your Beds24 room Id into field Room Id, then set how you want to sync this room type in field Sync options.

The Solidres property edit form, Channel Manager tab, showing the Beds24 Property Id field The Solidres room type edit form, Channel Manager tab, showing the Beds24 Room Id and Sync options fields

STEP 6. Setup Joomla Scheduled Tasks.

This step is needed do perform these tasks (04 tasks) automatically:

  • Token renewal
  • Process the inventory/rate plan sync
  • Monitor the sync progress
  • Log sync activity

If you are new to Joomla Scheduled Tasks, make sure that you read this tutorial first to get started (https://www.akeeba.com/documentation/admin-tools-joomla/php-file-scanner-joomlascheduled.html).

Go to Joomla → System → Scheduled Tasks, add the following task types:

  • Solidres – Channel Manager Token: Interval in hours should be set less than 24 hours.
  • Solidres – Channel Manager Sync: Interval in minutes should be set as 1.
  • Solidres – Channel Manager Watch: Interval in minutes should be set as 1.
  • Solidres – Channel Manager Log: Interval in minutes should be set as 1.

STEP 7. Setup Beds24 property webhook.

This is how Beds24 tells your site that a new booking has arrived from one of your channels. It has two halves — the URL and the custom header — and both are required.

7a. Copy the webhook URL. In Joomla Plugin Manager → Channel Manager plugin, copy the Webhook URL field. It looks like this:

https://your-site.com/index.php?option=com_ajax&group=solidres&plugin=ChannelManager&format=json&property=[PROPERTYID]&target=webhook

7b. Copy the custom header. Directly underneath the Webhook URL you will find the Webhook custom header field. It looks like this:

X-SR-Webhook-Secret: 0f3c9a1b7e2d4856a90c1f5b3e7d2a48

NOTE If this field shows "Save these settings with Beds24 selected to generate the webhook secret" instead of a header line, simply save the plugin once — the secret is generated for you and the line appears.

The secret is generated once and never rotated behind your back, because the value lives in each Beds24 property's Custom Header field. Do not clear it: changing it stops bookings importing until every property has been re-pasted.

7c. Paste both into Beds24. In Beds24 → Properties → Access → Booking Webhook:

  • Paste the URL into the URL field, and replace the [PROPERTYID] tag with your actual Beds24 property Id. Leaving the tag in place no longer loses bookings, but it does switch off the safety check described below.
  • Paste the header line into the Custom Header field.
  • Set the request method to POST. Solidres refuses anything else.
  • Set the Webhook Version to 1.
  • Repeat for every Beds24 property. The URL differs per property (the [PROPERTYID] part) but the header line is the same for all of them.
The Beds24 Properties Access screen showing the Booking Webhook URL field

SECURITY Leave the Beds24 Additional Data setting unset. Solidres never reads card data from the webhook — it reads only the booking id, the status and the property id, and then fetches the booking from the Beds24 API over an authenticated connection. Receiving a card CVC your site does not use only widens your PCI scope.

STEP 8. Add new widget to show the channel manager activity log.

In Solidres → Dashboard, click the Widgets button in the toolbar, add a new widget called Channel manager activities, then save the widget.

If you are still running the legacy Statistics plugin, the same screen is at Solidres → Reports & Statistics → Widget.

The Solidres widget editor with the Channel manager activities widget selected

STEP 9. Sync your Solidres rate and inventory to beds24.

NOTE In this setup, Solidres controls the rate plan and inventory. The Beds24 channel manager is responsible to manage the booking channels and sync the reservations only. That means you should not alter the inventory directly in Beds24 dashboard.

To ensure that the integration is setup correctly, we will do the first inventory/rate sync:

  • Go to your Solidres room type, edit one of the rate plan or you can add new rate plan.
  • Enter all the prices and save the rate plan, it will trigger the inventory/rate plan (it depends on your room type Sync options setting) sync process.
  • When the sync is completed, you should be able to see the activity log in your Dashboard widget.
The channel manager activity widget listing a completed rate and inventory sync

Troubleshooting: bookings are not arriving from Beds24

Work through these in order.

  1. Is the custom header set? This is by far the most common cause after upgrading from Channel Manager 3.x. Check that the X-SR-Webhook-Secret line from the plugin settings is present in the Custom Header field of the Beds24 property. If Solidres shows an admin warning saying no webhook secret is configured, save the Channel Manager plugin once to generate it, then paste the header into Beds24.
  2. Is the webhook set to POST? A GET request is refused with HTTP 403.
  3. Is your site on https? Beds24 will not send booking data to a plain http address.
  4. Is the [PROPERTYID] tag replaced? The property id in the URL is a safety check: it confirms the booking Beds24 is telling you about really belongs to the property this URL was set up for. If the tag is still there the check is simply skipped, the booking is still imported, and a warning is written to the log — so this on its own will not stop bookings arriving. Replace it anyway, so that a delivery aimed at the wrong property is caught instead of imported. If the URL carries a property id that does not match the booking, the delivery is rejected with HTTP 409 and the log names both ids.
  5. Is the Webhook Version set to 1?
  6. Read the log. Every refused delivery is recorded in solidres_channelmanager_callback.php in your Joomla logs folder (Joomla → System → Global Configuration → System → Path to Log Folder). A refusal is logged as beds24: inbound delivery refused followed by the reason. Successful deliveries are logged in the same file, so an empty file means Beds24 is not reaching your site at all — check the URL, DNS and any firewall or security plugin in front of the site.

NOTE The HTTP status Beds24 receives tells you which stage failed:

  • 403 — the delivery was not authenticated. Every authentication failure returns the same 403 whatever the cause, so that someone probing the endpoint learns nothing from the difference; the actual reason is written to the log only.
  • 409 — authenticated, but the booking belongs to a different property than the one this webhook URL is bound to.
  • 502 — authenticated, but Solidres could not load the booking back from the Beds24 API. This is usually an expired token or a temporary outage, and is worth retrying.
  • 200 — the booking was received. If bookings are still missing after a 200, the problem is downstream: check that the Beds24 property id is mapped to a Solidres property (STEP 5). An unmapped property is recorded in the log as property ID not found in this website.

All the things you need to make your work easier. Did you like Solidres?