Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Salon
  3. WT Enterprise Salon v 19.0
  4. Sales Conditions FAQ

WT Enterprise Salon

by Waqas Riasat https://way4tech.com
Odoo

$ 1309.00

v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Employees (hr)
• Inventory (stock)
• Invoicing (account)
• Manufacturing (mrp)
• Sales (sale_management)
• Website (website)
Community Apps Dependencies Show
WT Salon Management
Lines of code 10516
Technical Name wt_enterprise_salon
LicenseOPL-1
Websitehttps://way4tech.com
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Employees (hr)
• Inventory (stock)
• Invoicing (account)
• Manufacturing (mrp)
• Sales (sale_management)
• Website (website)
Community Apps Dependencies Show
WT Salon Management
Lines of code 10516
Technical Name wt_enterprise_salon
LicenseOPL-1
Websitehttps://way4tech.com
  • Description
  • License
WT Enterprise Salon Banner

Screenshots


Screenshot 1
Screenshot 2
Screenshot 3

WT Enterprise Salon — Complete Guide

Enterprise-grade Odoo 19 extension for professional salon operations. This guide covers every setting, every feature, and every workflow — from fresh installation to daily operations.

Module Info Technical name: wt_enterprise_salon  |  Depends on: wt_salon_management  |  Version: 19.0.2.0.0  |  License: OPL-1

Contents

  1. How to Use — From Zero to Pro (Start Here)
  2. Requirements & Installation
  3. First-Time Setup (Step-by-Step)
  4. All Features Overview
  5. Settings Reference
  6. Loyalty Program
  7. Service Packages
  8. Memberships
  9. Gift Cards
  10. Customer Reviews
  11. Waitlist
  12. WhatsApp Integration & OTP
  13. Stripe Deposits
  14. Recurring Appointments
  15. Commission Automation
  16. Customer Portal (Filter Tabs, Smart Actions, Routes)
  17. Online Booking Flow
  18. Email & SMS Automation
  19. Scheduled Tasks (Crons)
  20. Staff & Roles
  21. Daily Operations
  22. Troubleshooting
  23. Upgrade Commands
  24. Support & Contact

How to Use — From Zero to Pro

This is the complete guided journey for a brand new user. Follow each phase in order. By the end you will go from “just installed” to running a fully automated, enterprise-grade salon operation.
Prerequisite: wt_salon_management (base module) must be installed first.

New to Salon Management entirely? Read the base module guide (WT Salon Management) first. It covers installation, services, stylists, appointments and commissions. This guide picks up from where the base module ends.

Phase 1 — Install & First Settings Day 1 — about 20 minutes

You have the base module running. Now install the enterprise module and switch on the features you need.

  1. Install WT Enterprise Salon
    Go to Settings → Apps. Search for WT Enterprise Salon and click Install. After the install completes and the page refreshes, you will see new menu items under Salon and a new Settings → Salon Enterprise section.
  2. Open Enterprise Settings
    Go to Settings → Salon Enterprise. This is your control panel for every enterprise feature. All features start with a simple On/Off toggle. Changes take effect immediately — no restart required.
  3. Enable Your Core Features (Recommended for Everyone)
    Start by enabling these four — they add the most value for all salons:
    • Loyalty Program — Reward customers with points every time they visit.
    • Customer Reviews — Let customers rate their experience after each appointment.
    • Waitlist Management — Automatically notify customers when a fully-booked slot opens up.
    • Service Packages — Sell pre-paid session bundles (e.g. 10 haircuts for the price of 8).
    Save Settings. These four features are now live in your portal and backend.
  4. Verify the Portal
    Open a private browser window and visit your website at /salon/book. You should see the booking form. This confirms the enterprise portal layer is active. Log in as a test customer at /web/login and visit /my to see the customer portal dashboard.

Phase 2 — Loyalty & Packages Day 2–3 — Set Up Customer Rewards

Set up your loyalty program and service packages. These two features directly drive repeat bookings and upfront revenue.

  1. Configure the Loyalty Program
    Go to Salon → Loyalty → Program Setup. Set:
    • Points per currency unit — e.g. 10 points per $1 spent
    • Tier thresholds: Bronze (0 pts) → Silver (500 pts) → Gold (1,500 pts) → Platinum (5,000 pts)
    Points are awarded automatically when an appointment is invoiced. Customers see their points and tier on the portal homepage. A banner on each invoiced appointment's detail page shows exactly how many points that visit earned.
  2. Create a Service Package Template
    Go to Salon → Packages → Package Templates. Click New. Fill in: Name (e.g. “10-Haircut Bundle”), Service, Session Count (10), Price ($150), Expiry Period (12 months). Save. The package is now available to sell.
  3. Sell a Package to a Customer
    Go to Salon → Packages → Customer Packages. Click New. Select the customer and the package template. Set the purchase date and confirm. When creating appointments for this customer, the receptionist can apply the package — one session is deducted automatically. The customer sees remaining sessions on their portal page.
  4. Issue a Gift Card
    Go to Salon → Gift Cards. Click New. Select the recipient, enter the initial balance (e.g. $50) and confirm. A unique code is generated. At checkout, enter the code to deduct from the invoice total. Customers see their total gift card balance on the portal.

Phase 3 — Email Automation & Reviews Week 1 — Keep Customers Engaged Automatically

