Tourplan Rate Sync
For: Suppliers Where to find it: Sidebar → Integrations → Tourplan
Tourplan Rate Sync is a paid add-on that pushes your confirmed Tourium rates straight into your Tourplan system, so you don't have to re-key them. You keep extracting and confirming rates in Tourium exactly as you do today; once a rate is confirmed, one click sends it to Tourplan as a rate update. It's aimed at suppliers who already run Tourplan as their reservation back-end.
Before you start
You need three things from Tourplan (not from Tourium). If you already use Tourplan's productConnect for another integration, your Tourplan administrator will have these on file; otherwise contact Tourplan support to have productConnect enabled:
- Endpoint URL — the web address of your Tourplan productConnect installation. It's unique to your Tourplan system, so there's no general link to look up — Tourplan provides it.
- Username and password — a Tourplan login that has been granted productConnect access. A supplier-level login is what you want; it's automatically limited to your own options and rates.
- (Optional) Supplier code(s) — your Tourplan supplier code. If your account holds several, you can enter them all, separated by commas. Tourium fetches the options (room types) belonging to these codes so you can pick them from a list when mapping.
- (Optional) Agent code — the Tourplan agent that carries the price codes your rates load against. Tourium reads that agent's price codes so you can pick them from a list instead of typing them. Ask Tourplan which agent code to use; you can enter several.
Enabling productConnect and issuing the login go together. A URL without an enabled login won't connect, so ask Tourplan for both at the same time.
This module is supplier-only — it won't appear for agent accounts.
Enable the module
- Go to Organisation → Billing.
- Find Tourplan Rate Sync in the add-on modules card and switch it on. There is no plan to buy first — if this is your first paid module, you'll be taken through a short checkout that sets up billing for it.
- Open Integrations → Tourplan from the sidebar.
Connect your Tourplan account
- On the Tourplan page, click Configure connection.
- Enter your endpoint URL, user, password, and optionally your supplier code (one or more, separated by commas) and agent code.
- Click Save and test connection. Tourium saves the details and checks them against your Tourplan system straight away:
- With an agent code, you'll see "Connected. N price codes available in the picker below."
- Without one, you'll see "Connected. Add an agent code above to fetch the price codes for the picker below." Everything still works — you just type price codes by hand.
On the Tourplan page, a green badge means Tourium reached your Tourplan system ("Connected", or "Connected as supplier {code}" if you set a supplier code — with several codes it shows how many, e.g. "3 supplier codes" — plus the last-tested time); a red banner shows the error returned so you can correct the details. Use Test connection on the page to re-check at any time.
Your credentials are stored encrypted and are never shown back on the page — only whether a connection is configured.
Fetch your option list
Click Fetch option list to pull the options for your supplier codes from Tourplan (the button reads Refresh option list after the first fetch; the list also refreshes automatically overnight). A summary, Options fetched from Tourplan, shows per supplier code how many options were Fetched and how many are Offered when mapping, plus the price codes read from your agent code. Options Tourplan has deleted and products that aren't accommodation are fetched but not offered. Refresh after you change something in Tourplan to see it in Tourium immediately.
Once a list has been fetched, the connection banner shows how many options are cached and when the list was last brought in — for example "30 options cached · Option list updated 10 Sep 2026, 09:30". The count is the options offered when mapping, so it can be smaller than the number fetched. If the time looks old, click Refresh option list.
Set your sync defaults
You must save your sync defaults before you can map or sync anything — until then a warning appears ("Set your sync defaults (price code) to start mapping and syncing rates") and the Map/Sync buttons are disabled.
- Price code — the 2-letter Tourplan price code the rates are written to, for example ST (wholesale) or EB (early booker). Each price code is loaded as a separate rate. If you added an agent code to the connection, pick the code from the list; otherwise type it. It must already exist in Tourplan. If you type a code that isn't among the fetched price codes, the field says "Not in the fetched list - it will be sent as typed." That's a heads-up, not an error: the code is still saved and sent, and Tourplan rejects it at sync time if it really doesn't exist.
- Buy / sell currency — the currency your costs and selling prices are held in (for example ZAR / USD). A rate that already carries its own currency overrides these.
- Sale period — the booking window (when the rate can be sold, not the travel dates).
- Stay/Pay calculation — how Tourplan works out the free night(s) on a Stay/Pay offer: Cheapest day free (default), Last day free, First day free, Repeat, last day free or Repeat, first day free. Leave it on the default unless a supplier contract says otherwise.
Map your room types
Tourplan identifies each bookable option by a 17-character OptionCode — and each option is one room type on one meal basis. So the same room sold on B&B and on Full Board maps to two different OptionCodes. You map each room type once:
- Rates are grouped by property · room type · meal plan. On an unmapped group, click Map room type.
- Choose the Tourplan OptionCode. Start typing a code or the room's name and pick from the options you fetched — each shows its description and code. You can still type a code by hand (for example one that isn't in the fetched list yet). Options marked with a warning icon are "Catalogued for reference. Rates cannot be loaded to this option type." — pick a different one.
- Optionally set a Price code for this room, to load it under a different code than your sync default (leave it blank to use the default). Early booker rates keep their own code.
- Click Save mapping. Tourium calls Tourplan to confirm the code before saving, so a wrong code is caught immediately. Every rate in that group is now ready to sync.
Use Edit mapping or Remove mapping on a group to change it later.
Rooms priced by stay length
If a room's rates are priced by length of stay (for example 1–3 nights and 4+ nights), the mapping dialog asks How is this room mapped?:
- All stay lengths (one option) — one Tourplan option covers the whole room; each stay length loads as a separate rate set under that one code.
- A code per stay length — for a Lodge Combination, where each stay length is its own Tourplan option. Enter an OptionCode (and optionally a price code) for each stay length.
A group where only some stay lengths have a code shows "N rates not mapped" — map the rest before those rates can sync.
Set a price code for many rooms at once
Filter the list down to one contract, then use the Price code box above the list to pick a code and click Apply to N options. It applies to every mapped option in view (unmapped ones are skipped, and early booker rates keep their own code). Clear removes the code so those options fall back to your sync default.
When a mapping needs review
If Tourplan deletes an option, stops returning it, or reuses its code for a different room or meal basis, an alert appears at the top of the page: "N mappings need review". Each entry shows the OptionCode and the reason — "Tourplan has deleted this option", "Tourplan no longer returns this option" or "This option now describes something else" (with the old and new description side by side). Open Edit mapping on the affected room and choose the right option.
Route compulsory levies to Extra slots
If the Tourplan option has Extra slots, the mapping dialog shows a Compulsory levy routing section. Map each fixed compulsory charge on the rate (park fees, conservation levies — the name must match the rate's) to one of the option's Ex1–Ex5 slots so it loads as a Tourplan Extra, and tick Exempt for tax-exempt levies. Each slot holds one charge — if you use the same slot twice, the dialog warns "A Tourplan slot holds one charge…" and asks you to give each charge its own slot. Percentage taxes such as VAT stay in the rate's tax list and don't need routing. Click Save routing when done.
Sync rates
- Make sure the rate is confirmed in Tourium (see Reviewing and editing rates).
- Expand a room-type group to see its rates — each row shows the season, room/occupancy (e.g. "2 adults, 1 child"), price, and sync status.
- Click Sync on a rate — or Sync all on a group, or the Sync N rates button to push everything in your current filtered view.
- A preview opens first: What we'll send to Tourplan. It shows the exact figures and Extras that will be sent and, where Tourplan already holds rates for those dates, a Changes to Tourplan comparison ("In Tourplan now" vs "After sync"). If two rooms would overwrite each other under the same option, price code and dates, it warns you before anything is sent. Click Edit to go back and fix the rate, or Accept and sync.
- Tourium validates the option, pushes the rate, then reads it back to confirm it landed.
While rates are pushing, a banner shows how many are in flight ("{n} rates are syncing…") with a View link that filters the list to them. Statuses update live — no refresh needed.
Reading the status column
Each rate shows where it stands, and each group header shows a per-status summary:
- Unmapped — the room type has no Tourplan OptionCode yet. Map it before you can sync.
- Pending — mapped but not yet pushed.
- Syncing — currently being pushed (retries automatically a few times on transient errors).
- Synced — successfully sent to Tourplan, with the time of the last sync.
- Changed since sync — the rate was edited in Tourium after it was last sent, so Tourplan still holds the old figures. Sync it again.
- Error — the last attempt failed. Hover the badge (or click View error) for the reason; failures also appear in a dismissable alerts strip at the top.
Use the search box (search by property, room type, or meal plan) and the filter chips — Sync status, Property, Meal plan, and Booking type (Early booker / Standard) — to narrow a long list. Your filters are remembered between visits.
What gets pushed
The sync carries the full rate structure you captured in Tourium's rate editor, including:
- Meal plan — part of the option mapping (see above). Rates without one show "No meal plan".
- Additional adult price — used to build full triple and quad room rates from the per-adult charge for a 3rd/4th guest sharing.
- Day bands — a rate priced differently midweek (Sun–Thu) vs weekend (Fri–Sat) loads as two entries.
- Stay/Pay offers — free-night deals (e.g. Stay 4, Pay 3), calculated the way your Stay/Pay calculation default says. If the offer has its own validity window, the season is split into date ranges so the free-night deal only loads inside that window and the rest of the season loads without it.
- Early-booker rates — advance-purchase rates load under their own price code, filterable via the Booking type filter.
- Compulsory levies — loaded as Tourplan Extras via the slot routing on the mapping. A compulsory Extra belongs to the whole room, so one stated on only one stay-length tier of the rate sheet still loads on every tier of that room.
Troubleshooting
- Save and test connection fails — double-check the endpoint URL and that your login has productConnect access. A login without that access will be rejected even if the URL is correct.
- Map/Sync buttons are disabled — save your sync defaults (price code) first.
- An OptionCode won't save — it must be exactly 17 characters and exist in your Tourplan system; Tourium checks it before saving. The dialog shows Tourplan's response if the option can't be found.
- The option picker is empty — click Fetch option list on the Tourplan page, and check your supplier code(s) on the connection. You can always type a code by hand.
- No price codes to pick from — add an agent code to the connection and save and test it. Until then, type the price code.
- "Not in the fetched list" under a price code — the code isn't one your agent code carries. Check it for typos; if it's right (for example a code on a different agent), you can leave it — it's sent as typed.
- A rate shows Error after syncing — hover the badge for the message. Common causes are a price code that doesn't exist in Tourplan or an option whose rates are locked. Fix in Tourplan, then sync again.
Good to know
- One sync sends one rate for one date range. Rates with multiple seasons are pushed per season.
- The current release covers accommodation property rates. Service and activity rates aren't synced yet.
- Turning the module off in Billing stops syncing and removes it from your bill at the end of the period; your Tourplan credentials and mappings are kept in case you re-enable it.