Services About Us Why Choose Us Our Team Development Workflow Technology Stack Case Studies Portfolio Blog Free Guides Estimate Project Contact Us
← All Case Studies

Tutti Vacation — Building a Custom Marketplace for Vacation Services

How we extended Sharetribe with a custom booking negotiation system to power a vacation services marketplace in Maui

Client: Tutti Vacation React.js Redux Express.js Node.js MongoDB Stripe PayPal Sharetribe Mapbox Google Maps
Tutti Vacation — Building a Custom Marketplace for Vacation Services
💼
Client
Tutti Vacation
🌎
Industry
Travel & Hospitality
Tech Stack
React.js, Redux, Express.js
🔗
Website

Overview

Tutti Vacation needed a marketplace platform where Maui vacationers could discover and book local services — from massages and surf lessons to private chefs and babysitters. The founders, experienced in the vacation rental industry, recognized that guests often spend their holiday time on chores like grocery shopping, laundry, and meal prep instead of enjoying their trip.

They chose the Sharetribe Web Template as the foundation but quickly ran into a limitation: Sharetribe's default booking flow does not support post-booking negotiation. Providers needed the ability to propose adjustments to bookings after acceptance — a critical requirement for a services marketplace where scope often changes after the initial reservation.

Our team was engaged to design and implement this custom negotiation feature along with the full payment flow for adjustment charges and refunds, while keeping everything seamlessly integrated with Sharetribe's existing architecture.

💡

The Challenge

The Sharetribe Web Template provides a solid marketplace foundation with React and Express.js, but several technical challenges surfaced as we planned the custom features:

Rigid Transaction Process


Sharetribe's default booking process follows a fixed state machine: booked, accepted, completed. There was no built-in mechanism for providers to propose changes after a booking was accepted. Adding new states to this machine required deep understanding of Sharetribe's transaction engine and careful integration to avoid breaking existing flows.

Payment Adjustments


When a booking adjustment is accepted, the system needs to handle the payment difference — either charge the customer an additional amount or process a partial refund. Stripe's standard payment flow needed custom handling for these post-authorization modifications, including edge cases like expired payment methods and insufficient funds.

Real-Time Notifications


Both customers and providers needed immediate notification when adjustments were proposed, accepted, or declined. The existing email notification system had to be extended with new templates, new triggers, and clear messaging that explained the financial impact of each change.

UI/UX Complexity


The adjustment flow required entirely new screens: a proposal form for providers, a review screen for customers showing original versus proposed bookings side-by-side, and clear status indicators throughout the transaction lifecycle. All of this had to feel like a natural extension of the existing Sharetribe interface.

Multi-Service Marketplace


Unlike a typical single-category marketplace, Tutti Vacation offers nine or more distinct service categories, each with unique booking requirements — from hourly surf lessons to multi-day equipment rentals to recurring concierge services. The listing architecture needed to accommodate this variety without creating separate flows for each category.

Our Solution

We implemented a comprehensive solution that extended the Sharetribe platform while preserving its core architecture and upgrade path.

Custom Transaction States


We added three new states to Sharetribe's booking transaction process:

  • adjustment-proposed — provider has submitted a modification request with new pricing and a reason for the change

  • adjustment-accepted — customer has reviewed and approved the change, triggering payment processing

  • adjustment-declined — customer has rejected the proposal, and the original booking continues unchanged


These states integrate cleanly with Sharetribe's existing state machine, preserving all default behaviors while enabling the new negotiation flow.

Booking Adjustment UI


For providers, we built an intuitive "Propose Adjustment" button that appears after booking acceptance. The form captures the new pricing, a reason for the change, and any modified service details. For customers, a dedicated review screen presents the original booking alongside the proposed changes with clear Accept and Decline buttons, plus a breakdown of the payment difference.

Stripe Payment Processing


We implemented bidirectional payment adjustment handling:

  • When the adjusted price is higher, we capture an additional payment from the customer's stored payment method using Stripe PaymentIntents

  • When the adjusted price is lower, we process an automatic partial refund to the customer's original payment method

  • All payment modifications are logged with a full audit trail for dispute resolution

Email Notification System


We extended the existing notification pipeline with new Handlebars email templates for each step:

  • Adjustment proposal notification sent to the customer with a direct link to review

  • Adjustment accepted confirmation sent to the provider

  • Adjustment declined notification sent to the provider with the customer's reasoning

  • Updated booking confirmation sent to both parties reflecting the final terms

Service Category Architecture


We designed a flexible listing structure that accommodates all nine service types with category-specific fields and booking parameters, while sharing common infrastructure for payments, reviews, messaging, and provider verification.

📈

Results & Impact

The Tutti Vacation marketplace launched successfully and delivered measurable value to both travelers and service providers.

For Travelers



  • A single platform to discover, compare, and book over nine vacation service categories

  • Transparent pricing with the ability to negotiate adjustments after booking

  • Free cancellation within 48 hours for worry-free reservations

  • Optional nanny cam for babysitting bookings, adding trust for traveling parents

For Service Providers



  • Ability to adjust bookings after acceptance, reducing cancellations and improving service accuracy

  • Streamlined provider dashboard for managing bookings, availability, and payouts

  • Direct access to a curated customer base of Maui vacationers ready to book

  • Simple onboarding flow to create service listings and start accepting bookings

Technical Achievements



  • Custom transaction state machine with three new states seamlessly integrated into Sharetribe's existing engine

  • Bidirectional Stripe payment adjustments handling both additional charges and partial refunds

  • Full email notification pipeline covering the complete adjustment lifecycle

  • Responsive, mobile-first UI that matches Sharetribe's design language

  • MongoDB integration for custom feature data running alongside Sharetribe's native database

Business Impact



  • Created a new economic channel for Maui's local service workforce

  • Reduced booking friction through the negotiation feature, leading to higher completion rates

  • Platform architecture supports expansion to additional Hawaiian islands without restructuring

Technical Deep-Dive: Booking Negotiation Flow

The negotiation feature required changes across every layer of the Sharetribe stack.

Frontend (React + Redux)



  • New Redux actions and reducers for managing adjustment state throughout the proposal lifecycle

  • AdjustmentForm component for providers with validated price input and a reason field

  • AdjustmentReview component for customers showing a side-by-side comparison of original and proposed terms

  • Transaction status badges updated to reflect the three new states with appropriate color coding

  • Optimistic UI updates with automatic rollback on API failure for a responsive user experience

Backend (Express.js)



  • Custom API endpoints for creating, accepting, and declining adjustment proposals

  • Stripe SDK integration for modifying PaymentIntents and processing refunds

  • Webhook handlers for payment confirmation events with idempotency protection

  • Email dispatch service extended with new Handlebars templates for each notification type

Database (MongoDB)



  • Adjustment records storing original pricing, proposed pricing, timestamps, and current status

  • Full audit trail for every payment modification made through the system

  • Indexed queries optimized for the provider dashboard's booking management views

Infrastructure



  • Sharetribe-hosted marketplace backend handling core listing, search, and user management

  • Custom Express.js server running the negotiation logic and payment adjustment flows

  • Stripe Connect for provider payouts with configurable payout schedules

  • Mapbox integration for service area visualization and location-based discovery

Technology Stack

React.js
Redux
Express.js
Node.js
MongoDB
Stripe
PayPal
Sharetribe
Mapbox
Google Maps

Want Similar Results?

Let's discuss how we can apply our expertise to your project.

TechVinta Assistant

Online - Ready to help

Hi there!

Need help with your project? We're online and ready to assist.

🍪

We use cookies for analytics to improve your experience. See our Cookie Policy.