How we extended Sharetribe with a custom booking negotiation system to power a vacation services marketplace in Maui
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 for their marketplace but quickly hit a wall: Sharetribe's default booking flow didn't support post-booking negotiation. Providers needed the ability to propose adjustments to bookings after acceptance — a critical feature for a services marketplace where scope often changes after initial booking.
Our team was engaged to design and implement this custom negotiation feature, along with integrating the full payment flow for adjustment charges and refunds.
The Sharetribe Web Template provides a solid marketplace foundation with React + Express.js, but several technical challenges emerged:
**1. 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 acceptance, making it impossible for service providers to adjust pricing or scope mid-booking.
**2. Payment Adjustments**
When a booking adjustment is accepted, the system needs to handle payment differences — either charge the customer an additional amount or process a partial refund. Stripe's standard flow needed custom handling for these post-authorization adjustments.
**3. Real-Time Notifications**
Both customers and providers needed to be notified immediately when adjustments were proposed, accepted, or declined. The existing email notification system had to be extended with new templates and triggers.
**4. UI/UX Complexity**
The adjustment flow required entirely new screens: a proposal form for providers, a review screen for customers with accept/decline options, and clear status indicators throughout the transaction lifecycle. All of this had to blend seamlessly with the existing Sharetribe UI.
**5. Multi-Service Marketplace**
Unlike a typical single-category marketplace, Tutti Vacation offers 9+ distinct service categories, each with unique booking requirements — from hourly surf lessons to multi-day equipment rentals to recurring concierge services.
We implemented a comprehensive solution that extended the Sharetribe platform while maintaining its core architecture:
**Custom Transaction States**
We added three new states to Sharetribe's booking transaction process:
- `adjustment-proposed` — Provider has submitted a modification
- `adjustment-accepted` — Customer has approved the change
- `adjustment-declined` — Customer has rejected the proposal
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 adjustment form captures the new pricing, reason for change, and any modified service details. For customers, a dedicated review screen presents the original vs. proposed booking side-by-side with clear Accept and Decline buttons.
**Stripe Payment Processing**
We implemented bidirectional payment adjustment:
- **Additional Charge:** When the adjusted price is higher, we capture an additional payment from the customer's stored payment method
- **Partial Refund:** When the adjusted price is lower, we process an automatic partial refund to the customer's original payment method
**Email Notification System**
Extended the existing notification pipeline with new email templates for:
- Adjustment proposal notification (to customer)
- Adjustment accepted confirmation (to provider)
- Adjustment declined notification (to provider)
- Updated booking confirmation (to both parties)
**Service Category Architecture**
Designed a flexible listing structure that accommodates all 9+ service types, with category-specific fields and booking flows while sharing common infrastructure for payments, reviews, and messaging.
The Tutti Vacation marketplace launched successfully and delivered measurable impact:
**For Travelers:**
- Single platform to discover and book 9+ vacation service categories
- Transparent pricing with post-booking negotiation capability
- Free cancellation within 48 hours for worry-free booking
- Camera-equipped babysitting option for added parental trust
**For Service Providers:**
- Ability to adjust bookings after acceptance, reducing cancellations
- Streamlined provider dashboard for managing bookings and payouts
- Direct access to a curated customer base of Maui vacationers
**Technical Achievements:**
- Custom transaction state machine with 3 new states seamlessly integrated into Sharetribe
- Bidirectional Stripe payment adjustments (charges + refunds)
- Full email notification pipeline for adjustment lifecycle
- Responsive, mobile-first UI matching Sharetribe's design language
- MongoDB integration for custom feature data alongside Sharetribe's native database
**Business Impact:**
- Created a new economic channel for Maui's local service workforce
- Reduced booking friction with negotiation feature, leading to higher completion rates
- Platform supports growth to additional Hawaiian islands with the same architecture
## Technical Deep-Dive: Booking Negotiation Flow
The negotiation feature required changes across all layers of the Sharetribe stack:
### Frontend (React + Redux)
- New Redux actions and reducers for adjustment state management
- `AdjustmentForm` component for providers with price input and reason field
- `AdjustmentReview` component for customers with side-by-side comparison
- Transaction status badges updated to reflect new states
- Optimistic UI updates with rollback on API failure
### Backend (Express.js)
- Custom API endpoints for creating, accepting, and declining adjustments
- Stripe SDK integration for `PaymentIntent` modifications
- Webhook handlers for payment confirmation events
- Email dispatch service extended with Handlebars templates
### Database (MongoDB)
- Adjustment records with original/proposed pricing, timestamps, and status
- Audit trail for all payment modifications
- Indexed queries for provider dashboard performance
### Infrastructure
- Sharetribe-hosted marketplace backend
- Custom Express.js server for negotiation logic
- Stripe Connect for provider payouts
- Mapbox for service area visualization
Let's discuss how we can apply our expertise to your project.