Documentation
Set up WPNeedleFlow
From an empty WordPress site to taking your first online booking with a deposit. Most studios are running the same afternoon they install it.
Before you install
What your hosting needs
Nothing unusual, and nothing you have to buy. If your site runs a current WordPress on normal shared hosting, it will run this.
| What | Minimum | What we run on |
|---|---|---|
| WordPress | 6.0 or newer | 6.6 |
| PHP | 7.4 or newer | 8.1 or 8.2 |
| Database | MySQL 5.7+ or MariaDB 10.3+ | Whatever your host gives you |
| HTTPS | Required | Free with most hosts |
| Outbound HTTPS | Your site must be able to reach wpneedleflow.com | For the license and updates only |
| WordPress cron | Working, so reminders send on time | A real server cron is better on a quiet site |
| Memory | 128 MB | 256 MB is comfortable |
No extras to buy
WooCommerce is not required
WPNeedleFlow is standalone. You do not need WooCommerce, a page builder, a membership plugin or a CRM. It works alongside them if you already have them.
Any theme
Built and tested on Divi 4
The booking widget and the Studio Panel are self-contained, so they inherit your site rather than fight it. If your theme does something unusual, tell us before you buy and we will look.
Not sure?
Send us your host name
Write to us with who hosts you and your PHP version — both are in WordPress under Tools → Site Health → Info — and we will tell you honestly whether it will run well.
Step one
Install and activate
WPNeedleFlow installs like any other WordPress plugin. You need a WordPress site on HTTPS — card payments and ID uploads require it.
Download the plugin
Sign in to your account here and download the zip from your licenses and downloads.
Upload it
In your site: Plugins → Add New → Upload Plugin → choose the zip → Install Now → Activate.
Enter your license key
Paste the key from your account. This is what turns on one-click updates. The plugin works without it, but it will not update itself.
Step two
First-run setup
A wizard walks you through the things nothing else can guess. You can change all of it later.
Your shop
Studio profile
Studio name, logo, phone, email and address. The name and logo appear on booking confirmations, gift cards, consent forms and receipts.
Where you work
Locations
Add each shop with its own address, phone, tax rate and time zone. Running one shop? Add it anyway — the booking widget hides the location step automatically when there is only one.
When you are open
Hours & closures
Studio default hours per location, then per-artist hours where they differ. Add holidays as closures so nobody can book them.
What you sell
Services & products
Each service gets a price, a duration in hours and minutes, a deposit, and whether it is tattoo or piercing. Products can carry variants, stock and a SKU.
Who does it
Artists
Add each artist with their discipline, hours and locations. Link them to a WordPress user if they need to log in and see their own book.
The rules
Booking settings
Slot interval, default duration, how far ahead people can book, how much notice you need, whether a deposit is required, and how long an unpaid hold lasts.
Do this before you take a booking
Make email actually arrive
WordPress sends mail through your web server by default, and confirmations sent that way land in spam or vanish silently — a booking nobody was told about is worse than no booking. Install an SMTP plugin and point it at a real mail service. FluentSMTP is the one to reach for: it is entirely free with no paid tier, and it logs every message at no cost, so when a client says they never got their confirmation you can look instead of guess. WP Mail SMTP is just as solid for sending, but its email log is a paid feature. Send yourself a test from the plugin before you go live.
Step three
Put it on your site
Everything customer-facing and staff-facing is a shortcode. Drop each one on a page — in Divi, a Code module works fine.
For customers
[xis_booking]
The booking widget. The setup wizard creates this page for you. Add [xis_booking_button] under an artist’s gallery to open the flow locked to that artist.
For customers
[xis_client_portal]
My Account for clients — appointments, cancel or reschedule, sign consent, update details and text consent.
For staff
[xis_calendar]
The Studio Panel: appointment book, inbox, register, clients, schedules, reports, forms and settings. Put this on a full-width page with no sidebar.
For staff
[xis_pos]
The register on its own page, if you want it separate from the panel — useful on a dedicated till machine.
For the door
[xis_checkin] and [xis_lobby]
A self check-in screen for a tablet by the door, and a waiting-room display showing who is up next.
For stock
[xis_scanner]
Turns a phone into a barcode scanner paired to the register. Optional — there is a built-in scanner page if you would rather not make one.
Money
Deposits and card payments
You connect your own Square or Stripe account. Payments go straight to you at your own processing rate — we never sit in the middle.
Either one
Square or Stripe
Enter your keys in settings and choose which gateway takes online deposits. Both can also charge a card on the device at the register. Your credentials come from Square’s Developer Console or Stripe’s API keys page.
Test first
Sandbox mode
Both gateways have a test mode — Square Sandbox and Stripe test cards. Run a booking and a sale end to end with test cards before you switch to live keys.
Stripe only
Add the webhook
Point a Stripe webhook at the address shown on the settings screen for the payment-succeeded event, and paste the signing secret back in. This is what rescues a payment where the customer’s browser closed mid-checkout.
Cash too
Drawer, tips and splits
Set your cash float per location and open a drawer at the start of a shift. Tips, split payments and refunds all reconcile into the Z-report at close.
Messaging
Text messages
Texts are optional. Without them everything still works and goes out by branded email instead.
Your account
Connect Twilio
Open a Twilio account, buy a sending number, then copy your Account SID and Auth Token from the Twilio Console into settings. You are billed by Twilio directly for what you send.
Do not skip this
Paste the reply webhook
Copy the inbound address shown on the settings screen into your Twilio number’s messaging webhook configuration. Without it, a customer replying STOP is not unsubscribed — and being able to honour STOP is a legal requirement, not a nicety.
Your words
Edit the templates
Confirmation, reminder, aftercare, review request, missed appointment and running-behind are all editable with merge tags, with a live preview and a real count of what each message will cost to send.
Proof
The notification log
Every message with its status, retries and errors. You can also have it clear finished entries automatically after a number of days.
Your team
Staff and access
Four tiers, enforced on the server. Nobody sees more than their role allows, whatever they type into the address bar.
| Role | Can do | Cannot do |
|---|---|---|
| Administrator | Everything, including payment keys, license and destructive actions | — |
| Manager | All appointments, clients, reports, products, services and the register | Payment keys, license, importing, deleting consent records |
| Front desk | The day’s book, check-in, all appointments, taking payment, the register | Reports, products and services, settings |
| Artist | Their own book and schedule, check-in and payment for their own clients, consent | Other artists’ calendars, reports, settings, the client book |
Moving in
Importing from Booknetic
Administrators only. Nothing is emailed or texted to your customers during an import.
Export from Booknetic
Export customers and appointments as CSV.
Upload both files
The importer reads them and shows you what it found.
Map services and staff
Match theirs to yours, create the missing ones, or skip what you no longer offer.
Run the dry run
See exactly what will be created, reused and skipped before anything is written.
Import, then check
Spot-check a few appointments and clients. If it is wrong, roll the whole batch back and adjust your mapping.
Staying current
Updates and your license
One click
Normal WordPress updates
With your key entered, new versions appear on your Plugins and Updates screens like any other plugin.
Not seeing one?
Force a check
WordPress caches update information for hours. Dashboard → Updates → Check Again asks immediately.
Where you stand
The License panel
Administrators see the key, the days remaining and a renew button inside the Studio Panel settings — no need to go hunting through WordPress admin.
If it lapses
Nothing breaks
The plugin keeps running. You stop receiving updates and support until you renew. There is no lockout and nothing is deleted.
When something is off
Troubleshooting
In order of how often each one turns out to be the answer.
My change is not showing on the site
Caching, almost every time. Purge your host’s cache, then hard-refresh your browser. If you are on a host with a speed or optimiser plugin, clear that too. If it is a code change that will not take effect, deactivate and reactivate the plugin — some hosts hold the old copy in memory.
Buttons in the booking form or register do nothing
A speed plugin is combining or deferring JavaScript. Switch that option off, clear the cache and reload. This breaks the booking widget and the register specifically because they need their scripts to load in order.
The Studio Panel or register looks squashed
The page is using a boxed row. Set the page to a full-width template and the row to full width in your builder. No amount of custom CSS will widen a boxed row.
Deposits are not being taken
Check that a deposit is required in settings, that the service has a deposit amount, that your gateway keys are entered, and that you are on HTTPS. A $0 service deliberately skips the payment step.
Customers say they never got a reminder
Open the notification log. Every attempt is there with its status and any error. Common causes are texts not switched on, the customer never having agreed to texts, a customer who replied STOP, or WordPress’s scheduler not running on a quiet site — on a low-traffic site, set up a real cron job to hit wp-cron.php.
Confirmation emails are not arriving
Almost always WordPress mail, not the plugin. By default WordPress hands mail to your web server, which most inboxes do not trust, so it is filed as spam or dropped without a bounce. Install FluentSMTP or WP Mail SMTP, connect a real mail service, and send their test message. FluentSMTP logs every send for free, which tells you in one screen whether the message left your site at all — that single fact splits the problem in half.
An artist cannot see their appointments
Their WordPress user is probably not linked to their artist record. Open the artist on the Team screen and link the account. An unlinked account deliberately sees nothing rather than everything.
A time slot is offered that should not be
Check that artist’s hours for that location, their time off, and your closures. Hours are per artist and per location, so an artist can be open at one shop and closed at another on the same day.
One plugin. Your whole studio.
Everything included, for one flat annual license — unlimited staff and locations.
