OCTO Channel Distribution
Distribute your activities to OTA resellers through the OCTO open standard — live availability, instant bookings, one integration.
The OCTO Channel Distribution plugin connects your activities to OTA resellers — marketplaces, travel agents, and channel managers — through OCTO, the open connectivity standard for tours, activities, and attractions.
Instead of a custom integration per sales channel, you connect once: any OCTO-compliant reseller can list your activities, see your live availability, and create bookings that block your inventory instantly. Their bookings land in your dashboard like any other booking.
This is a feature plugin — there are no credentials for you to enter. You create the credentials and hand them to your resellers.
This page covers setting up resellers from the dashboard. If you're the developer on the reseller side integrating against the API, see the OCTO API reference.
Setup
- Open Plugins → Browse Plugins and click Install on OCTO Channel Distribution.
- On the setup page, add a reseller for each distribution partner you have an agreement with.
- Issue an API token for the reseller and share it with them over a secure channel — it is shown once and cannot be retrieved again.
- Optionally link commercial terms (see below).
- Click Enable. Reseller access only works while the plugin is enabled — disabling it cuts every reseller off immediately.
Resellers and tokens
A reseller is one distribution partner — "GetYourGuide", "ChartierCaptain", your local tourism board. Each reseller holds its own API tokens, so ending a relationship is one click and never affects the others.
Each token:
- starts with
rpat_and is shown once at creation — only a hash is stored. If it's lost, revoke it and issue a new one. - is scoped to the location you issue it from. A reseller selling two of your locations gets one token per location.
- carries scopes you choose:
octo:read— list your products and check live availability.octo:book— create, confirm, and cancel bookings.
Most resellers need both. A pure content/availability aggregator only needs octo:read.
Pausing and revoking
- Pause a reseller to stop all of its tokens working at once — access stops on the next request. Resume restores it.
- Revoke a single token permanently (for example, when rotating credentials). Issue the new token first, let the reseller switch, then revoke the old one.
- Disabling the plugin stops every reseller at this location, immediately.
Commercial terms
If you have revenue-share, markup, or fee arrangements with a reseller, create an entry for them under Location Settings → Approved OTAs and pick it in the reseller's Commercial terms dropdown on the plugin page.
Every booking that reseller creates then carries those terms automatically — the rates are snapshotted onto the booking at creation, so later changes to the terms never rewrite history. With no terms linked, the reseller books at your standard prices.
Resellers that opt into OCTO's pricing capability also see prices through the API — always their prices: your list rates with their linked markup already applied, so what they display to travelers matches what their bookings will cost.
How reseller bookings behave
- What they can book: your published, scheduled activities (fixed-time or interval slots). Per-person activities expose your demographics — Adult, Child, and so on — at their per-demographic prices; flat-priced activities sell as a single guest type. Dynamic-duration rentals and multi-day bookings are not offered over OCTO.
- Holds: a reseller first reserves a departure, which creates a pending booking that blocks your inventory exactly like any pending booking — your own booking page and other resellers immediately see the slot as taken. If the reseller doesn't confirm within the hold window (30 minutes by default, they can request 5 minutes to 24 hours), the hold expires automatically and the inventory frees itself.
- Confirmation: on confirm, the booking becomes a normal confirmed booking with the traveler's contact details, and your usual booking-created workflows, webhooks, and notifications fire.
- Payment: the reseller collects payment from the traveler. Resytech records it on the booking as an OTA payment, so the booking shows as paid and your balance and payment reports stay accurate. Settlement with the reseller happens per your commercial agreement.
- Cancellations and changes: when a confirmed reseller booking is cancelled — by the reseller or by you — the recorded OTA payment is automatically reversed with a matching refund entry, since the reseller does not remit for cancelled bookings; your revenue reports and reseller reconciliation stay accurate without any manual correction. The traveler's refund is the reseller's responsibility, and no money moves through your Stripe account. If a reseller changes a booking to a cheaper party or departure, the difference is reversed the same way; a more expensive change records an additional OTA payment.
- Where you see them: in your normal bookings views, stamped with the reseller's booking source — there is no separate OCTO inbox to watch.
What resellers see about your activities
Resellers that opt into OCTO's content capability read your activity images, description and tagline, the duration range, your activity agreements, your cancellation window, and your arrival time and "what to bring" notes. It is the same material your own booking page shows travelers — keep it current and the reseller's listing stays current with it.
Agreements travel as terms text for the reseller to present at their own checkout. OCTO has no concept of a signed-off checkbox coming back, so a reseller booking never carries a per-agreement acceptance record — the same as today, since we don't store one for website bookings either. An activity with required agreements is still fully sellable over OCTO.
Custom fields travel as questions. Resellers that opt into the questions capability see your activity's custom fields as booking questions, collect the answers in their own checkout, and the answers land on the booking exactly as if the traveler had filled them in on your booking page — a required custom field must be answered before the reseller can reserve. Text-shaped fields (text, date, time, email, phone, URL, address, select, multi-select) all travel; signature and ID-upload fields cannot — there is no way to collect those over OCTO, so an activity with a required signature or ID-upload field stays hidden from reseller catalogs rather than delivering you a booking with the answer blank. An activity with required text-shaped fields is also hidden from resellers that have not opted into questions. Optional custom fields never affect listing. Select and multi-select questions travel as textarea, but answers must match the operator's option labels (case-insensitively); multi-select joins distinct labels with commas. Rejected answers name every allowed label. Existing answers remain unchanged when options are edited and continue to satisfy questions during unrelated booking changes.
Permissions
Managing resellers and tokens requires the Plugins permission, same as every plugin. Administrators always have it.
