Everything you need to run JavisTab,
from install to launch night.
The complete setup guide for the JavisTab Booking Pro WordPress plugin — installation, shortcodes, floor plan, payments (VietQR · Stripe · PayPal · OnePay · Square), CRM & loyalty, and every option in Settings.
Get started in 5 min
Install the plugin, activate your license, drop a shortcode, take your first booking.
Start here →All 7 shortcodes
Booking form, lookup, floor plan, availability calendar, currency & language switcher.
Browse →Payments & VietQR
Stripe, PayPal, Square, OnePay, Razorpay — plus VietQR with zero merchant fees.
Configure →Email & SMS reminders
Automated confirmations & T–24h reminders. Cut no-shows from 18% to under 6%.
Set up →Section 01 — Getting StartedInstall JavisTab in 5 minutes
JavisTab is a standard WordPress plugin. No developer required, no server configuration. If WordPress is already running, follow the six steps below — you’ll be taking bookings before the kettle boils.
System requirements
JavisTab runs on shared hosting, VPS, and managed platforms (WP Engine, Kinsta, SiteGround, Cloudways) without custom server configuration. WooCommerce is not required.
- WordPress 5.8 or newer
- PHP 7.4+ (8.1+ recommended)
- MySQL 5.7+ or MariaDB 10.3+
- HTTPS required for payment gateways
- Outbound HTTPS for license verification (api.digitalzila.com)
Installation
Download the plugin ZIP
Register at javistab.com — you receive javis-bookingpro.zip and a license key by email within 60 seconds.
Upload via WordPress admin
WordPress Admin → Plugins → Add New → Upload Plugin. Choose the ZIP, click Install Now, then Activate.
Database auto-creates
On activation, all required tables are created automatically — bookings, customers, payments, vouchers, loyalty, waitlist, email log. No manual SQL needed.
Open the Booking Pro menu
A new Booking Pro entry appears in the WordPress sidebar with all sub-pages: Dashboard, Bookings, Settings, License, etc.
Activate your license
Go to Booking Pro → 🔑 License, paste your key and the purchase email, click Activate. Or start a free 15-day trial — no key needed.
Run the setup wizard
The wizard walks you through restaurant name, currency, opening hours, first floor plan, and your first time-slot — about 4 minutes end-to-end.
Free 15-day trial · no credit card
Open the License page and click 🎁 Start 15-day Free Trial. JavisTab auto-generates a trial key bound to your domain — full access to booking form, floor plan and all four payment gateways. CRM, loyalty & SMS unlock on paid plans from $19.90 / 30 days.
Where to find your license key
The license key is sent to the email you registered with, in the order titled “Your JavisTab license is ready”. If you upgraded later, the key in your account dashboard at javistab.com/account always reflects the active tier.
First-run setup wizard
The wizard at ?page=rbp-wizard bundles the six steps every restaurant needs before going live:
| Step | What you set |
|---|---|
| 1. Business profile | Restaurant name, address, timezone, currency, default language. |
| 2. Opening hours | Weekly schedule, holidays, max advance booking days, lead time. |
| 3. Floor plan | Drag & drop rooms and tables (square, round, booth), seat counts. |
| 4. Time slots | Lunch / dinner shifts, capacity mode (by_tables or by_guests). |
| 5. Payments | Pick at least one gateway. VietQR works without a merchant account. |
| 6. Notifications | Email sender, optional SMS or WhatsApp provider. |
Section 02 — ShortcodesDrop a shortcode anywhere
Every JavisTab front-end widget is a shortcode. Paste into a Gutenberg block, Classic editor (Text/HTML mode), Elementor’s Shortcode widget, or Divi’s Code module — JavisTab renders instantly. Each shortcode is fully self-contained: it brings its own styles, scripts and REST endpoints.
Reading the shortcodes below
Throughout this guide, shortcode names are shown with a hyphen — e.g. [rbp_booking-form] — so WordPress doesn’t render them as live widgets inside this documentation page. When you paste a shortcode into your own page, replace the hyphen with an underscore: [rbp_booking-form] → [rbp_booking-form]. The Copy button on each example already gives you the working underscore version.
Per-page language override. Force a specific language on any individual page regardless of the global plugin setting:
[rbp_booking-form lang="en"] [rbp_booking-form lang="vi"] [rbp_booking-form lang="fr"] // also: zh, zh_TW, ja, ko, de, es, it, id, pt, pt_BR
// default [rbp_booking-form] // pick a restaurant + force French locale [rbp_booking-form restaurant_id="2" lang="fr"]
[rbp_booking-lookup]
[rbp_table-layout restaurant_id="1"] // new alias (same widget): [rbp_resource-allocation date="2026-06-15"]
[rbp_availability-calendar] // REST equivalent (mobile app integration): GET /wp-json/rbp/v1/availability?restaurant_id=1&date=2026-06-15
[rbp_booking-confirmation]
[rbp_currency-switcher style="dropdown"] [rbp_currency-switcher show_flag="1" align="right"] [rbp_lang-switcher]
Section 03 — SettingsConfigure the booking engine
Every option lives under Booking Pro → Settings. Changes save instantly; the front-end picks them up on the next page load. No cache flush needed.
General
| Setting | Purpose | Default |
|---|---|---|
restaurant_name | Shown in emails, vouchers, invoices, the booking form header. | — |
timezone | All booking times are stored UTC and displayed in this zone. | Site default |
currency | Base currency for prices, invoices & deposits. | VND |
default_language | Fallback when no lang= override is set on the shortcode. | en |
capacity_check_mode | by_tables for à-la-carte; by_guests for buffet / set menu. | by_tables |
full_slot_label | Text shown when a time slot is sold out. | “Fully booked” |
Time slots
A slot is a serving window (e.g. Lunch 12:00, Dinner 18:30). Create one per shift and choose how capacity is counted:
- by_tables — the slot is full when all tables for that slot are booked. Standard à la carte.
- by_guests — the slot is full when total guests reach
max_guests. Buffet, brunch, set menu.
Floor plan
Drag-and-drop editor lets you build a pixel-accurate map of your venue. Tables snap to a 20px grid; round / square / booth shapes; per-table seat count, minimum party size, deposit override. Multi-floor and multi-room supported out of the box.
Live status colours
The floor plan auto-polls every 30s. Green = available · gold = booked · slate = locked · sage = seated. Status updates the moment a reservation is confirmed — no double-booking, no “shouting across the room” to check capacity.
Booking rules
| Rule | Description |
|---|---|
lead_time_minutes | Minimum minutes between submission and reservation time (e.g. block bookings less than 60 min ahead). |
max_advance_days | How far in the future guests can book. 90 days is a sensible default. |
cancellation_window_hours | Guests can self-cancel via the Lookup widget within this window — outside, contact required. |
min_party_size / max_party_size | Global guards. Per-table overrides also supported. |
deposit_required_above | Party size threshold (e.g. ≥ 8 guests) at which a deposit becomes mandatory. |
blacklist_block | Auto-reject bookings from emails / phone numbers flagged in CRM. |
Packages & services
Sell set menus, tasting menus, brunch packages, classes or any “bookable thing”. Each package has a name, description, image, price-per-guest (or flat), eligibility rules (which days / slots), and an optional capacity cap.
Design & skin
Two skins ship in the box, both 100% white-label.
Standard
Clean modern minimal — neutral palette, neutral typography. Matches any theme.
Luxury Heritage
Parchment + burgundy + bronze. Playfair Display + Cormorant Garamond + Jost. Designed for fine-dining brands.
Both inherit your brand colour, border radius, button shape and slot-card colour from Settings → Design.
Section 04 — PaymentsSix gateways. Zero added fees.
JavisTab charges zero transaction fees on top of your gateway’s own rates — unlike many competing plugins that add 2–3% surcharge. Pick any combination; guests choose at checkout.
VietQR — no merchant account needed
Enter your Vietnamese bank account number + bank code under Settings → Payments → VietQR. JavisTab uses the VietQR.io API to dynamically render a QR with the booking ref in the memo line — your bank app picks it up, JavisTab matches the transfer to the booking by ref & amount.
Works with every Vietnamese bank
Vietcombank, Techcombank, BIDV, VietinBank, MB, ACB, VPBank, Sacombank, TPBank, MSB — all 40+ banks supported. No merchant account, no setup fees, no monthly fees. The bank’s standard inter-bank transfer fee (₫0–₫3,300) applies to the customer’s transfer only.
Stripe
Get your publishable key + secret key from Stripe Dashboard → Developers → API keys. Paste into Settings → Payments → Stripe, save, and JavisTab renders the Stripe Elements widget at the payment step. 3-D Secure handled automatically; Apple Pay & Google Pay surface on supported devices.
// Webhook URL to paste into Stripe Dashboard https://your-domain.com/wp-json/rbp/v1/stripe/webhook // Events to subscribe to: payment_intent.succeeded payment_intent.payment_failed charge.refunded
PayPal
Connect with PayPal REST API credentials (Client ID + Secret) from your PayPal developer dashboard. Both sandbox and live modes supported; toggle in Settings.
OnePay Vietnam · Razorpay · Square
OnePay credentials come from your OnePay merchant portal (Merchant ID, Access Code, Secure Hash key). Razorpay (India) and Square (US/CA/AU/UK/IE) both use standard API key + secret pairs. Square supports Tap-to-Pay on iPhone.
Manual bank transfer
If you’d rather not integrate any gateway, JavisTab supports a manual flow: customer sees your bank details on the confirmation page, transfers, then clicks “I confirmed my transfer”. The booking moves pending_payment → pending and the admin gets a single notification email (deduplicated in v5.9.14 — see Changelog).
HTTPS is required
All gateway SDKs refuse to render over plain HTTP. If you see “gateway not configured” in production despite valid keys, your site is almost certainly being served over HTTP somewhere. Force HTTPS in wp-config.php with define('FORCE_SSL_ADMIN', true);.
Section 05 — NotificationsEmail · SMS · Reminders
One booking can fan out across three channels — guest confirmation email, admin alert, and an SMS reminder 24h before. All template-driven, all toggled per channel.
Email templates
JavisTab ships with 12 transactional email templates: booking confirmed, payment received, booking modified, reminder T-24h, no-show alert, cancellation, refund issued, waitlist promoted, and four admin variants. Each template is editable in Settings → Email Templates with merge tags like {{guest_name}}, {{booking_ref}}, {{table}}, {{voucher_link}}.
SMS
Optional. Plug in Twilio, eSMS.vn, Viettel SMS Brandname, or VietGuys. Per-message cost passes through; JavisTab never marks up.
Reminders & ICS
The reminder engine runs on WP-Cron every 5 minutes. Default schedule: booking confirmed → instant email · T–24h → reminder email + SMS · T–2h → optional SMS nudge · T+1h after seating → review request. Every confirmation email carries an ICS attachment so guests can save the booking to Apple Calendar, Google Calendar or Outlook with one tap.
Section 06 — OperationsCRM, loyalty, waitlist & check-in
CRM & customers
The built-in restaurant CRM automatically builds a rich customer database from your booking data. View complete visit history, cumulative spending, personal notes, dietary preferences, no-show count and blacklist status — no manual setup required.
Zero configuration. Every booking enriches the customer profile: visit count, total spending, preferred time slots, special requests, and no-show history are all tracked automatically.
Loyalty points
Automatic. Earn rate, redemption ratio and eligibility rules are configurable under Settings → Loyalty. Points are tracked per CRM profile, redeemable at the booking step — fully transparent to the guest. Turn first-time diners into regulars without paying for a third-party loyalty CRM.
Waitlist
When a slot is full, the booking form offers “Join waitlist”. If a confirmed booking cancels or no-shows, the waitlist promotion engine auto-emails the first guest in line with a one-click confirmation link valid for 30 minutes.
QR check-in
Every booking gets a unique QR code printed on the voucher. Scan with the in-admin QR scanner page on a tablet at the host stand — booking flips to seated, the floor plan turns sage green, and the loyalty points credit drops into the customer’s account.
Invoices & vouchers
Generate professional printable invoices from any booking. Invoices include complete booking details, package, payment information, customer data and your restaurant branding. From v5.9.14, the invoice view also carries a 🎫 View Voucher quick-link so admins can print/save both as PDF in one workflow — using the browser’s native “Save as PDF”, no PDF library required.
Marketing & auto-review capture
After each booking a star-rating email goes out. 4–5★ responses redirect directly to your Google Business Profile review page. 1–3★ responses send a private alert — with guest name, phone and booking ref — to management before the review goes public. Reputation management, automated.
Section 07 — ReferenceREST API & languages
REST API
JavisTab exposes a clean REST API under /wp-json/rbp/v1/ — useful for mobile apps, custom dashboards, BI tools and Zapier-style automations.
| Endpoint | Method | Purpose |
|---|---|---|
/availability | GET | Slot list for a date · ?restaurant_id=&date=YYYY-MM-DD |
/bookings | POST | Create booking · returns booking_ref |
/bookings/{ref} | GET | Full booking JSON · public, no auth required |
/bookings/{ref} | PATCH | Update booking · auth required |
/bookings/{ref}/cancel | POST | Self-cancel within window |
/floor-plan | GET | Tables + live status for a date/time |
/customers/{id} | GET | CRM profile · auth required |
/stripe/webhook | POST | Stripe webhook receiver |
Supported languages
As of v5.9.14, JavisTab ships the full 169-key translation set in 13 languages. Set the global default in Settings → General → Default language; override per page with lang="…" on any shortcode.
en
🇻🇳 Tiếng Việt · vi
🇫🇷 Français · fr
🇩🇪 Deutsch · de
🇪🇸 Español · es
🇮🇹 Italiano · it
🇵🇹 Português · pt
🇧🇷 Português BR · pt_BR
🇮🇩 Bahasa · id
🇨🇳 简体中文 · zh
🇹🇼 繁體中文 · zh_TW
🇯🇵 日本語 · ja
🇰🇷 한국어 · ko
Troubleshooting
| Symptom | Cause & fix |
|---|---|
| Form doesn’t render — page is blank | Shortcode pasted in the Visual tab not Text/HTML tab. Switch to Text editor and paste again. |
| “License invalid” on a working domain | License is bound to bare-domain. If you migrated example.com → www.example.com or HTTP → HTTPS, deactivate & reactivate the key. |
| Stripe widget shows nothing | Browser blocking js.stripe.com. Disable ad-blockers, allow third-party scripts, force HTTPS. |
| Duplicate admin email on bank transfer | Fixed in v5.9.14 (BUG-ADMIN-DUP). Update the plugin. |
| Wrong amount in “Payment received” email | Fixed in v5.9.13 (BUG-EMAIL-AMT). Update the plugin. |
Changelog highlights · v5.9.14
- New — Invoice → Voucher quick-link button (industry-standard PDF workflow, no PDF library required)
- Fixed — Duplicate admin notification email on Bank Transfer flow (BUG-ADMIN-DUP)
- Fixed — “Attach voucher to email” setting description updated to reflect v5.9.12 inline-button behaviour
- v5.9.13 — Complete translations for zh / ko / zh_TW / ja / fr / de (was BUG-LANG-5)
- v5.9.13 — Payment-received email now shows per-transaction amount, not cumulative (BUG-EMAIL-AMT)
Full changelog with engineering notes available in the plugin folder at CHANGELOG.md.
Section 08 — FAQCommon questions
Is the 15-day trial really free? Will I lose my data when it ends?
Yes — free, no credit card. Full access to the booking form, floor plan, and all four payment gateways. CRM, loyalty and SMS unlock on paid plans starting at $19.90 / 30 days. All your data (guest profiles, bookings, floor plan) carries over seamlessly when you upgrade. All paid plans include a 30-day money-back guarantee.
Does JavisTab work with my theme (Elementor / Divi / Astra / GeneratePress)?
Yes. All features render via shortcodes — no custom template required. Tested with Divi, Elementor, Astra, GeneratePress, Kadence, Blocksy and the default block themes (Twenty Twenty-Four / Five). No WooCommerce dependency.
Do I need a merchant account to accept payments in Vietnam?
No. VietQR works without any merchant account — just your bank account number and bank code. JavisTab generates a dynamic QR with the booking ref in the memo, your bank app picks it up, and the booking auto-confirms when the transfer is matched by ref + amount.
Can I use JavisTab for spas, salons, gyms or experiences — not just restaurants?
Absolutely. The capacity engine has two modes — by_tables (rename to “rooms”, “seats”, “bays”, “slots”) and by_guests (great for fitness classes capped at 12 attendees). Every label, placeholder, button text and status message in the booking form is customizable in Settings.
How does this compare to Amelia or Bookly?
Amelia and Bookly are adapted from appointment booking — they lack a real-time floor plan, VietQR, native SMS reminders, and the restaurant-specific capacity modes. JavisTab is purpose-built for booking-based hospitality & experience businesses — particularly in Vietnam and Southeast Asia where VietQR is a mainstream consumer channel.
What happens if I uninstall the plugin?
By default, deactivating leaves all your data intact (so you can reactivate without loss). The uninstall.php routine — which runs only when you click “Delete” from the WordPress plugin list — will drop all JavisTab tables. Backup before deleting if you’ll ever want the data back.
I found a bug. How do I report it?
Email [email protected] with: (1) the plugin version (Settings → Diagnostics), (2) steps to reproduce, (3) a screenshot if visual, (4) the relevant lines from wp-content/uploads/rbp-logs/error.log if any.