Set up the email automations so the system communicates with customers on your behalf. You configure it once — it runs forever.

  1. Configure Outgoing Mail
    Before any automated emails can send, make sure your SMTP server is configured. Go to Settings → Technical → Outgoing Mail Servers and add your email server. Test it by sending a test email. This is a one-time setup.
  2. Enable Email Reminders
    In Settings → Salon Enterprise → Email Automation: turn on Email Reminders and set Reminder Hours (e.g. 24 = remind 24 hours before the appointment). The system sends a reminder email automatically to every confirmed appointment within the window. No manual action needed — it runs every hour in the background.
  3. Enable Review Requests
    Turn on Review Request Email and set Review Request Hours (e.g. 4 = 4 hours after the appointment is done). When a customer's appointment is marked Done, they receive an email with a link to leave a 1–5 star review. Reviews appear in Salon → Reviews as Pending. Open them and click Publish to make them visible.
  4. Enable Birthday Promotions
    Turn on Birthday Email. Every day the system checks for customers whose birthday is today and sends them a personalised promo email. Make sure your customer contacts have their Date of Birth filled in.
  5. Enable Win-Back Campaigns
    Turn on Win-Back Campaign and set Win-Back Days (e.g. 60). Every week, the system finds customers who have had no appointment in the last 60 days and sends them a “we miss you” email. This automatically re-engages lapsed customers without any effort.
Check Cron Jobs Are Active Go to Settings → Technical → Automation → Scheduled Actions and search “Salon”. You should see 12 active crons. If any show as inactive, open them and click Activate.

Phase 4 — Online Payment & Verification Week 2 — Reduce No-Shows & Verify Customers

Stripe deposits eliminate no-shows by collecting a pre-payment at booking. WhatsApp OTP prevents fake accounts by verifying phone numbers. Both are completely optional — only enable what makes sense for your salon.

  1. Set Up Stripe Deposits (Optional — Reduces No-Shows)
    1. Create a free account at stripe.com if you don't have one.
    2. Go to Stripe Dashboard → Developers → API Keys. Copy your Publishable key (starts with pk_) and Secret key (starts with sk_).
    3. In Odoo, go to Settings → Salon Enterprise. Paste both keys into the Stripe fields.
    4. Enable Deposit Required and set Deposit Percent (e.g. 20 for 20%).
    From now on, when a customer submits a booking, they are redirected to a Stripe payment page to pay the deposit. The deposit is recorded on the appointment and deducted at final invoicing.
    Test first: Use Stripe test keys and card 4242 4242 4242 4242 before going live.
  2. Set Up WhatsApp OTP (Optional — Prevents Fake Bookings)
    1. Create a WhatsApp Business account in business.facebook.com. Get your Phone Number ID and a System User Token.
    2. Create three message templates in Meta Business Manager: booking_confirmation, appointment_reminder, and phone_otp (must contain {{1}} as a variable for the OTP code).
    3. Wait for Meta to approve the templates (usually 1–24 hours).
    4. In Odoo Settings → WhatsApp: enable it, enter your API Token and Phone ID, set the template names to match exactly what you created in Meta.
    5. Enable WhatsApp OTP to require phone verification at signup and guest booking.
    Customers now receive a 6-digit OTP via WhatsApp. They must enter it before their booking is accepted.
  3. Test the Complete Booking Flow
    Open a private browser window. Visit /salon/book as a guest. Fill in your test details. If OTP is enabled, enter your phone — a WhatsApp message will arrive. If deposits are enabled, you will be redirected to Stripe after submitting the form. Check that the confirmation page appears with your booking reference. In the backend, verify the appointment was created under Salon → Appointments.

Phase 5 — Advanced Features Week 3+ — Memberships, Recurring, Photos & Consent

