Happy Dog Software Clipper and Salon
A lightweight, self-hosted Customer Relationship Management application built for barbers and salon managers. Manage customers, schedule appointments, send emails, and export reports - all from one place.
🆕 Version 3.0.0🆕 New in Version 3.0.0
- Confirmation emails. On the appointment form, tick "Email the customer a confirmation now" to email them the details when you save a new appointment or an edit (a calendar invite is included).
- Day-before reminders you set per appointment. Each appointment has Email and Text (SMS) reminder checkboxes. Ticked reminders go out the day before, at the time you choose under Settings › Messaging.
- Editable message templates. Settings › SMTP and Settings › Messaging each have a Day-Before Reminder template you can word yourself, using {name}, {title}, {date}, {time} and {business}.
🆕 New in Version 2.0.7
- Reports now export to your Downloads folder. Clicking Export saves the CSV straight into Downloads and tells you the file name - no more exports that seemed to do nothing in the app window.
- Email Blast reaches the people you tick. Picking individual recipients now works (previously only the "entire status group" option sent).
- The Help button opens the online guide in your web browser instead of a second copy of the app.
- Tidier sent log - a bulk email shows as Blast rather than a long code, and the Sign Out button is hidden when login is turned off.
🆕 New in Version 2.0.6
- No login screen by default. A fresh install opens straight to the Dashboard - most shops run this on one computer at the front desk, and a password every morning helps nobody. To turn the login screen on, tick Settings › Application Preferences › Disable login off. That page tells you the admin sign-in to use before you switch it on, so you can't lock yourself out.
- Time Clock is off by default. Turn it on under Settings › Application Preferences and the Time Clock link returns to the sidebar.
- The intake form now asks when clients prefer to come in. The QR template gained Preferred days and Preferred times; whatever they write shows on the Intake review card and is saved to their notes when you approve them. See Web Intake (QR).
- “Use my SMTP settings” on the Web Intake page fills in the intake mailbox from the email settings you already entered - same address, one click, instead of retyping the password.
- Printouts no longer show the web address. Invoices, customer cards, the daily schedule, and the QR sign print clean, without the 127.0.0.1:5000/… line across the top.
🆕 New in Version 1.90
- Web Intake (QR sign-up): put a QR code on a flyer or your window so new clients can submit their own details. Submissions arrive in your inbox and appear under the new Intake menu for you to review and approve. See Web Intake (QR).
- Intake menu in the sidebar shows a red badge with the number of submissions waiting for your review.
- Messaging › Emails now share one consistent layout - Compose, Email Blast, Send SMS, and the Sent Log all sit under the same Messaging sub-menu. The Email Blast editor now matches the single-email editor (Plain Text / HTML tabs).
- Printing (invoice, customer card, daily schedule) from the Dashboard now opens the print dialog right in the app window instead of asking to use a browser.
💾 Installation
ClipperSalonCRM-windows-setup.exe). Run it and the setup wizard installs the
application, creates Start Menu shortcuts, and can launch the app for you when it finishes.
System Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| Operating System | Windows 10 (64-bit) | Windows 11 |
| RAM | 256 MB free | 512 MB free |
| Disk Space | 200 MB | 500 MB (including data) |
| Network | None (offline capable) | For SMTP email sending |
| Browser (localhost mode) | Any modern browser | Chrome / Edge |
Installation Steps
Double-click the downloaded ClipperSalonCRM-windows-setup.exe
and approve the Windows administrator prompt (the app installs to
Program Files).
Tick Create a desktop icon if you want one, then click
Install. The app is placed in
C:\Program Files\ClipperSalonCRM\ with Start Menu shortcuts
created automatically.
Leave Launch Happy Dog Software Clipper and Salon checked on the final wizard page (or start it any time from the Start Menu). Press 1 for a native desktop window (recommended) or 2 to open in your default web browser.
Username: admin Password: ClipperSalonCRM
Command-Line Options
You can pass flags directly to the executable (installed at
C:\Program Files\ClipperSalonCRM\ClipperSalonCRM.exe) to skip the
interactive prompt:
ClipperSalonCRM.exe # interactive prompt (default)
ClipperSalonCRM.exe --mode webview # desktop window via pywebview
ClipperSalonCRM.exe --mode localhost # open in default browser
ClipperSalonCRM.exe --mode localhost --port 8080 # custom port
🚀 First Launch
On first run, Happy Dog Software Clipper and Salon automatically:
- Creates the database file at
%APPDATA%\ClipperSalonCRM\crm.db - Seeds the database with sample customers and appointments
- Creates the default
adminaccount
%APPDATA%\ClipperSalonCRM\ and will
persist across application updates. The database is never
deleted when you update or reinstall the executable.
🔐 Default Login Credentials
| Field | Value |
|---|---|
| Username | admin |
| Password | ClipperSalonCRM |
| Role | Admin |
To change the default credentials at startup, set environment variables before launching:
set ADMIN_USERNAME=myadmin
set ADMIN_PASSWORD=MySecurePass123
ClipperSalonCRM.exe
☷ Dashboard
The Dashboard provides a live overview of your business at a glance:
The dashboard also shows your next 5 upcoming appointments and your 4 most recently added customers.
Complete a visit & book the next one
Click any row in Today's Schedule to open the appointment. From there:
Records the visit as done and adds its price to the customer's lifetime value.
You're offered a follow-up screen pre-filled to match the customer's usual rhythm - their typical day of the week, time, and how often they visit. Pick how many weeks out with the quick buttons (it snaps to their usual day), adjust anything if needed, and book. Choose No thanks to skip.
☺ Customers
The Customers module stores all client information including:
- Full name, email, phone number
- Company (optional)
- Physical address (street, city, state, ZIP)
- Status (Lead / Prospect / Active / Churned)
- Notes - free-form text for anything worth remembering about the customer
- Lifetime Value (LTV) - cumulative revenue from this customer
Customer Statuses
| Status | Meaning |
|---|---|
| Lead | Initial contact, not yet engaged |
| Prospect | In conversation, evaluating services |
| Active | Current paying customer |
| Churned | Former customer, no longer active |
Lifetime Value (LTV)
LTV is not directly editable to preserve accuracy. It is updated in two ways:
- Automatically - when an appointment with a price is marked Completed, its price is added to the customer's LTV.
- Manual adjustment - on the customer detail page, use the Modify Lifetime Value panel to enter a positive or negative decimal amount (e.g.
50.00to add,-25.00to deduct). Optionally add a reason note. LTV cannot go below $0.00.
📅 Schedule & Calendar
Manage appointments for your customers. Each appointment has:
- Title, linked customer, date & time, duration
- Type: Meeting, Call, Demo, Follow-up, or Other
- Location and notes
- Price - automatically added to the customer's Lifetime Value when status is set to Completed
- Status: Scheduled, Completed, or Cancelled
List Views
Three list tabs let you filter by time range:
- Upcoming - appointments from today onwards
- All - every appointment regardless of date
- Past - appointments before today
Each list view also supports filtering by Type and Status.
📅 Calendar View
Click the Calendar tab to switch to the monthly calendar view.
- Use the ‹ and › arrows to navigate between months.
- Each day cell shows colour-coded appointment labels:
- blue = Scheduled
- green = Completed
- red = Cancelled
- Click any appointment label to open its edit form.
- Click any empty day cell to open the New Appointment form with that date pre-filled.
- Today's date is highlighted with a blue circle.
🔔 Reminders & Alerts
Happy Dog Software Clipper and Salon can automatically remind your customers about upcoming appointments by text message or email, and can send an alert the moment an appointment is booked. Everything is set up from inside the application - no typing of commands is required.
Appointment Alerts (when booking)
On the New Appointment screen, pick a customer and their address, phone, and email appear automatically. Tick either box before saving:
- Send text message alert - texts the customer their appointment details.
- Send email calendar alert - emails a calendar invite (with your business name and address) they can add to their calendar.
Automated Reminders (before the appointment)
Choose how messages are sent: Vonage or Twilio for text messages, or email.
Set how many hours before the appointment the reminder should go out, and edit the message wording if you like.
From now on, every appointment you book automatically schedules a reminder.
Editing an appointment updates its reminder; deleting or cancelling it removes the reminder. On the Appointments page, Send Reminders Now sends any due reminders immediately.
Sending while the app is closed - the Background Helper
Reminders and Web Intake are placed in a queue and handled by a small background helper. Installing the helper lets them run on schedule even when the Happy Dog Software Clipper and Salon window is closed.
The first time you launch the app it asks “Install the background service?” - click Yes and the helper is set up automatically. It then quietly checks for and sends due reminders and new intake every few minutes.
Open Settings ⚙ › Background Service to install, remove, or run it
on demand, and to confirm it's installed. (The helper's scripts also live in
%APPDATA%\ClipperSalonCRM\service.) It's a Scheduled Task, so it
won't show up in services.msc - see
Background Service - where is it?
✉ Emails
The Emails module allows you to:
- Compose - send individual emails to a customer
- Email Blast - send one message to multiple customers at once, with optional status filter
- Sent Log - view all previously sent emails with subject, recipient, and status
📥 Web Intake (QR Sign-up)
Web Intake lets new clients add themselves. You display a QR code (on a flyer, your window, or a business card). Scanning it opens the customer's email app, already addressed to you with the subject filled in and a short template in the message (Name, Email, Phone, Address, Preferred days, Preferred times, Notes). They fill it in and hit send. Happy Dog Software Clipper and Salon checks your inbox and lists each new email under the Intake menu, where you review it and either Approve (which adds them as a customer) or Dismiss it.
One-time setup
Click the gear icon, then choose Web Intake from the left menu.
Tick the checkbox at the top of the page.
This is the email account that will receive the submissions - it can be the same
address you use for sending, or a dedicated one. Fill in the Host, Port, Username, and
Password. As with SMTP, most providers require an App Password (not your
normal login password). Leave Folder as INBOX and Security as
SSL/TLS (port 993) unless your provider says otherwise.
Shortcut: if submissions come to the same address you already send from,
click “Use my SMTP settings” at the top of the page. It copies
the username and password from your SMTP settings and fills in the matching host (for
example smtp.gmail.com → imap.gmail.com). Check the host
looks right for your provider, then Save.
This is the address the QR code writes to - the one customers email. Leave it blank to use the
IMAP username above. The Subject Tag ([HDCRM-INTAKE] by default) is what
the app looks for, so only tagged emails are read.
Click Save. You can then click Check mailbox now to test the connection.
The same page shows your QR code and the address it emails. Click Print QR Code to print a ready-to-post sign - choose whether your company logo, your company name, or nothing (QR only) appears above the code. Customers can also just email that address with the subject tag by hand.
So the mailbox is checked automatically every few minutes even when the app is closed, make sure the background helper is installed - the app offers this the first time you open it (the same helper used for reminders). Without it, use the Check mailbox now button on the Intake page while the app is open.
Common IMAP servers
| Provider | IMAP Host | Port | Security |
|---|---|---|---|
| Gmail | imap.gmail.com | 993 | SSL/TLS |
| Outlook.com / Microsoft 365 | outlook.office365.com | 993 | SSL/TLS |
| Yahoo Mail | imap.mail.yahoo.com | 993 | SSL/TLS |
Username and password are the same App Password you would use for SMTP with that provider. Turn on the provider's 2-Step Verification first, then generate an App Password for “Mail”.
Reviewing submissions
New submissions appear under Intake in the sidebar (with a red count badge). Open it to see each lead's contact details. For each one:
- Approve - adds the person as a customer. If a customer with the same email already exists, their submission is attached to that existing customer (their stated preferred days/times are appended to the customer's notes) instead of creating a duplicate.
- Dismiss - discards the submission without adding anyone.
[HDCRM-INTAKE] by default), so it will not disturb the rest of your inbox. For the
tidiest setup, point it at a dedicated mailbox or an inbox rule/folder for intake.
☍ Reports & Exports
Export any dataset as a CSV file compatible with Excel and Google Sheets. Clicking Export saves the file into your Downloads folder and shows you the file name; open it from there.
| Dataset | Contents |
|---|---|
| Customers | All customer records including contact info and address |
| Appointments | All scheduled appointments with customer names |
| Emails | Sent email log with subjects and delivery status |
Use the Preview button to review data in the browser before downloading. Filters for status and date range are available on the Customers and Appointments datasets.
⏰ Time Clock
The Time Clock module lets staff track work hours directly within Happy Dog Software Clipper and Salon.
Clocking In and Out
Click Clock In on the Time Clock page. Optionally add a note (e.g. task description). Your session start time is recorded immediately.
Click Clock Out when done. Duration is automatically calculated in minutes. You can optionally add or update your shift note.
Viewing Time Entries
- Each user sees their own last 30 entries.
- Admins see all employees' last 100 entries on the same page.
- Duration is shown in hours and minutes (e.g. 2 h 15 m). An active (un-clocked-out) entry shows Active.
👤 User Management
Administrators can manage user accounts from the Users page.
Roles
| Role | Capabilities |
|---|---|
| Admin | Full access: manage all users, view all data, configure SMTP and settings |
| User | Access to Customers, Schedule, Emails, Reports. Cannot manage users or SMTP settings. |
Managing Users
Go to Users page and click New User. Set username, display name, password, and role.
Admins can reset any user's password. Users can change their own from Settings ⚙ › User Settings.
Edit the user and uncheck Active. Deactivated users cannot log in but their data is preserved.
⚙ Settings
Access the Settings page by clicking the cog icon ⚙ in the top-right corner of any page.
| Section | Who can access | Description |
|---|---|---|
| User Settings | All users | Update display name; link to change password |
| SMTP Settings | Admins only | Configure outbound email server (host, port, credentials) |
| Text Settings | Admins only | Default email signature and welcome message placeholders |
| Application Preferences | Admins only | Turn the login screen on, turn the Time Clock on, edit the service types |
| Web Intake | Admins only | Intake mailbox, subject tag, and your QR code (with a printable sign) |
| Background Service | Admins only | Install/remove the helper that sends reminders while the app is closed |
| Update | Admins only | Shows your version and checks for a newer one |
Background Service - where is it?
Open Settings ⚙ › Background Service to see whether the helper is installed, and to Install, Remove, Run now, or reinstall it - no command line needed.
services.msc. And because it runs for about a second every
5 minutes and then exits, you will rarely catch it in Task Manager. To see it outside the app, open
Task Scheduler (taskschd.msc) and look for
ClipperSalonCRM Message Service.
Turning the login screen on
Happy Dog Software Clipper and Salon opens straight to the Dashboard - there is no login screen out of the box. That suits the usual setup: one computer at the front desk, used by the people who work there. The app only listens on that computer and is not reachable from the internet.
If more than one person uses the machine and you want separate accounts and a sign-in, open Settings ⚙ › Application Preferences and untick Disable login.
admin / ClipperSalonCRM - the same on every install, so
anyone could look it up. That page shows you the current sign-in and tells you whether it is
still the default. Change it under Settings › Users, then turn the login screen
on. If you switch it on without knowing the password, you will be locked out of your own data.
Updating Happy Dog Software Clipper and Salon
Open Settings ⚙ › Update. It shows the version you're running and a Check for Updates button, which asks the Happy Dog Software site whether a newer release is out. If there is one, you get a download link; run the installer over your existing install.
%APPDATA%\ClipperSalonCRM) - separate from the installed program in
Program Files. Installing a new version replaces only the program files, so customers,
appointments, SMTP/messaging settings, and your license are all preserved. Uninstalling does not
remove that data folder either.
🔑 License
Open Settings ⚙ › License to see whether Happy Dog Software Clipper and Salon is currently licensed, view your license key, and see where the license file is stored on this computer.
Applying a license
From the License page, click Apply License. You can activate either way:
- License picture - the PNG image you received when you purchased. Drag it onto the Apply License page. The app copies it into your license folder and stays licensed for as long as that file remains there.
- License key - the XXXX-XXXX-XXXX-XXXX code from your purchase email, typed in directly.
What "Not licensed" means
An unlicensed install still works, with a cap on the number of appointments you can create. Once a valid license picture or key is applied, that cap is lifted immediately - no restart needed.
Haven't purchased yet? The License page has a Purchase a License link that opens the Happy Dog Software store in your browser.
✉ SMTP Email Setup
To enable outbound email, configure your SMTP server in Settings ⚙ › SMTP Settings.
Gmail (App Password)
| Field | Value |
|---|---|
| SMTP Host | smtp.gmail.com |
| SMTP Port | 587 |
| Username | youraddress@gmail.com |
| Password | 16-character App Password (not your Gmail password) |
| From Address | youraddress@gmail.com |
Microsoft 365 / Outlook
| Field | Value |
|---|---|
| SMTP Host | smtp.office365.com |
| SMTP Port | 587 |
| Username | youraddress@yourdomain.com |
| Password | Your Microsoft account password or App Password |
%APPDATA%\ClipperSalonCRM\crm.db). Ensure the database file
is protected with appropriate Windows file permissions.
Environment Variable Override
SMTP settings can also be provided via environment variables (take effect immediately, override the database values):
set SMTP_HOST=smtp.gmail.com
set SMTP_PORT=587
set SMTP_USER=you@gmail.com
set SMTP_PASSWORD=yourapppassword
set FROM_ADDRESS=you@gmail.com
set FROM_NAME=Happy Dog Software Clipper and Salon
📄 Environment Variables
| Variable | Default | Description |
|---|---|---|
ADMIN_USERNAME | admin | Default admin username (seeded on first run) |
ADMIN_PASSWORD | ClipperSalonCRM | Default admin password (seeded on first run) |
SECRET_KEY | built-in dev key | Flask session secret - set this in production |
SMTP_HOST | empty | SMTP server hostname |
SMTP_PORT | 587 | SMTP server port |
SMTP_USER | empty | SMTP authentication username |
SMTP_PASSWORD | empty | SMTP authentication password |
FROM_ADDRESS | empty | Sender email address |
FROM_NAME | Happy Dog Software Clipper and Salon | Sender display name |
SECRET_KEY to a long random string
in any shared or network-accessible deployment. Without it, sessions are
signed with a weak default key.
🗃 Data Storage
Database Location
When running as a packaged executable, the database is stored in:
%APPDATA%\ClipperSalonCRM\crm.db
This ensures your data survives application updates. To find this folder quickly, paste the path into Windows Explorer's address bar.
Backup
To back up your data, simply copy crm.db to a safe location.
The database is a standard SQLite file and can be opened with any SQLite viewer
(e.g., DB Browser for SQLite).
Tables in the Database
| Table | Contents |
|---|---|
customers | Customer records and contact details |
appointments | Scheduled appointments |
emails | Sent email log |
users | User accounts and hashed passwords |
settings | Application settings (SMTP, text templates) |
🔧 Troubleshooting
Ensure all files in the ClipperSalonCRM\ folder are present.
Run ClipperSalonCRM.exe from a command prompt to see error output.
Antivirus software may need to whitelist the executable.
Use http://127.0.0.1:5000 instead of localhost:5000.
Windows sometimes does not resolve localhost to the loopback address.
Check Windows Defender Firewall if the port is blocked.
Verify SMTP credentials in Settings › SMTP Settings. For Gmail, make sure you are using an App Password, not your main password. 2-Factor Authentication must be enabled on your Google account first.
Set the ADMIN_PASSWORD environment variable to a new value,
then delete the existing admin record from the database
(or rename crm.db) so it gets re-seeded on next launch.
Alternatively, open crm.db with DB Browser for SQLite and
update the password_hash field directly.
This error can appear if the application was built on a machine with Microsoft Store Python
and is run on a machine without Python installed.
The DLL is now bundled inside _internal\python313.dll - ensure
the entire ClipperSalonCRM\ folder is copied, not just the .exe.
Pass a different port: ClipperSalonCRM.exe --mode localhost --port 8080.
The application also auto-detects a free port if 5000 is busy.
❓ FAQ
Can multiple users access Happy Dog Software Clipper and Salon at the same time?
Yes - when run in localhost mode, any computer on the same local
network can access the app by navigating to http://<host-IP>:5000.
Each user needs their own account created by an administrator.
Is my data sent to the cloud?
No. Happy Dog Software Clipper and Salon runs entirely on your local machine. No data is sent externally except outbound email via your configured SMTP server.
Can I import existing customer data?
Currently there is no built-in CSV import. You can insert records directly into the SQLite database using a tool like DB Browser for SQLite.
How do I update the application?
Replace the ClipperSalonCRM\ folder with the new version.
Your database at %APPDATA%\ClipperSalonCRM\crm.db is not touched
during updates.
Can I run this without an internet connection?
Yes. All features except SMTP email sending work fully offline.