Platform

B2B + B2C Combo Travel Platform — Run Agents and Customers From One Engine (2026 Guide)

Trip Designer Team
14 June 2026
20 views
Featured Image
Article

Why B2B + B2C together?

A traditional travel operator built two websites: one for their B2B agent network and one for their public B2C customers. That approach doubles the ops load — two logins, two ledgers, two payment integrations, two ways to break. Trip Designer collapses both surfaces onto the same tenant so you sign one contract, pay one bill, and get every module wired to both audiences at once.

The three tenant deployment types

  • B2B only — Agent-facing panel: search-panel, dashboard, bookings, wallet, reports. Public browse is blocked; every visitor is bounced to /user/login.
  • B2C only — Customer-facing site: hero search pad, tour packages, visa listings, blog. Agent surfaces (search-panel, dashboard, back-office) are hidden.
  • Hybrid — Both at once. Guests browse the storefront, click Book, and are punted to /user/login?next=…. Agents log in from the same header and land straight in search-panel.

You pick the type when the tenant is created and can flip it later without a migration. The routing layer (EnforceTenantDeploymentType) gates paths per type so an admin flip immediately rewires which URLs a visitor can see.

How the split actually works

Everything on Trip Designer runs off a single Laravel install with a BelongsToTenant global scope. Every model — bookings, invoices, blogs, tour packages, hajj orders, ledger entries — filters automatically by the current tenant id. On a subdomain the tenant is resolved at the middleware layer and every downstream query sees only that tenant's rows. On the main install (tripdesigner.net) queries scope to tenant_id IS NULL, so the platform owner's data never leaks into a tenant's dashboard.

Feature gating — every module can be turned on or off

Each tenant carries a TenantFeature row set for every module in the catalogue: air ticketing, hotel booking, tour packages, visa, hajj & umrah, work permit, education, insurance, services, wallet, ledger, reports, invoices, refunds, and integrations (GDS, BDFare, TripFindy, bKash, Nagad, SSLCommerz, WhatsApp bot, Facebook bot, Academy).

Turn a feature on → the sidebar tab, search-panel tab, my-bookings entry and report card unlock together. Turn it off → the entire surface for that feature disappears without leaving broken links. B2C tenants can offer a Tour + Visa storefront and hide flights; B2B tenants can gate an agent to Air + Insurance only. Same platform, same code, per-tenant surface.

Branding — the palette follows the tenant, not the platform

The tenant's branding record carries display name, tagline, primary colour, accent colour, logo URL, favicon URL, contact phone/WhatsApp/email/address and social links. Every page pipes that through CSS custom properties (--tp, --tpd, --tpl, --ta) so the same blade template renders in a tenant's own colours — no hardcoded blues, no fork-per-brand.

Logo-first rule: when a logo is set, the header, footer and mobile drawer show only the mark. When no logo is uploaded, the brand name renders as text instead. The rule lives in the layout so it stays consistent across auth pages, storefront pages, and the mobile menu.

Guest booking flow (B2C → login)

On a hybrid or B2C tenant, guests can search inventory openly — flight fares, hotel rates, tour prices. The moment they hit Book, we intercept with /user/login?next=… so post-login they land back on the exact URL they were on. New customers can register from the same modal; the same 6-digit OTP verify flow that agents use handles customer email confirmation too. After verification a customer lands on the tenant's home page; agents continue to search-panel. Same middleware, different landing based on deployment_type.

Shared inventory, separated audiences

Because both audiences share the same tenant scope, a package the operator adds appears in the agent search-panel AND on the public storefront at the same time. Prices, availability, refund rules, seasonal offers — one source of truth. What differs is presentation: the agent panel shows commission columns, PNR fields and internal notes; the storefront shows a marketing card, review count and a Book Now CTA.

Payment, wallet, refunds

Wallet balance, ledger entries, refund workflows and reconciliation dashboards are agent-side (B2B). Guest customers pay directly through bKash, Nagad or SSLCommerz at checkout — no wallet exposure. Refunds route back through the same gateway; the ledger booking stays inside the agent panel where finance can see the whole picture.

Guardrails that stop one surface from breaking the other

  • Every tenant-facing branch is guarded with if (app()->bound('tenant')). The main install never even enters those code paths.
  • Migrations always land nullable columns with a safe default, so a schema change never regresses production admin behaviour.
  • Views split cleanly: main install uses Web.*, tenants use SaaS.tenant.*. A tenant redesign literally cannot touch the main site's markup.
  • SMTP, social credentials and payment keys stored on the main install are read via a scope; a tenant SMTP setup writes only to that tenant's row.

When to pick which type

  • New travel agency serving only its agent network → start B2B. You skip the public storefront, save yourself the SEO grind and go live in a week.
  • Boutique tour operator selling directly to travellers → start B2C. You skip the agent panel until you actually onboard agents.
  • Operator running both agents AND a customer storefront (most established brands) → hybrid. Both surfaces from day one, one platform, one bill, one team to train.

Flip between types later — no re-platform, no data migration. That flexibility is the whole point of the combo model.

The takeaway

You do not need to run two travel businesses to serve two audiences. Trip Designer's combo tenant model gives you one engine, three deployment shapes, per-feature access control, and a branding layer that lets every tenant keep its own identity. Pick a shape, wire the modules you need, and you are live in a day — with the freedom to open the other surface the moment your business is ready for it.

HPA AYAT TOUR AND TRAVELS
HPA AYAT TOUR AND TRAVELS
Hospitality, Perfection & Assurance