Happy Dog CRM
A lightweight, self-hosted Customer Relationship Management application built for small pet-service businesses. Manage customers, schedule appointments, send emails, and export reports, all from one place.
🆕 Version 2.0.8🆕 New in Version 2.0.8
- 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.
- Pickup notifications. After you mark an appointment complete, its page has a Send Pickup Notification button that emails (and texts) the customer that their dog is ready.
- Editable message templates. Settings › SMTP and Settings › Messaging each have Pickup and Day-Before Reminder templates you can word yourself.
🆕 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.
- “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, kennel 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): display a QR code 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 review.
- Messaging › Emails now share one consistent layout (Compose, Email Blast, Send SMS, Sent Log), and the Email Blast editor matches the single-email editor.
- Printing from the Dashboard (invoice, kennel card, daily schedule) opens the print dialog right in the app window.
💾 Installation
HappyDogCRM-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 HappyDogCRM-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\HappyDogCRM\ with Start Menu shortcuts
created automatically.
Leave Launch Happy Dog CRM 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: HappyCRM
Command-Line Options
You can pass flags directly to the executable (installed at
C:\Program Files\HappyDogCRM\HappyDogCRM.exe) to skip the
interactive prompt:
HappyDogCRM.exe # interactive prompt (default)
HappyDogCRM.exe --mode webview # desktop window via pywebview
HappyDogCRM.exe --mode localhost # open in default browser
HappyDogCRM.exe --mode localhost --port 8080 # custom port
🚀 First Launch
On first run, Happy Dog CRM automatically:
- Creates the database file at
%APPDATA%\HappyDogCRM\crm.db - Seeds the database with sample customers, appointments, and dog behavior values
- Creates the default
adminaccount
%APPDATA%\HappyDogCRM\ 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 | HappyCRM |
| Role | Admin |
To change the default credentials at startup, set environment variables before launching:
set ADMIN_USERNAME=myadmin
set ADMIN_PASSWORD=MySecurePass123
HappyDogCRM.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, then:
Records the visit as done and adds its price to the customer's lifetime value.
A follow-up screen appears pre-filled to match the customer's usual day, time, and visit frequency. Pick how many weeks out (it snaps to their usual day), adjust if needed, and book — or choose No thanks.
☺ Customers
The Customers module stores all client information including:
- Full name, email, phone number
- Physical address (street, city, state, ZIP)
- Dog details: name, breed/type, behavior category, and notes
- Status (Lead / Prospect / Active / Churned)
- 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 CRM 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 CRM window is closed.
The first time you launch the app it asks “Install the Happy Dog CRM background service?” — click Yes and the helper is set up automatically, then quietly sends due reminders and picks up new intake every few minutes.
The helper's scripts live in the service folder inside your data folder
(%APPDATA%\HappyDogCRM\service). Double-click install_service.bat
there to add it, or uninstall_service.bat to remove 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, Dog name, Dog breed, Preferred days, Preferred times, Notes). They fill it in and hit send. Happy Dog CRM checks your inbox and lists each new email under the Intake menu, where you review it and either Approve (which adds the customer and their dog) or Dismiss it. No website or sign-up form is involved — it's just email.
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 submissions. Fill in the Host, Port,
Username, and Password. As with SMTP, most providers require an App 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.
The address the QR code writes to — the one customers email. Leave blank to use the IMAP
username. The Subject Tag ([HDCRM-INTAKE] by default) is what the app
looks for, so only tagged emails are read.
Click Save Web Intake Settings, then Check mailbox now to test the connection.
The 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 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).
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 |
Reviewing submissions
New submissions appear under Intake in the sidebar (with a red count badge). For each:
- Approve — adds the person as a customer and their dog. If a customer with the same email already exists, the dog is attached to them instead of creating a duplicate.
- Dismiss — discards the submission without adding anyone.
[HDCRM-INTAKE] by default), so it won't disturb the rest of your inbox.
☍ 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 address and dog details |
| Appointments | All scheduled appointments with customer names |
| Emails | Sent email log with subjects and delivery status |
| Dog Behaviors | Reference table of behavior categories |
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 CRM.
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, or Run now — no command line needed.
services.msc. It runs for about a second every 5 minutes and exits, so you'll rarely
see it in Task Manager. To find it outside the app, open Task Scheduler
(taskschd.msc) and look for HappyDogCRM Message Service.
Turning the login screen on
Happy Dog CRM 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 / HappyCRM — 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 CRM
Open Settings › Update. It shows the version you're running and a Check for Updates button that asks the Happy Dog Software site whether a newer release is out. If there is one, download it and run the installer over your existing install.
%APPDATA%\HappyDogCRM) — separate from the installed program.
Installing a new version replaces only the program files, so customers, appointments, settings, and
your license are all preserved.
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%\HappyDogCRM\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 CRM
📄 Environment Variables
| Variable | Default | Description |
|---|---|---|
ADMIN_USERNAME | admin | Default admin username (seeded on first run) |
ADMIN_PASSWORD | HappyCRM | 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 CRM | 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%\HappyDogCRM\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 dog details |
appointments | Scheduled appointments |
emails | Sent email log |
dog_behaviors | Behavior categories (Good, Bad, Problematic) |
users | User accounts and hashed passwords |
settings | Application settings (SMTP, text templates) |
🔧 Troubleshooting
Re-run HappyDogCRM-windows-setup.exe to repair the
installation. Run HappyDogCRM.exe from a command prompt
(in C:\Program Files\HappyDogCRM\) 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.
Emails not sendingVerify 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.
Everything the application needs, including this DLL, is bundled inside
the single HappyDogCRM.exe installed by the setup wizard.
If you see this error, re-run HappyDogCRM-windows-setup.exe
to repair the installation.
Pass a different port: HappyDogCRM.exe --mode localhost --port 8080.
The application also auto-detects a free port if 5000 is busy.
❓ FAQ
Can multiple users access Happy Dog CRM 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 CRM 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?
Download and run the latest HappyDogCRM-windows-setup.exe;
it upgrades the existing installation in place. Your database at
%APPDATA%\HappyDogCRM\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.