<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: S. Aoun .Raza.N</title>
    <description>The latest articles on DEV Community by S. Aoun .Raza.N (@s_aounrazan_5c1f838fe).</description>
    <link>https://dev.to/s_aounrazan_5c1f838fe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3998342%2F4b53d0af-0166-4cb3-be1f-1cb1d833d7d9.jpg</url>
      <title>DEV Community: S. Aoun .Raza.N</title>
      <link>https://dev.to/s_aounrazan_5c1f838fe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/s_aounrazan_5c1f838fe"/>
    <language>en</language>
    <item>
      <title>How to Add FareHarbor Booking to Your WordPress Site (Complete Guide)</title>
      <dc:creator>S. Aoun .Raza.N</dc:creator>
      <pubDate>Tue, 23 Jun 2026 08:46:55 +0000</pubDate>
      <link>https://dev.to/s_aounrazan_5c1f838fe/how-to-add-fareharbor-booking-to-your-wordpress-site-complete-guide-2mk1</link>
      <guid>https://dev.to/s_aounrazan_5c1f838fe/how-to-add-fareharbor-booking-to-your-wordpress-site-complete-guide-2mk1</guid>
      <description>&lt;p&gt;If you've ever tried to add FareHarbor booking to a WordPress site, you've probably noticed something: FareHarbor's own documentation is sparse, and most WordPress tutorials don't cover it at all.&lt;br&gt;
I ran into this while building a booking site for an Aruba tourism company managing three separate partner brands under one WordPress site. After figuring out the hard parts — multi-partner widget setup, Elementor integration, mobile performance — I'm writing down everything I wish I'd found in one place.&lt;br&gt;
This is a complete walkthrough. By the end your visitors will browse tours, check live availability, and complete bookings without ever leaving your WordPress site.&lt;/p&gt;

&lt;p&gt;What You Need Before Starting&lt;/p&gt;

