From plugin ZIP to flight search.

Set up the demonstration in minutes, then connect your own Duffel account when you are ready for current offers.

Know the boundary

Search here. Complete the booking in your established workflow.

TravelBookingWP 1.0 displays flight search and current offer details. It does not collect a traveller's card, create live Duffel orders, issue tickets, service a booking, or search hotels.

Before you start

The sample-data demonstration works without a Duffel account. Live places and flight offers require all of the following:

  • WordPress 6.0 or newer and PHP 7.4 or newer.
  • An active Starter or Business license.
  • Your own eligible Duffel account and API token.
  • HTTPS, a current site backup, and WordPress administrator access.

Your TravelBookingWP purchase does not include a Duffel account, airline accreditation, inventory access, or Duffel API charges. Confirm those directly with Duffel before promising live availability to customers.

Step 1

Install the plugin

Download the free sample-data demo, or use the plugin ZIP supplied with a paid license.

  1. Keep the downloaded plugin as a ZIP file.
  2. In WordPress, open Plugins → Add New Plugin → Upload Plugin.
  3. Select the ZIP, choose Install Now, then activate it.
  4. Open Travel Booking in the WordPress sidebar to begin setup.

Do not unzip the package before uploading it. If WordPress reports that the destination folder already exists, update the installed plugin or remove only the old TravelBookingWP copy after making a backup.

Step 2

Connect your Duffel account

  1. Activate the license supplied by Freemius.
  2. Create or retrieve a test-mode API token in your own Duffel account.
  3. In Travel Booking → Settings, choose Test mode and paste the token.
  4. Save, then run the connection check.
Start in test mode.

A test token lets you verify the integration without spending a Duffel balance or creating a live order. Never send an API token to support by email or include it in a screenshot.

Step 3

Publish the search

  1. Create or edit the WordPress page where search should appear.
  2. Add a Shortcode block containing [duffel_flight_search].
  3. Publish or preview the page.
  4. Run a one-way and round-trip search on desktop and mobile.

Use Travel Booking → Appearance for the supported visual controls. Business licenses can also remove the powered-by line and use the white-label controls. Add custom CSS only after confirming the default layout works with your theme.

Test safely before launch

Check the complete visitor path while the plugin and Duffel are in test mode:

  • Airport or city suggestions appear.
  • Dates, cabin, and passenger counts behave correctly.
  • Search results show carrier, time, stops, duration, and total price.
  • An offer can be refreshed before it is used.
  • The supported administrator-only test-order validation succeeds for an adult itinerary.

Test-order validation is an integration check for an administrator. It is not a customer checkout and does not make live ordering safe or available.

Move search to live data

  1. Confirm your Duffel account is eligible for the live flight content you intend to display.
  2. Complete your own commercial, privacy, support, and booking workflow checks.
  3. Replace the test token with your live token and choose Live search mode.
  4. Repeat the connection, route, offer-detail, mobile, and failure-state checks.

Only flight search moves to live data. Customer payment, live order creation, ticketing, changes, cancellations, and post-booking service remain outside TravelBookingWP 1.0.

Data and privacy

The Duffel API token is stored in the site's WordPress options and sent server-to-server when the plugin calls Duffel. Search criteria can include origin, destination, dates, cabin, and passenger types. Supported test-order validation also sends the test passenger information entered by the administrator.

Optional local search analytics are off by default. If enabled, search events can include route and date criteria, timestamps, and the visitor IP address in that site's WordPress database. The site owner controls retention and the disclosures shown to visitors.

Paid licensing, purchase delivery, renewals, and licensed updates are handled by Freemius. Read the full TravelBookingWP privacy policy, Duffel privacy policy, and Freemius privacy policy.

Licenses and updates

Starter covers one WordPress site. Business covers up to five sites and adds white-label controls and priority email support. An active subscription provides licensed updates and support for the subscription term.

Activate or deactivate a license from the Travel Booking license screen. Deactivate it on an old site before moving the activation to a replacement site. Back up WordPress before any update.

Troubleshooting

The connection check fails
Confirm Test or Live mode matches the token, paste the token again without extra spaces, and ask the host whether outbound HTTPS requests to Duffel are blocked.
Search shows sample results
Sample results are expected in the free demonstration. For live results, confirm the paid license is active, a Duffel token is saved, and search mode is not set to Demo.
No flights are returned
Try a common route and dates farther in the future. Then check the Duffel account's mode, access, and the WordPress error log without exposing the token.
The layout conflicts with the theme
Temporarily remove custom CSS, clear page and CDN caches, and test with the default appearance controls. Include the public page URL and a screenshot when contacting support.
The license will not activate
Confirm the key belongs to this product and that the plan has a free site activation. Deactivate an unused site in the Freemius customer portal before trying again.

Still stuck?

Send the useful context, not a secret.

Email the WordPress and PHP versions, the TravelBookingWP version, the step that failed, the exact non-secret error, and a screenshot. Never include a Duffel token, license key, customer payment information, or traveller identity document.

Email support