You are running the core features confidently. Now unlock the powerful advanced features that set an enterprise salon apart.

  1. Create Membership Plans
    Enable Memberships in Settings. Go to Salon → Memberships → Membership Plans. Create plans like “Gold Monthly — $99/month”. Set which services are included, session allowances per period, and discount percentage. Go to Salon → Memberships → Customer Memberships to assign a plan to a customer. When the membership expires, the Check Expired Memberships cron automatically marks it expired and the customer sees this on their portal.
  2. Set Up Recurring Appointments
    Enable Recurring Appointments in Settings. When creating a new appointment, tick the Recurring checkbox. Choose frequency (Weekly, Bi-Weekly, Monthly) and number of occurrences (max 12 by default). Click Confirm — all appointments in the series are created at once. Each occurrence is independent — you can cancel one without affecting the others.
  3. Enable Before/After Photos
    Enable Before/After Photos in Settings. An Attachments tab appears on appointment forms. Staff can upload before and after photos for any appointment. These are stored per appointment and visible to managers for quality review.
  4. Enable Consent Forms
    Enable Consent Forms in Settings. A consent section appears on appointment forms. Staff record whether the customer has signed the consent form. Stored per appointment for compliance and legal record-keeping.
  5. Manage the Waitlist
    When a time slot is fully booked and a customer still wants it, staff can add them to the waitlist from the backend at Salon → Waitlist. Customers can also join from the portal themselves. When an appointment is cancelled, the system automatically notifies the next person in the waitlist queue.
  6. Enable SMS Notifications
    Enable SMS in Settings (requires Odoo's built-in SMS credits or a configured SMS gateway). Turn on Booking Confirmation SMS, SMS Reminder and/or Cancellation SMS. Customers receive text messages automatically without any manual action.

Phase 6 — Full Automation & Pro Operations Month 2+ — Hands-Off Management

At this level the salon practically runs itself. Configure commission automation, verify all crons are running, and use daily operations checklists to stay on top of everything.

  1. Enable Commission Automation
    In Settings → Commission Automation:
    • Enable Auto-Confirm and set hours (e.g. 48) — commissions are confirmed automatically 48 hours after the appointment.
    • Enable Auto-Pay and set days (e.g. 30) — confirmed commissions are marked paid after 30 days.
    Managers no longer need to manually approve commissions — the system handles the entire workflow. You can still override manually at any time from Salon → Staff → Commission Earnings.
  2. Daily Morning Checklist (Pro Routine)
    1. Open Salon → Appointments → Today — review all appointments and confirm any that are still New.
    2. Check Salon → Waitlist for any entries needing manual follow-up.
    3. Check Salon → Reviews → Pending and approve or reject overnight submissions.
    4. Scan Salon → Staff → Commission Earnings for any Draft commissions that need manual review.
  3. During the Day — The Enterprise Flow
    1. Customer arrives → open appointment → click Start.
    2. Service finishes → click Done → loyalty points and review request trigger automatically.
    3. Invoice → click Invoice → commission line created, loyalty points awarded, package session deducted if applicable.
    4. Cancellation? → click Cancel → system notifies next waitlist customer automatically.
  4. Verify All 12 Cron Jobs Are Active
    Go to Settings → Technical → Automation → Scheduled Actions. Search “Salon”. You should see 12 active crons. Each one handles a different automation: reminders, review requests, birthday promos, win-back emails, commission automation, waitlist expiry, membership expiry, OTP cleanup. If any are inactive, click them and toggle them active.
  5. Referral Program
    Enable Referral Program in Settings and set Referral Bonus Points (e.g. 100 points per referral). When a customer refers someone who makes a booking, the referrer earns bonus loyalty points automatically. This turns your existing customers into a marketing channel at zero cost.
  6. You Are Now a Pro User
    Your salon is running fully automated: customers book online, pay a deposit, verify by WhatsApp, earn loyalty points, receive reminder emails, get review requests after each visit, and come back via win-back campaigns. Staff commissions confirm and pay themselves on schedule. All you do each morning is check today's appointments and approve any reviews.

    Explore Section 20: Daily Operations for the exact checklist used by pro operators. Use Section 21: Troubleshooting if anything is not working as expected.

Quick Reference — Who Can Do What

ActionStylistReceptionistManager
View own appointments✓✓✓
View all appointments—✓✓
Create / edit appointmentsOwn only✓✓
Create / manage servicesRead only✓✓
Invoice appointments—✓✓
Manage commissionsView ownView only✓
Settings / configuration——✓
Loyalty / packages / reviews—Partial✓

1. Requirements & Installation

Prerequisites

ItemMinimumNotes
Odoo version19.0 Community or EnterpriseNot compatible with Odoo 16/17/18
WT Salon Management19.0.xMust be installed first
Python3.12+Bundled with Odoo 19
PostgreSQL15+Standard Odoo requirement
WhatsApp (optional)Meta Business API tokenOnly needed if enabling WhatsApp OTP/messages
Stripe (optional)Stripe publishable + secret keyOnly needed for online deposits

Installation Steps

  1. Copy the wt_salon_management folder into your Odoo addons path.
  2. Copy the wt_enterprise_salon folder into your Odoo addons path (same directory).
  3. Restart the Odoo server: docker-compose restart odoo (or your server command).
  4. Go to Settings → Apps → Update Apps List.
  5. Search for WT Salon Management and click Install.
  6. Once installed, search for WT Enterprise Salon and click Install.
  7. Navigate to Settings → Salon Enterprise to configure your features.
Important Order Always install wt_salon_management BEFORE wt_enterprise_salon. The enterprise module depends on the base module's models and menus.

Docker Quick Install

# Stop the container
docker-compose stop odoo

# Upgrade (install) the enterprise module
docker-compose run --rm odoo odoo \
  -d YOUR_DB_NAME \
  -u wt_enterprise_salon \
  --stop-after-init \
  --no-http

# Restart live server
docker-compose start odoo

2. First-Time Setup (Step-by-Step)

Follow these steps in order after installation. Each step takes 1–5 minutes.

  1. Open Salon Enterprise Settings
    Go to Settings → Salon Enterprise. You will see all feature toggles. By default most features are disabled — enable only what you need.
  2. Enable Core Features
    Recommended to enable from the start:
    • Loyalty Program
    • Customer Reviews
    • Waitlist Management
    • Service Packages
  3. Configure the Loyalty Program
    Go to Salon → Loyalty → Program Setup. Set points per currency unit (e.g. 10 pts per $1), and configure tier thresholds for Bronze / Silver / Gold / Platinum.
  4. Create at Least One Service Package
    Go to Salon → Packages → Package Templates. Click New. Set a name (e.g. "10-Session Bundle"), choose a service, set session count and price.
  5. Set Up Staff and Services
    Go to Salon → Configuration → Services and Salon → Staff. Assign services to each stylist and set their commission percentage.
  6. Enable Email Automation (Optional)
    In Settings, turn on Email Reminders and set hours before appointment. Turn on Review Request Email to send review links after appointments complete.
  7. Set Up WhatsApp (Optional)
    Enter your Meta Business API token and Phone ID in Settings → WhatsApp section. Enable WhatsApp OTP to require phone verification during signup and booking.
  8. Set Up Stripe (Optional)
    Enter your Stripe publishable key and secret key in Settings. Enable Deposit Required and set the deposit percentage.
  9. Test the Portal
    Open a private browser window and visit /web/signup to create a test customer account. Then visit /salon/book to test the booking flow end-to-end.
  10. Verify Cron Jobs
    Go to Settings → Technical → Automation → Scheduled Actions. Search "Salon" — you should see 12 active cron jobs. If they are inactive, enable them.

3. All Features Overview

Loyalty Program

Bronze→Platinum tiers. Auto-award points on invoiced appointments. Redeem in portal.

Service Packages

Pre-paid session bundles. Track per-customer usage and expiry. Sell directly in portal.

Memberships

Monthly/yearly plans with service discounts and session allowances. Auto-expire tracking.

Gift Cards

Sell electronic gift cards with balance tracking. Redeemable at booking.

Customer Reviews

1–5 star ratings. Manager approval workflow. Display published reviews publicly.

Waitlist

Queue for fully-booked slots. Auto-notify when slot opens. Portal self-join.

WhatsApp OTP

Phone verification via WhatsApp at signup and guest booking. Prevents fake accounts.

Stripe Deposits

Collect pre-booking deposits online. Configurable percentage. Reduces no-shows.

Recurring Appointments

Book repeating series (weekly, bi-weekly, monthly). Up to 12 occurrences.

Email Automation

Reminders, review requests, birthday promos, win-back campaigns.

SMS Automation

Booking confirmation, cancellation, and reminder SMS.

Commission Automation

Auto-confirm and auto-pay stylist commissions on schedule.

Self-Service Cancellation

Customers cancel from portal within configurable cutoff window.

Referral Program

Customers earn bonus points for referring new customers.

Win-Back Campaign

Automatically email inactive customers after N days to bring them back.

Birthday Promotions

Auto-send personalised birthday discount emails to customers.

Consent Forms

Require digital consent before services. Stored per appointment.

Before/After Photos

Upload and store client before/after photos per appointment.

Product Tracking

Track which products are used per appointment for inventory accuracy.

Late Cancellation

Flag appointments cancelled within the cutoff window for potential fee charging.

Availability Calendar

Public-facing calendar showing open booking slots.

Customer Portal

Appointment history with filter tabs, loyalty points, packages, memberships, gift cards — all in one place.

Smart Appointment Actions

Portal detail page shows context-aware buttons: Reschedule, Cancel, Leave Review, Book Same Again, Download Invoice.

KPI Dashboard

Revenue, bookings, top services, stylist performance — all visualised.

Role-Based Access

Manager, receptionist, stylist — each with appropriate permissions.

12 Cron Jobs

All automations run automatically in the background. Zero manual intervention.

4. Settings Reference

All settings live at Settings → Salon Enterprise. They are stored as ir.config_parameter records. Changes take effect immediately — no restart required.

Email Automation

SettingKeyDefaultDescription
Email Reminderssalon_enterprise.email_reminder_enabledFalseSend reminder emails before appointments
Reminder Hourssalon_enterprise.email_reminder_hours24Hours before appointment to send reminder
Review Requestsalon_enterprise.review_request_enabledFalseEmail review link after appointment completes
Review Request Hourssalon_enterprise.review_request_hours4Hours after completion to send review request
Birthday Emailsalon_enterprise.birthday_email_enabledFalseAuto-send birthday discount emails

SMS Automation

SettingKeyDefaultDescription
SMS Enabledsalon_enterprise.sms_enabledFalseMaster SMS switch (requires Odoo SMS module)
SMS Reminder Hourssalon_enterprise.sms_reminder_hours24Hours before appointment to send SMS reminder
Booking Confirmation SMSsalon_enterprise.sms_booking_confirmationFalseSend SMS on new booking
Cancellation SMSsalon_enterprise.sms_cancellationFalseSend SMS when appointment is cancelled

WhatsApp

SettingKeyDefaultDescription
WhatsApp Enabledsalon_enterprise.whatsapp_enabledFalseEnable WhatsApp message sending
API Tokensalon_enterprise.whatsapp_token—Meta Business API Bearer token
Phone IDsalon_enterprise.whatsapp_phone_id—WhatsApp Business Phone Number ID
Booking Templatesalon_enterprise.whatsapp_booking_templatebooking_confirmationTemplate name for booking confirmations
Reminder Templatesalon_enterprise.whatsapp_reminder_templateappointment_reminderTemplate name for reminders
OTP Enabledsalon_enterprise.whatsapp_otp_enabledFalseRequire WhatsApp OTP at signup and guest booking
OTP Templatesalon_enterprise.whatsapp_otp_templatephone_otpTemplate name for OTP messages

Commission Automation

SettingKeyDefaultDescription
Auto-Confirmsalon_enterprise.auto_confirm_commissionFalseAuto-confirm draft commissions
Confirm After Hourssalon_enterprise.auto_confirm_hours48Hours after appointment to auto-confirm
Auto-Paysalon_enterprise.auto_pay_commissionFalseAuto-pay confirmed commissions
Pay After Dayssalon_enterprise.auto_pay_days30Days after confirmation to auto-pay

Feature Flags

SettingKeyDefault
Gift Cardssalon_enterprise.gift_cards_enabledTrue
Loyalty Programsalon_enterprise.loyalty_enabledTrue
Customer Reviewssalon_enterprise.reviews_enabledTrue
Waitlistsalon_enterprise.waitlist_enabledTrue
Service Packagessalon_enterprise.packages_enabledTrue
Membershipssalon_enterprise.memberships_enabledFalse
Deposit Requiredsalon_enterprise.deposit_requiredFalse
Deposit Percentsalon_enterprise.deposit_percent20.0
Consent Formssalon_enterprise.consent_enabledFalse
Before/After Photossalon_enterprise.photos_enabledFalse
Product Trackingsalon_enterprise.product_trackingFalse
Availability Calendarsalon_enterprise.availability_calendar_enabledFalse
Self-Service Cancellationsalon_enterprise.self_cancel_enabledFalse
Self-Cancel Cutoff Hourssalon_enterprise.self_cancel_cutoff_hours24
Recurring Appointmentssalon_enterprise.recurring_enabledFalse
Recurring Max Countsalon_enterprise.recurring_max_count12
Referral Programsalon_enterprise.referral_enabledFalse
Referral Bonus Pointssalon_enterprise.referral_bonus_points100
Win-Back Campaignsalon_enterprise.win_back_enabledFalse
Win-Back Dayssalon_enterprise.win_back_days60
Late Cancel Hourssalon_enterprise.late_cancel_hours24
Max Daily Capacitysalon.max_daily_capacity10
Stripe Publishable Keysalon_enterprise.stripe_publishable_key—
Stripe Secret Keysalon_enterprise.stripe_secret_key—

5. Loyalty Program

Enable at: Settings → Salon Enterprise → Loyalty Program

How It Works

  • When an appointment is invoiced (state = invoiced), points are computed automatically.
  • Formula: invoice_amount × points_per_currency
  • Points accumulate across all appointments for a customer.
  • Tier upgrades happen automatically when total points cross a threshold.

Tier Configuration

Go to Salon → Loyalty → Program Setup and set thresholds:

TierDefault ThresholdBenefits
Bronze0 ptsBase tier
Silver500 ptsConfigure discount in settings
Gold1,500 ptsConfigure discount in settings
Platinum5,000 ptsConfigure discount in settings

Customer View

Customers see their points and tier on the portal home page. On each invoiced appointment's detail page (/my/salon-appointments/<id>), a highlighted alert shows exactly how many loyalty points that specific visit earned.

Managing Points

Go to Salon → Loyalty → Customer Points to view, add, or deduct points manually.

6. Service Packages

Enable at: Settings → Salon Enterprise → Service Packages

Creating a Package Template

  1. Go to Salon → Packages → Package Templates and click New.
  2. Set a name (e.g. "10 Haircut Bundle"), select a service, enter session count and price.
  3. Set an expiry period (e.g. 12 months from purchase date).
  4. Save and the package is available for sale immediately.

Selling a Package

  • From the Salon → Packages → Customer Packages menu, click New.
  • Select the customer and the package template.
  • Set the purchase date and confirm.

Using Package Sessions

When creating an appointment for a customer who has an active package for that service, the receptionist can apply the package — one session is deducted from the remaining count.

Customer Portal View

Customers see all their active packages, sessions used, sessions remaining, and expiry date under My Account → My Packages.

7. Memberships

Enable at: Settings → Salon Enterprise → Memberships

Setup

  1. Go to Salon → Memberships → Membership Plans and create plans (e.g. "Gold Monthly — $99/mo").
  2. Set services included, session allowances per period, and discount percentages.
  3. Go to Salon → Memberships → Customer Memberships to assign a plan to a customer.

Auto-Expire

The Check Expired Memberships cron runs daily. When a membership's end date passes, its state automatically changes to expired. The customer sees this in their portal.

Portal Display

Active membership card appears on the customer portal home page showing plan name and expiry date.

8. Gift Cards

Enable at: Settings → Salon Enterprise → Gift Cards (enabled by default)

Creating a Gift Card

  1. Go to Salon → Gift Cards and click New.
  2. Select the recipient customer, enter the initial balance and an optional message.
  3. Set an expiry date (optional) and confirm.
  4. A unique code is generated automatically.

Redeeming Gift Cards

At checkout (appointment invoicing), the receptionist enters the gift card code. The balance is deducted from the invoice total. Partial redemptions are supported — remaining balance stays on the card.

Portal Display

Customers see their total gift card balance on the portal home page.

9. Customer Reviews

Enable at: Settings → Salon Enterprise → Customer Reviews (enabled by default)

Review Flow

  1. Customer completes an appointment (state → done).
  2. If Review Request Email is enabled, an email is sent automatically after N hours.
  3. Customer clicks the link, rates 1–5 stars, and leaves an optional comment.
  4. Review appears in Salon → Reviews with state pending.
  5. Manager reviews it and clicks Publish or Reject.
  6. Published reviews display on the customer portal and optionally on the booking page.

Managing Reviews

Go to Salon → Reviews. Use the Kanban view to easily drag reviews between states. Filter by service or stylist to analyse performance.

10. Waitlist

Enable at: Settings → Salon Enterprise → Waitlist (enabled by default)

How It Works

  • When a booking slot is full, customers can join the waitlist from the portal or the front desk.
  • When an appointment is cancelled, the system finds waitlist entries for that slot.
  • A notification (email or WhatsApp) is sent to the next customer in queue.
  • The customer has a limited time window to confirm their slot (configurable).
  • Expired waitlist entries are cleaned up daily by the cron job.

Managing the Waitlist

Go to Salon → Waitlist. You can see all active waiting entries with customer name, desired service, preferred date, and their position in queue. Click Notify to manually send notification to a specific customer.

11. WhatsApp Integration & OTP

Setup: Meta Business API

  1. Go to business.facebook.com and create a Business account.
  2. Add a WhatsApp Business app and get your Phone Number ID.
  3. Generate a permanent System User Token with whatsapp_business_messaging permission.
  4. Create message templates in the Meta Business Manager:
    • booking_confirmation — sent on new booking
    • appointment_reminder — sent N hours before appointment
    • phone_otp — sent for OTP verification (must have variable {{1}} for the OTP code)
  5. Wait for template approval from Meta (usually 1–24 hours).

Configuration in Odoo

  1. Go to Settings → Salon Enterprise → WhatsApp.
  2. Enable WhatsApp Enabled.
  3. Enter your API Token and Phone Number ID.
  4. Set the template names (must match exactly what you created in Meta).
  5. Enable WhatsApp OTP to require phone verification at signup and guest booking.

OTP Flow — How It Works

At Signup (/web/signup)
  1. Phone field appears on the signup form
  2. Customer clicks "Send OTP"
  3. WhatsApp message with 6-digit code is sent
  4. Customer enters code and clicks "Verify"
  5. Form submit is blocked until verified
  6. After signup, phone is saved to the partner record
At Guest Booking (/salon/book)
  1. Phone field shows OTP button for guests
  2. Guest clicks "Send OTP"
  3. OTP sent to their WhatsApp number
  4. Guest enters code and verifies
  5. Booking is blocked server-side if OTP not verified
  6. Confirmation page shows "Create My Account" button

Duplicate Contact Prevention

When a guest books, a res.partner is created. If that guest later signs up using the same email, the system detects the existing partner and links the new user account to it — no duplicate contacts.

This works via two mechanisms:

  • Token URL: The confirmation page offers a "Create My Account" link with a pre-generated signup_token that links directly to the guest's existing partner record.
  • Email detection: At /web/signup, if the email matches an existing partner without a user account, the system injects the token automatically — even without the link.

OTP Record Model

OTPs are stored in salon.phone.otp. Each record has: phone, code, expiry (10 minutes), verified flag, and attempts counter (max 5). Expired records are cleaned up every hour by cron.

12. Stripe Deposits

Enable at: Settings → Salon Enterprise → Deposit Required

Setup

  1. Create a Stripe account at stripe.com.
  2. Go to Developers → API Keys and copy your Publishable key and Secret key.
  3. In Odoo, go to Settings → Salon Enterprise and paste both keys.
  4. Enable Deposit Required and set Deposit Percent (default 20%).

Booking Flow with Deposit

  • When a customer submits a booking, a Stripe checkout session is created for the deposit amount.
  • Customer is redirected to Stripe's hosted payment page.
  • On successful payment, customer is returned to the confirmation page.
  • On failure or cancellation, they can retry or contact the salon.
  • The deposit is recorded on the appointment and deducted at final invoice.
Test Mode Use Stripe test keys during development. Use card number 4242 4242 4242 4242 with any future expiry and any CVC for test payments.

13. Recurring Appointments

Enable at: Settings → Salon Enterprise → Recurring Appointments

Creating a Recurring Series

  1. Create a new appointment as usual.
  2. Check the Recurring checkbox.
  3. Choose frequency: Weekly, Bi-Weekly, or Monthly.
  4. Set the number of occurrences (max configured in settings, default 12).
  5. Confirm — all appointments in the series are created at once.

Managing a Series

  • Each appointment in the series is independent — you can cancel one without affecting others.
  • Rescheduling: Cancel the specific occurrence and create a replacement.
  • The series is linked by a recurring_series_id field for reporting.

14. Commission Automation

Enable at: Settings → Salon Enterprise → Commission Automation

Commission Lifecycle

StateTriggerDescription
DraftAppointment invoicedCommission line created, awaiting review
ConfirmedAuto after N hours OR manualManager has approved the commission
PaidAuto after M days OR manualPayment processed to stylist

Manual Override

Managers can always confirm or pay commissions manually from Salon → Commissions without waiting for the cron schedule.

Audit Trail

Every state change is logged in the appointment's chatter with user, timestamp, and amount.

15. Customer Portal

Customers access their portal at /my after logging in. The salon portal home page shows cards for each enabled feature:

CardShows whenContent
My AppointmentsAlways visibleAppointment count + link to /my/salon-appointments
Loyalty PointsLoyalty enabledTotal points + current tier
Active MembershipMemberships enabled + active membership existsPlan name + expiry
Gift Card BalanceGift cards enabled + balance > 0Total balance across all active cards
My PackagesPackages enabledLink to package list
Book AppointmentAlwaysDirect link to /salon/book
WaitlistWaitlist enabledLink to waitlist management
ReviewsReviews enabledLink to leave/view reviews

Appointment List — Filter Tabs

The appointments page at /my/salon-appointments shows four tabs with live counts:

All  12 Upcoming  3 Done  8 Cancelled  1
  • Sort by Newest, Reference, or Total amount.
  • Colour-coded status badges on each row (green = confirmed, grey = done, red = cancelled).
  • Paged — 10 appointments per page with full next/prev navigation.
  • Click any row to open the appointment detail page.

Appointment Detail — Smart Action Buttons

Every appointment detail page shows a smart sidebar with context-aware buttons:

ButtonShown when
RescheduleAppointment is not cancelled and not completed
Cancel AppointmentSelf-cancel enabled, not already cancelled, and more than N hours until start
Leave a ReviewReviews enabled, appointment is done, no review yet submitted
Book Same AgainAppointment has a service (creates a pre-filled new booking)
Download InvoiceAppointment has been invoiced
All My AppointmentsAlways — back link

If Loyalty Program is enabled and the appointment earned points, a highlighted alert banner appears above the appointment details showing exactly how many points were earned for that visit.

Portal Routes

URLAuthDescription
/myuserPortal home with all salon cards
/my/salon-appointmentsuserAppointments list with filter tabs (All/Upcoming/Done/Cancelled)
/my/salon-appointments/page/<n>userPaginated appointments list
/my/salon-appointments/<id>public*Appointment detail with smart action sidebar
/salon/loyaltyuserLoyalty points history and tier
/salon/packagesuserCustomer packages list
/salon/my-historyuserFull history dashboard
/salon/bookpublicPublic booking form (logged in or guest)
/salon/reschedule/<id>userReschedule form for a specific appointment
/salon/review/<id>userLeave a star rating and comment
/salon/cancel/<id>userSelf-service cancellation with cutoff guard
/web/signuppublicAccount creation (standard Odoo + OTP injection)

* public auth with access_token fallback — uses _document_check_access() for security.

16. Online Booking Flow

Logged-In Customer

  1. Customer visits /salon/book.
  2. Their name, email, and phone are pre-filled from their account.
  3. They select service, stylist (optional), and preferred date/time.
  4. If package sessions are available for the service, they can opt to use one.
  5. If deposit is required, they are redirected to Stripe.
  6. Confirmation page shows appointment details and booking reference.

Guest Booking

  1. Guest visits /salon/book without logging in.
  2. They fill in name, email, and phone.
  3. If WhatsApp OTP is enabled, they must verify their phone before submitting.
  4. A new res.partner is created or linked if email matches existing partner.
  5. Confirmation page shows a "Create My Account" banner with a link that links the account to their existing booking history.

Cancellation Flow (Self-Service)

  • Enable at: Settings → Self-Service Cancellation.
  • Set Cutoff Hours — cancellations within this window are flagged as late.
  • Customer goes to appointment detail page and clicks Cancel.
  • If cancellation is within the cutoff window, it is marked as a late cancellation.
  • System checks waitlist and notifies the next customer automatically.

17. Email & SMS Automation

Email Automations

AutomationTriggerSetting Required
Appointment ReminderN hours before appointmentemail_reminder_enabled = True
Review RequestN hours after appointment donereview_request_enabled = True
Birthday PromoCustomer's birthday datebirthday_email_enabled = True
Win-Back CampaignNo appointment in last N dayswin_back_enabled = True

SMS Automations

AutomationTriggerSetting Required
Booking ConfirmationNew appointment createdsms_booking_confirmation = True
Appointment ReminderN hours before appointmentsms_enabled = True
Cancellation NoticeAppointment cancelledsms_cancellation = True

WhatsApp Automations

AutomationTriggerSetting Required
Booking ConfirmationNew appointment createdwhatsapp_enabled = True
Appointment ReminderN hours before appointmentwhatsapp_enabled = True
OTP VerificationSignup / guest bookingwhatsapp_otp_enabled = True
Email Templates Email template content is managed under Settings → Technical → Email → Templates. Search "Salon" to find all templates. You can customise the HTML and variables.

18. Scheduled Tasks (Crons)

All crons are visible at Settings → Technical → Automation → Scheduled Actions. Search "Salon".

Cron NameIntervalWhat It Does
Send Appointment Email RemindersEvery 1 hourFinds upcoming appointments within the reminder window and sends reminder emails
Send Appointment SMS RemindersEvery 1 hourSame but via SMS
Send WhatsApp Appointment RemindersEvery 1 hourSame but via WhatsApp API
Send Post-Appointment Review RequestsEvery 1 hourFinds recently completed appointments and emails review request links
Cleanup Expired OTPsEvery 1 hourDeletes OTP records older than 10 minutes
Auto-Confirm Draft CommissionsEvery 1 dayConfirms commission lines that are N hours old
Auto-Pay Confirmed CommissionsEvery 1 dayMarks commissions as paid after M days
Send Birthday Promotion EmailsEvery 1 dayFinds customers whose birthday is today and sends promo emails
Win-Back Inactive CustomersEvery 1 weekEmails customers with no appointment in the last N days
Expire Old Waitlist EntriesEvery 1 dayMarks old waitlist entries as expired
Mark Expired MembershipsEvery 1 daySets membership state to expired when end date passes
Crons Are Always Active All crons run even if the corresponding feature flag is disabled — the cron method checks the flag internally and exits immediately if disabled. This means no wasted DB queries but also means you don't need to disable crons manually when toggling features.

19. Staff & Roles

Odoo User Groups

GroupTechnical NameCapabilities
Salon Managerwt_salon_management.group_salon_managerFull access: settings, commissions, reports, staff management, all records
Salon Receptionistwt_salon_management.group_salon_receptionistCreate/edit appointments, view customer records, basic booking operations
Salon Stylistwt_salon_management.group_salon_stylistView own appointments, update appointment status, view own commissions

Assigning Roles

  1. Go to Settings → Users & Companies → Users.
  2. Open the user's record.
  3. In the Salon section, choose the appropriate role.
  4. Save. The user's menu and access rights update immediately.

Stylist Commissions

  • Each service has a configurable commission percentage per stylist.
  • When an appointment is invoiced, commission lines are created for the performing stylist.
  • Stylists can view their own commissions from their portal or backend access.

20. Daily Operations

Morning Routine

  1. Open Salon → Appointments → Today to see all appointments for the day.
  2. Check for any waitlist notifications that need manual follow-up.
  3. Review overnight bookings and confirm any pending ones.
  4. Check the review queue (Salon → Reviews → Pending) and approve/reject.

During the Day

  • When a customer arrives: Open their appointment, click Start.
  • When service is complete: Click Done. This triggers loyalty points and review request.
  • To invoice: Click Invoice. This triggers commission creation.
  • If a cancellation occurs: Cancel the appointment — system automatically notifies waitlist.

End of Day

  • Review Salon → Commissions → Draft — confirm any that need manual approval.
  • Check Salon → Reports → Daily Summary for revenue and appointment stats.
  • Review any failed email/SMS sends in Settings → Technical → Email → Emails.

21. Troubleshooting

ProblemLikely CauseFix
WhatsApp OTP not sending Wrong token or template name Verify token in Meta Business Manager. Check template is approved and name matches exactly in Settings.
Portal home shows no loyalty card Loyalty feature disabled or customer has no points Enable loyalty in Settings. Check customer has at least one invoiced appointment.
Crons not running Crons marked inactive Go to Settings → Technical → Scheduled Actions, search "Salon", enable all that are inactive.
Duplicate contacts when guest signs up Email doesn't match any existing partner Normal behaviour for brand new emails. The auto-link only works when the exact email was used at guest booking.
Stripe payment page not loading Invalid API keys Verify keys in Settings. Ensure publishable key starts with pk_ and secret key starts with sk_.
Email reminders not sending Outgoing mail server not configured Go to Settings → Technical → Outgoing Mail Servers and configure SMTP. Also verify email_reminder_enabled is True.
Gift card balance not showing on portal Gift card state is not "active" Go to Salon → Gift Cards, open the card, confirm it is in "active" state with balance > 0.
Module won't install — dependency error wt_salon_management not installed first Install wt_salon_management first, then install wt_enterprise_salon.
New Python code not reflecting Odoo server cache Restart the Odoo container/server completely. Python changes require restart; XML changes need module upgrade.
XML changes not applied Module not upgraded after XML edit Run: odoo -d DB -u wt_enterprise_salon --stop-after-init then restart server.
OTP expired too fast Default is 10 minutes OTP validity is hardcoded to 10 minutes in salon.phone.otp.create_otp(). Edit if needed.
Commission not created after invoicing Stylist not assigned to appointment Open the appointment, ensure a stylist is assigned. Commission is only created when a stylist is present.
"My Appointments" card not visible on /my/home Odoo 19 hides portal cards by default until JS counter fetch completes Enterprise module injects a direct always-visible card. If missing, ensure wt_enterprise_salon is installed and fully upgraded. Verify no JS errors in browser console blocking the page.
"You are not allowed to access 'Salon Appointment Stage'" when visiting /my/salon-appointments Missing portal read access for related models Upgrade the enterprise module: odoo -d DB -u wt_enterprise_salon --stop-after-init. The upgrade applies the 6 portal/public read rules in security/ir.model.access.csv.
Loyalty points not shown on appointment detail page Loyalty disabled or appointment not yet invoiced Enable Loyalty in Settings. Points are only awarded when the appointment is invoiced. Check that the appointment's state is invoiced and the customer has a loyalty card record.
Smart action buttons (Reschedule, Cancel, Review) missing on appointment detail Viewing via old /salon/appointments URL instead of new route Use /my/salon-appointments/<id>. The smart sidebar only exists on the enterprise controller's detail page. Ensure module is upgraded after last change.
Module fails to load — ImportError: cannot import AuthSignupHome auth_signup not listed in module depends Verify __manifest__.py includes 'auth_signup' in the depends list. Restart Odoo after fixing.

22. Upgrade Commands

After Editing Python Files

# Restart container only — Python loads fresh on startup
docker-compose restart odoo

After Editing XML/CSV/Data Files

# Stop live server
docker-compose stop odoo

# Upgrade module (applies new XML, migrations, data)
docker-compose run --rm odoo odoo \
  -d YOUR_DB_NAME \
  -u wt_enterprise_salon \
  --stop-after-init \
  --no-http

# Start live server again
docker-compose start odoo

After Editing Both Python and XML

# Same as XML upgrade above — the upgrade step restarts Python too
docker-compose stop odoo
docker-compose run --rm odoo odoo \
  -d YOUR_DB_NAME \
  -u wt_enterprise_salon \
  --stop-after-init \
  --no-http
docker-compose start odoo

Upgrade Both Modules at Once

docker-compose run --rm odoo odoo \
  -d YOUR_DB_NAME \
  -u wt_salon_management,wt_enterprise_salon \
  --stop-after-init \
  --no-http
Check Odoo Logs After Upgrade Run docker-compose logs odoo --tail=100 after any upgrade. Look for ERROR or WARNING lines. Common issues: missing XML id reference, field does not exist, model not found.

23. Support & Contact

All Way4Tech modules include 90 days of free support from purchase date. This covers: installation help, configuration guidance, and bug fixes.

Email

waqasriasatjutt@gmail.com

info@way4tech.com

WhatsApp / Phone

+92 315 411 4748

Website

way4tech.com

Odoo Apps

All Way4Tech Modules

Odoo 19 OPL-1 WhatsApp OTP Loyalty Program Service Packages Memberships Gift Cards Customer Reviews Waitlist Stripe Deposits Commission Automation SMS & Email Customer Portal Recurring Appointments 12 Cron Jobs
© 2025 Way4Tech · Waqas Riasat · All Rights Reserved
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with