Syncfaro Setup & User Guide
Everything you need to connect a MotoPress Hotel Booking site to the Channex channel manager, and keep it in sync.
1. Overview & requirements
Syncfaro is a WordPress plugin that connects MotoPress Hotel Booking to Channex.io, a certified channel management platform distributing to Booking.com, Airbnb, Expedia and 60+ channels. Once configured, Syncfaro keeps prices, availability, minimum stay and bookings in sync, in both directions, automatically.
How it works, in one paragraph
Syncfaro listens to what actually happens on your site: a booking is created, a season price changes, a min-stay rule is edited. It recalculates only the affected dates and sends just the changes to Channex (never bulk snapshots), respecting Channex rate limits. Bookings made on any channel flow back into MotoPress as native bookings, and availability updates everywhere.
Requirements
- WordPress with MotoPress Hotel Booking installed and configured (accommodation types, rates, seasons).
- PHP 8.0 or newer.
- A Channex account with a property created (rooms and rate plans matching your MotoPress structure).
- Your Channex API key.
2. Installation
- In WordPress, go to Plugins → Add New → Upload Plugin.
- Upload the Syncfaro
.zipfile and click Install Now. - Click Activate. A new Syncfaro menu entry appears in your admin sidebar.
- Enter your licence key when prompted (you received it with your purchase). Your licence, plan and renewal date are then visible under Syncfaro → Account.
Updates
Updates are delivered automatically through your licence and appear in the normal WordPress updates screen. If a new version is announced but doesn't show up in your Plugins list yet, open Syncfaro → Account: the current version is listed there with an Install Update Now button that fetches it directly.
3. Connect to Channex
Open the Syncfaro admin page and complete the Connection section:
- Paste your Channex API key.
- Select or paste the Property ID of your Channex property.
- Save. Use Probe Channex to confirm the connection: it lists the rooms and rate plans found on the property.
One required Channex setting
In your Channex property settings, set Min Stay Type to arrival. Syncfaro manages minimum stay as min-stay arrival and sends it under the simplified min_stay key, which is what Channex expects in this mode.
both, Channex expects two min-stay types on every update and the sync will report inconsistencies.Recommended Channex property settings
- Min Stay Type:
arrival(required, see above). - Auto Availability: New Booking ON, Modified OFF, Cancelled OFF. Syncfaro handles modifications and cancellations itself, so Channex must not second-guess them.
- Property contact email: filled in (Properties → Contacts), so Channex can reach you if needed.
Dry-run mode
While testing, you can enable dry-run: Syncfaro prepares every update and writes the exact payload to the Activity Log, but nothing is sent to Channex. Turn it off to go live.
4. Map rooms & rate plans
The Mapping section shows your MotoPress accommodation types and their rates on one side, and dropdowns with your Channex rooms and rate plans on the other.
- For each MotoPress accommodation type, pick the matching Channex room type.
- For each MotoPress rate, pick the matching Channex rate plan.
- Save the mapping.
Only mapped rooms and rates are synced. Anything left unmapped is simply ignored, which is useful if some products should stay off the channels.
5. Per-guest pricing (OBP)
Many short-term rentals price by occupancy: a base price for, say, 2 guests, plus a fixed amount for each extra guest. MotoPress supports this natively (base occupancy + price per extra adult in the rate's season prices). Channex calls it Occupancy-Based Pricing and models it with a per_person rate plan whose occupancy options derive from a primary occupancy.
Syncfaro bridges the two automatically, in three steps.
1. Detection
When a mapped MotoPress rate has a price per extra guest, Syncfaro recognises it as OBP and shows a blue line under the rate in the Mapping table with the detected structure, for example: OBP · base 2 + 58.00€/extra guest · 1p: +0 · 2p: +0 · 3p: +58 · 4p: +116 · 5p: +174 · 6p: +232. The increments are cumulative, one per occupancy, exactly as Channex expects. Fixed-price rates show nothing and are unaffected.
2. Diagnosis
Under that line, Syncfaro reads the mapped Channex rate plan and tells you whether it matches:
- Channex rate plan OK (per_person, increments match): nothing to do, per-guest prices reach the channels.
- NOT per_person: the rate plan sells a flat price, so extra-guest amounts will not reach the channels.
- Mismatch: it is per_person but some increment or the primary occupancy differs from MotoPress.
The same check runs on every full sync and writes obp_ok or obp_warning lines to the Activity Log.
3. Apply OBP to Channex (one click)
When the diagnosis is not green, an Apply OBP to Channex button appears. It creates a new per_person rate plan in Channex (named after your rate, with "(OBP)" appended) carrying the exact occupancies and increments detected, verifies it by reading it back, and re-points the mapping of that rate to the new plan. Nothing is modified silently: you confirm, and the result is logged as obp_applied.
How each channel handles per-guest prices
- Booking.com applies them natively: with the property in "Pricing per guest" mode, it derives every occupancy from the base price Syncfaro sends. Nothing else to configure.
- Airbnb uses a single listing price plus an extra guest fee. Channex sends the base price only. Set the extra guest fee manually in the Airbnb listing (Pricing → Fees), as a whole number: your per-guest amount multiplied by any channel markup (e.g. 58 × 1.20 ≈ 69). Clear any old manual values first, then verify with a real booking simulation at 2, 3 and 4 guests.
6. Min-stay per rate plan
Channex models minimum stay per rate plan: two rate plans of the same room can carry different values. MotoPress defines it per accommodation type. Syncfaro bridges the two with its own Min-stay rules, a feature MotoPress itself doesn't offer.
Adding rules
- Open the Min-stay per rate plan section of the Syncfaro page.
- Click + Add rule for each rule you need: choose the rate plan, the date range, and the minimum nights.
- Add as many rows as you like, then click Save min-stay rules once. All changes are sent together in a single update.
How rules behave
- Dates without a rule carry
min_stay 1(no restriction). - Overlapping rules: the one lower in the list wins for the overlapping dates.
- Deleting a rule automatically resets those dates back to 1 on Channex, no residue is left behind.
- Rate and min-stay changes affecting the same dates are sent fused in one call, as Channex requires.
7. Long-stay discounts
In MotoPress a long-stay discount is not stored as a discount. It is a second column of nightly price inside each season, starting at a given night. Charge 100 for nights 1 and 2, and 95 from night 3, and a guest staying three nights pays 95 a night.
Channels do not keep it that way. Airbnb stores the discount as a percentage rule, held apart from the price: from 7 nights, 10% off. Because Syncfaro sends the nightly price for every date, and that price is the first tier's, the long-stay discount would vanish on the way to the channel. It has to travel separately. That is what this section does.
What Syncfaro reads
For every mapped rate, Syncfaro opens the season prices and looks at the night tiers inside each season. The discount is how far each tier falls below the first one, expressed as a percentage. The panel shows exactly what it read, rate by rate, before anything is sent.
Why the seasons have to agree
A channel keeps one set of rules per rate plan, not one per season. If your seasons carry different tiers, Syncfaro sends nothing and says so, rather than applying one season's discount to the whole year. Open See what each season holds and you get the sets side by side.
Which channels accept it
| Channel | Discounts through Channex | Where to set them otherwise |
|---|---|---|
| Airbnb | Yes | — |
| Booking.com | No (the endpoint answers HTTP 422) | Booking.com extranet |
| Vrbo | No (the endpoint answers HTTP 422) | Vrbo owner dashboard, under Rates › Long-stay discounts: a weekly discount covers 7 nights and over, a monthly one covers 28 and over |
Channels that cannot take the rule are listed in the report with the reason, so you know which panels still need a hand.
What Syncfaro never touches
The price per extra guest and the included occupancy are left alone, on
purpose. They are absolute amounts, and channels usually carry them with
markup; writing the site's own figure there would cut your price without
anyone asking. When the channel and the site disagree, the difference is
written to the activity log as los_extra_person and left for
you to judge.
Turning it on
- Open Long-stay discounts on the Syncfaro page and read the table of what was detected.
- Click Preview changes. Nothing is written; you get a line per channel saying what would happen.
- If it reads correctly, tick Send discounts to the channels on every full sync and click Send now.
Once the box is ticked, every full sync realigns the channels with the site, so a price change in MotoPress no longer leaves a stale discount behind in the channel.
8. Everyday sync
After setup there is nothing to operate. Work in MotoPress as you always did; Syncfaro reacts:
| You do this in MotoPress | Syncfaro sends to Channex |
|---|---|
| Change a season price | The new rate, only for the affected dates and rate plans |
| A booking is created (site or admin) | Availability down, only for the booked dates |
| A booking is cancelled | Availability back up for those dates |
| A booking's dates are moved | Both ranges: the old dates freed, the new dates occupied |
| Edit Syncfaro min-stay rules | The changed min-stay values, per rate plan |
| A booking arrives from a channel | Nothing to send: Syncfaro creates it in MotoPress, records the payment as complete, emails the site admin, and pushes the new availability to every other channel |
Every event and payload is visible in the Activity Log at the bottom of the Syncfaro page: what came in, what was calculated, what was sent, and Channex's response (including the task ID). If you ever wonder "did it sync?", the log answers in one glance.
9. Full sync & the state mirror
A full sync pushes the complete picture, 500 days of availability, prices and restrictions for every mapped room and rate, in exactly two API calls. Use the Full sync (500 days) button:
- right after finishing the initial setup;
- after restoring a backup or making bulk changes outside the normal flow;
- whenever you want the peace of mind of a clean baseline. A daily background full sync also runs automatically as a safety net.
The state mirror
The mirror is Syncfaro's memory of what Channex already knows. The Clear state mirror button erases that memory, so the next full sync resends absolutely everything.
Other maintenance buttons
| Button | What it does |
|---|---|
| Process queue | Sends anything waiting in the outbox immediately (updates are normally grouped for a few seconds to batch related changes). |
| Probe Channex | Reads the property from Channex and lists rooms/rate plans, confirms credentials and mapping targets. |
| Pull bookings | Fetches pending booking revisions from Channex on demand (they also arrive automatically). |
| Snapshot | A one-page health check of the current configuration. |
10. Receiving bookings
Bookings made on any connected channel (Booking.com, Airbnb, …) travel through Channex to your site:
- New booking: created in MotoPress as a native booking, room assigned, marked with its channel source. Availability updates automatically and is pushed back out to all other channels.
- Modification: the existing MotoPress booking is updated in place, never duplicated.
- Cancellation: the booking is cancelled in MotoPress and the freed dates go back on sale everywhere.
Each processed revision is acknowledged back to Channex, so nothing is delivered twice. You can see every received booking in the Activity Log, with its Channex booking ID.
What Syncfaro does with each channel booking
- Payment recorded as complete. The guest already paid the channel, so Syncfaro registers a completed payment on the MotoPress booking for the full amount, labelled with the channel name. Your site's own deposit rules (for example "50% deposit" on direct bookings) are untouched and keep applying to direct bookings only. Without this, MotoPress would show channel bookings as "balance due".
- Admin notified by email. Because channel bookings arrive already confirmed, MotoPress's own "new booking" emails would not fire. Syncfaro triggers the admin notification itself, so you get an email for every channel booking just like for direct ones. Each booking is notified once (look for
admin_notifiedin the Activity Log). - Channel source and totals kept. The booking carries the channel name, the channel's own booking ID and the amounts, so you can reconcile with the extranet.
11. Troubleshooting
Prices arrive wrong by a factor of 100
Channex expects amounts in minor units (cents): 333.00 travels as 33300. Syncfaro converts automatically, if a value looks wrong, check the original price in MotoPress uses a dot as decimal separator (456.23, not 456,23).
Values for next year appear that you never set
MotoPress seasons repeat annually by default. A season for 15 Nov 2026 quietly applies to 15 Nov 2027 too. Edit the season and disable the annual recurrence if you want it to apply to a single year.
A change didn't sync
- Check the Activity Log: is there an event for your change? If it says "nothing changed since last send", the value on Channex is already correct (the mirror is doing its job).
- If the item is queued, click Process queue.
- To force a resend of a value that's already on Channex: change it to something else, save, change it back, save. The mirror detects both edits.
Availability range looks one day short
A booking from the 10th to the 16th occupies the nights of the 10th through the 15th, checkout day is free and stays on sale. This is standard hospitality behaviour, not a sync error.
Min-stay updates rejected by Channex
Confirm the Channex property's Min Stay Type is set to arrival (see section 3).
A channel booking arrived but I got no email
Check the Activity Log for the booking: an admin_notified line means Syncfaro triggered the email, so the problem is your site's outgoing mail (test it with your SMTP plugin's "send test email"). If the line is missing, make sure you run the latest Syncfaro version. As a safety net you can also enable Channex's own notification email on the channel.
The webhook shows as disabled in Channex
Some hosting firewalls block Channex's servers, and Channex disables a webhook after repeated failures. Syncfaro checks the webhook on every scheduled run and re-enables it automatically, and bookings are also pulled from the feed on a schedule, so nothing is lost. If it keeps happening, ask your host to allow Channex's IP addresses (listed in the Channex documentation) through the firewall.
Booking.com channel shows "Undefined Error" when created
Order matters. In the Booking.com extranet, first accept Channex as your connectivity provider (Account → Connectivity provider, search "Channex" and accept the XML connection). Only then create the Booking.com channel in Channex. Creating the channel first produces this error.
Prices appear as per-person on Expedia
In Expedia's rate plan settings, "Occupants included" must equal your full capacity. If it is left at 1, Expedia treats your price as a per-person price.
Starting over cleanly
Clear state mirror → Full sync (500 days). This rebuilds Channex from the ground truth of your MotoPress data and resets the mirror. Remember the golden rule: full sync first, price edits after.
12. FAQ
Does Syncfaro replace my MotoPress iCal connections?
Yes, and you should remove them for channels managed through Channex, or you'll have two systems fighting over the same calendars. Syncfaro syncs prices and restrictions as well as availability, which iCal cannot do.
Which channels can I reach?
Every channel Channex supports: Booking.com, Airbnb, Expedia, VRBO and dozens more. Channel activation and mapping on the OTA side is done in your Channex dashboard.
Can I sync only some of my accommodation types?
Yes. Only mapped rooms and rates sync; leave the rest unmapped.
What happens if my site is offline for a while?
The daily full sync realigns everything as soon as the site is back. Pending booking revisions are pulled and acknowledged on the next cycle, nothing is lost.
Does Syncfaro sync long-stay discounts (weekly, monthly)?
No, and no channel manager can: Channex does not expose length-of-stay promotions through its API, and on Airbnb they conflict with per-rate-plan pricing. Configure them in two places: on your site, MotoPress lets you set a different nightly price from N nights within each season's price (the "+" next to Nights in the rate's season prices); on each channel, use its native weekly/monthly discount (Booking.com extranet, Airbnb listing discounts). Syncfaro sends the base nightly price; each side applies its own discount.
Can I charge a cleaning fee?
Yes, but it is not synchronised, because fees are not part of the availability/rates/restrictions data a channel manager carries. Set it on your site (MotoPress Services, as a mandatory fixed amount per booking) and separately on each channel (Booking.com extranet charges, Airbnb listing fees, VRBO fees). The same applies to any extra guest fee, taxes and similar add-ons.
Airbnb only lets me choose a refundable cancellation policy. Can I be non-refundable there?
Not entirely. Airbnb always requires a refundable base policy (Flexible, Moderate, Firm, Strict…) and offers "non-refundable" only as an additional option with a 10% discount. To minimise cancellations, pick the strictest base policy. The policy is set in Channex: open the Airbnb channel → Listing → the listing's Actions → Booking settings → Cancellation Policy Category. Booking.com and Expedia, by contrast, allow a single non-refundable rate.
My channel prices should be higher than my website (to cover commission). How?
Set a markup per channel in Channex (Channel Settings → Derived Rates → "Increase by percent", typically +15% on Booking.com/Expedia and +5–10% on Airbnb). Apply the markup before mapping the channel's rate plans, and re-check it after activating the channel or completing an OAuth connection, as those steps can reset it. Syncfaro always sends your base site prices; Channex adds the markup.
Prices must use a dot, not a comma
MotoPress only accepts a dot as decimal separator (456.23). A comma (456,23) is rejected by the MotoPress field itself and never reaches Syncfaro.
Where do I get support?
Through your account at syncfaro.com. Include the relevant lines of your Activity Log, they usually contain the whole story.