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.
Tip. Create the Channex property to mirror your MotoPress structure: one Channex room type per MotoPress accommodation type, one Channex rate plan per MotoPress rate. The mapping step then becomes a one-minute job.

2. Installation

  1. In WordPress, go to Plugins → Add New → Upload Plugin.
  2. Upload the Syncfaro .zip file and click Install Now.
  3. Click Activate. A new Syncfaro menu entry appears in your admin sidebar.
  4. Enter your licence key when prompted (you received it with your purchase). Your licence, plan and renewal date are then visible under Syncfaro → Account.
Before activating the licence, confirm that the WordPress administration email (Settings → General) is a valid address that actually receives mail. An invalid admin email is the most common cause of activation problems.

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:

  1. Paste your Channex API key.
  2. Select or paste the Property ID of your Channex property.
  3. 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.

Don't skip this. If the property is left on 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.

  1. For each MotoPress accommodation type, pick the matching Channex room type.
  2. For each MotoPress rate, pick the matching Channex rate plan.
  3. 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.

Naming doesn't need to match. Your MotoPress rate can be called "Non-Refundable" and map to a Channex rate plan called "Best Available Rate". The mapping is what counts, not the names.

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.

One step stays manual. Channex does not allow adding occupancy options to an existing rate plan, so Syncfaro creates a new one. Your channels (Booking.com, Airbnb, …) are still mapped to the old rate plan in Channex: open each channel's mapping in Channex and point it to the new "(OBP)" plan. Syncfaro reminds you of this in the success message and in the log. It is deliberately not automated, because remapping live channels is the one action that can disrupt sales in progress.

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.
Tip. After applying, run a booking simulation on each channel (same dates, 2 guests vs 3 guests) and compare totals with your site. Rounding may differ by a euro or two between channels; that is normal.

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

  1. Open the Min-stay per rate plan section of the Syncfaro page.
  2. Click + Add rule for each rule you need: choose the rate plan, the date range, and the minimum nights.
  3. 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.
Real-world example. Make the refundable rate bookable from 1 night, but require 3 nights on the non-refundable rate during high season: two rules, one save.

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.

The usual cause. The discount was decided in money, not in percent. Five euros off 100 is 5%; five euros off 80 is 6.25%. Same intention, different percentages, and no channel can express it. To send it, make every season's tier hold the same percentage. To keep the money-based discount, leave it: it stays a direct-booking advantage, because only your own site will apply it.

Which channels accept it

ChannelDiscounts through ChannexWhere to set them otherwise
AirbnbYes—
Booking.comNo (the endpoint answers HTTP 422)Booking.com extranet
VrboNo (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.

Included occupancy reads differently per channel. Airbnb's Guests included: 2 and Vrbo's per additional guest from 2 mean the same thing: two guests are included and the fee starts with the third. The wording differs, the behaviour does not.

Turning it on

  1. Open Long-stay discounts on the Syncfaro page and read the table of what was detected.
  2. Click Preview changes. Nothing is written; you get a line per channel saying what would happen.
  3. 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 MotoPressSyncfaro sends to Channex
Change a season priceThe 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 cancelledAvailability back up for those dates
A booking's dates are movedBoth ranges: the old dates freed, the new dates occupied
Edit Syncfaro min-stay rulesThe changed min-stay values, per rate plan
A booking arrives from a channelNothing 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.

Deltas only. Syncfaro keeps a local record of the last value sent for every date and rate plan (the state mirror) and transmits only what actually changed. This keeps you comfortably inside Channex rate limits, even on busy sites.

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.

Golden rule. After clearing the mirror, always run a full sync before editing prices. The mirror must be rebuilt from a complete baseline; editing prices in between can produce partial updates.

Other maintenance buttons

ButtonWhat it does
Process queueSends anything waiting in the outbox immediately (updates are normally grouped for a few seconds to batch related changes).
Probe ChannexReads the property from Channex and lists rooms/rate plans, confirms credentials and mapping targets.
Pull bookingsFetches pending booking revisions from Channex on demand (they also arrive automatically).
SnapshotA 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_notified in 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.
About Channex's own notification emails. Channex can also email you for each booking ("Send Booking Notification Email" on the channel). Since Syncfaro now notifies you from your own site, you may switch the Channex one off to avoid duplicates and keep the guest-facing branding yours. Keep it on if you prefer a second safety net.
Payments. Syncfaro does not carry card data. Guest payments follow each channel's own flow, or your site's gateway for direct bookings.
Guest emails from Booking.com are masked aliases (…@guest.booking.com) by Booking policy; they forward to the real guest.

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

  1. 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).
  2. If the item is queued, click Process queue.
  3. 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.