&lt;p&gt;Active FareHarbor account with at least one bookable item&lt;br&gt;
Your FareHarbor shortname — find it at Dashboard → Settings → Company Info&lt;br&gt;
WordPress admin access&lt;br&gt;
Items set to Active status in FareHarbor (draft items won't show in widgets)&lt;br&gt;
Active SSL (HTTPS) on your WordPress site — FareHarbor widgets require it&lt;/p&gt;

&lt;p&gt;Your shortname is a short lowercase word like islandtours or toptie. You'll use it in every embed URL. It's case sensitive — copy it exactly.&lt;/p&gt;

&lt;p&gt;Method 1 — Embed a FareHarbor Widget with Custom HTML&lt;br&gt;
The fastest way to get FareHarbor live on WordPress.&lt;br&gt;
Step 1: Generate Your Embed Code&lt;/p&gt;

&lt;p&gt;Log in to FareHarbor Dashboard&lt;br&gt;
Go to Widgets in the left sidebar&lt;br&gt;
Click Create New Widget&lt;br&gt;
Choose widget type: Book Button, Calendar, or Flow&lt;br&gt;
Select which tours to include&lt;br&gt;
Customize button color to match your brand&lt;br&gt;
Click Generate Code → copy the snippet&lt;/p&gt;

&lt;p&gt;It looks like this:&lt;br&gt;
html&lt;/p&gt;

&lt;p&gt;&lt;a&gt;
  href="https://fareharbor.com/embeds/book/yourshortname/items/12345/?full-items=yes&amp;amp;u=yes"&lt;br&gt;
  class="fh-button"&amp;gt;&lt;br&gt;
  Book Now&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
Step 2: Paste Into WordPress&lt;/p&gt;

&lt;p&gt;Open your page in the WordPress editor (Gutenberg)&lt;br&gt;
Click + → search for Custom HTML → add it&lt;br&gt;
Paste your FareHarbor embed code inside&lt;br&gt;
Preview to confirm the widget loads&lt;br&gt;
Publish&lt;/p&gt;

&lt;p&gt;Pro tip: Load the FareHarbor script tag once in your site header using WPCode rather than once per widget. This stops it loading multiple times across pages and keeps your site fast.&lt;/p&gt;

&lt;p&gt;Method 2 — Elementor Integration (No Code)&lt;br&gt;
If your site runs Elementor, you don't need to touch raw code at all.&lt;br&gt;
Using the HTML Widget&lt;/p&gt;

&lt;p&gt;Open your page in Elementor&lt;br&gt;
Search HTML widget in the left panel&lt;br&gt;
Drag it into your section&lt;br&gt;
Paste your FareHarbor embed code in the HTML field&lt;br&gt;
Click Update — live preview renders immediately&lt;/p&gt;

&lt;p&gt;Using Elementor's Button Widget&lt;br&gt;
Point any Elementor button directly at a FareHarbor booking URL:&lt;br&gt;
&lt;a href="https://fareharbor.com/embeds/book/yourshortname/items/all/?full-items=yes" rel="noopener noreferrer"&gt;https://fareharbor.com/embeds/book/yourshortname/items/all/?full-items=yes&lt;/a&gt;&lt;br&gt;
Once the FareHarbor script loads on the page, clicking this URL opens the booking flow in a modal overlay — customers complete the full booking without leaving your site. This matters a lot for conversion rates.&lt;/p&gt;

&lt;p&gt;Method 3 — Full Booking Page with All Tours (Flow Widget)&lt;br&gt;
This is the most powerful setup. Instead of a single button, you get a full page showing every tour with photos, descriptions, live availability, and individual booking buttons.&lt;br&gt;
FareHarbor calls this the Flow widget.&lt;br&gt;
html&amp;lt;!-- Load FareHarbor script once in header, then: --&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;
  href="https://fareharbor.com/embeds/book/yourshortname/items/all/?full-items=yes"&lt;br&gt;
  class="fh-book-flow"&amp;gt;&lt;br&gt;
  Browse All Tours&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
Setup steps:&lt;/p&gt;

&lt;p&gt;FareHarbor Dashboard → Widgets → Create New Widget&lt;br&gt;
Select Flow as widget type&lt;br&gt;
Choose All Items or specific tours&lt;br&gt;
Set grid or list display, number of columns&lt;br&gt;
Copy embed code&lt;br&gt;
Create a new WordPress page: "Book a Tour" or "Experiences"&lt;br&gt;
Add Custom HTML block (Gutenberg) or HTML widget (Elementor)&lt;br&gt;
Paste Flow embed code&lt;br&gt;
Publish&lt;/p&gt;

&lt;p&gt;The page pulls live availability directly from FareHarbor's servers. No manual updates needed when tour schedules change.&lt;/p&gt;

&lt;p&gt;Adding a Book Now Button to Your Nav Menu&lt;br&gt;
One of the highest-converting changes you can make — a colored button in your navigation menu.&lt;br&gt;
In WordPress:&lt;/p&gt;

&lt;p&gt;Dashboard → Appearance → Menus&lt;br&gt;
Under Links → add URL (your booking page) + text "Book Now"&lt;br&gt;
Add to menu → drag to far right&lt;br&gt;
Expand item → add CSS class: fh-nav-button&lt;br&gt;
Save Menu&lt;/p&gt;

&lt;p&gt;Style it in Customizer → Additional CSS:&lt;br&gt;
css.fh-nav-button &amp;gt; a {&lt;br&gt;
  background-color: #0D9488;&lt;br&gt;
  color: #ffffff !important;&lt;br&gt;
  padding: 10px 20px;&lt;br&gt;
  border-radius: 6px;&lt;br&gt;
  font-weight: bold;&lt;br&gt;
  transition: background 0.3s ease;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.fh-nav-button &amp;gt; a:hover {&lt;br&gt;
  background-color: #0F766E;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Multi-Partner Setup (Advanced)&lt;br&gt;
This is the scenario I built for my Aruba client — one WordPress site, three separate FareHarbor partner accounts, all booking through one operator shortname.&lt;br&gt;
FareHarbor handles this through its Partner Network. Here's how it works:&lt;/p&gt;

&lt;p&gt;Your account = the operator account&lt;br&gt;
Each partner has their own FareHarbor account&lt;br&gt;
Partners grant your account booking permissions from their dashboard&lt;br&gt;
You use your operator shortname in all embeds — FareHarbor pulls partner inventory automatically&lt;/p&gt;

&lt;p&gt;Embed all items including partner inventory:&lt;br&gt;
html&lt;a href="https://fareharbor.com/embeds/book/yourshortname/items/all/?full-items=yes" rel="noopener noreferrer"&gt;&lt;br&gt;
  Book Now&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
Embed specific partner items only (use their item IDs):&lt;br&gt;
html&lt;a href="https://fareharbor.com/embeds/book/yourshortname/items/12345,67890/?full-items=yes" rel="noopener noreferrer"&gt;&lt;br&gt;
  Book Partner Tours&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
Page structure for multi-partner sites:&lt;br&gt;
├── Hero section (main CTA)&lt;br&gt;
├── Partner 1 section → Flow widget (filtered to Partner 1 items)&lt;br&gt;
├── Partner 2 section → Flow widget (filtered to Partner 2 items)&lt;br&gt;
└── Partner 3 section → Flow widget (filtered to Partner 3 items)&lt;/p&gt;

&lt;p&gt;Watch out: Every partner must approve your account inside their own FareHarbor dashboard before their items appear. This is outside your control — build this dependency into your project timeline. It's the most common bottleneck in multi-partner setups.&lt;/p&gt;

&lt;p&gt;Customizing Widget Appearance&lt;br&gt;
Button color: Set a custom hex in the FareHarbor Widget builder to match your brand.&lt;br&gt;
Custom CSS for Flow widget cards:&lt;br&gt;
css/* Rounded corners on tour cards */&lt;br&gt;
.fh-widget-item-card {&lt;br&gt;
  border-radius: 12px;&lt;br&gt;
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;/* Override button font */&lt;br&gt;
.fh-book-now-button {&lt;br&gt;
  font-family: inherit !important;&lt;br&gt;
  letter-spacing: 0.5px;&lt;br&gt;
}&lt;br&gt;
Lightbox vs redirect: FareHarbor opens in a lightbox by default. To force a full redirect instead, add ?flow=no to booking URLs. The lightbox almost always converts better — keep it unless you have a specific reason to change it.&lt;/p&gt;

&lt;p&gt;Pre-Launch Testing Checklist&lt;br&gt;
Before going live run through every one of these:&lt;/p&gt;

&lt;p&gt;Widget loads — no blank sections or console errors&lt;br&gt;
 All tours appear with correct photos and prices&lt;br&gt;
 Book Now opens the modal correctly&lt;br&gt;
 Available dates show accurately&lt;br&gt;
 Full test booking completes (use a real card, then cancel)&lt;br&gt;
 Confirmation email arrives&lt;br&gt;
 Tested on real iPhone in Safari (not just desktop Chrome)&lt;br&gt;
 Widget loads under 3 seconds on mobile connection&lt;/p&gt;

&lt;p&gt;iOS Safari warning: Payment flows inside embedded widgets have strict requirements on iOS Safari. Always test on a real iPhone before going live. If payments fail on iOS but work on desktop, check your SSL certificate is valid and no security plugin is blocking the FareHarbor domain.&lt;/p&gt;

&lt;p&gt;Common Errors and Fixes&lt;br&gt;
Widget loads but shows no items&lt;br&gt;
Cause: Items set to Draft or Hidden in FareHarbor&lt;br&gt;
Fix: FareHarbor Dashboard → Items → set status to Active&lt;br&gt;
Also check: shortname in embed URL is correct and lowercase&lt;br&gt;
Booking modal doesn't open on click&lt;br&gt;
Cause: FareHarbor script tag missing or loading after the button&lt;br&gt;
Fix: Add to site  via WPCode as a Header snippet:&lt;/p&gt;

&lt;p&gt;Widget visible on desktop, invisible on mobile&lt;br&gt;
Cause: Theme or Elementor hiding HTML blocks at mobile breakpoint&lt;br&gt;
Fix: Check widget visibility settings in Elementor → Responsive panel&lt;br&gt;
HTTPS mixed content error&lt;br&gt;
Cause: WordPress site still on HTTP&lt;br&gt;
Fix: Install free SSL via hosting panel&lt;br&gt;
     Update both URLs in Settings → General to https://&lt;br&gt;
Partner items not appearing&lt;br&gt;
Cause: Partner hasn't approved your account yet&lt;br&gt;
Fix: Ask partner to log in → FareHarbor Dashboard → Partners → approve your account&lt;/p&gt;

&lt;p&gt;SEO for FareHarbor Booking Pages&lt;br&gt;
FareHarbor widgets are JavaScript-rendered. Google may not fully index tour content inside them. Protect your rankings by:&lt;/p&gt;

&lt;p&gt;Writing a real H1 with your target keyword above the widget&lt;br&gt;
Adding 150–200 words of descriptive text before the Flow widget loads&lt;br&gt;
Writing individual tour descriptions as regular WordPress text below each widget&lt;br&gt;
Adding an FAQ block below the booking section&lt;/p&gt;

&lt;p&gt;FAQ Schema example (add via Yoast FAQ block):&lt;br&gt;
Q: How do I book a tour?&lt;/p&gt;

&lt;p&gt;A: Click Book Now on any tour, select your date and group size, and complete payment securely through FareHarbor.&lt;br&gt;
Q: Does booking online cost extra?&lt;/p&gt;

&lt;p&gt;A: No — online booking costs the same as any other channel and is usually the fastest way to secure your spot.&lt;br&gt;
Q: What payment methods are accepted?&lt;/p&gt;

&lt;p&gt;A: FareHarbor accepts all major credit and debit cards through its secure checkout.&lt;br&gt;
Q: Can I book tours from multiple partners at once?&lt;/p&gt;

&lt;p&gt;A: Each tour books individually through its own FareHarbor flow, even when multiple partner tours appear on the same page.&lt;/p&gt;

&lt;p&gt;Summary&lt;br&gt;
Here's the full picture in one place:&lt;br&gt;
MethodBest ForDifficultyCustom HTML blockQuick single button⭐ EasyElementor HTML widgetVisual control, no code⭐ EasyFlow widget pageFull tour catalog⭐⭐ MediumMulti-partner setupUmbrella operators⭐⭐⭐ Advanced&lt;br&gt;
Start with Method 1 to get something live fast. Move to the Flow widget page as your primary booking destination. Add the nav menu button for maximum conversion.&lt;br&gt;
If you're managing multiple partner brands — the multi-partner setup above is exactly what I built for a real Aruba tourism company. It works cleanly once partner approvals are in place.&lt;/p&gt;

&lt;p&gt;Built something with this guide? Drop a comment below — I'd love to see what you made.&lt;br&gt;
I'm Syed Aoun Raza — freelance WordPress, WooCommerce, and Flutter developer. Portfolio: &lt;a href="https://syedaounraza.online/" rel="noopener noreferrer"&gt;syedaounraza.online&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
