Documentation
Woohl Documentation
Everything you need to run Woohl: a fast Vue.js storefront on one domain and your WooCommerce store (including checkout) on a secure subdomain.
Domains & Servers
Woohl works best when you split where shoppers browse and where WordPress handles checkout. Use a main domain for the Vue storefront and a secure subdomain for WordPress, WooCommerce, the Woohl plugin, and checkout.
- Vue.js storefront (new server):
https://example.com— browsing, product pages, cart UI in Vue. - WordPress + WooCommerce (backend server):
https://secure.example.com— REST API, admin, payments, and checkout.
Why two hostnames? Your Vue app talks to WooCommerce through the Woohl plugin APIs on the secure site. Checkout stays on WooCommerce’s native flow (secure subdomain), keeping payment gateways and order handling standard.
Where we recommend hosting
- Vue.js storefront: DigitalOcean (App Platform, Droplet, or static hosting) — our recommended option. Great fit for Node-based builds and predictable scaling.
- WordPress + WooCommerce + Woohl plugin: stays on your existing server at the secure subdomain (e.g.
secure.example.com).
example.com
secure.example.com
/checkoutDNS checklist
- Point
example.com(andwwwif used) to your DigitalOcean frontend. - Create
secure.example.comas an A or CNAME record pointing to your existing WordPress server. - In WordPress Settings → General, set WordPress Address and Site Address to
https://secure.example.com. - In your Vue app
.env, set the API base URL tohttps://secure.example.com. - Configure the Woohl plugin to allow your Vue origin (
https://example.com) for CORS / allowed domains.
What is Woohl?
Woohl turns your WooCommerce store into a fast, modern headless storefront built with Vue.js. Shoppers browse on the Vue site; WooCommerce still runs products, orders, payments, and inventory on the secure subdomain.
In short: WooCommerce stays the backend (on secure.example.com); Vue.js is the customer-facing storefront (on example.com).
Who is Woohl for?
- Store owners who want better performance and Core Web Vitals without replacing WooCommerce.
- Teams who can set DNS, environment variables, and deploy a second hostname (or who work with a developer).
- Anyone who wants headless WooCommerce with checkout on the secure WordPress domain and browsing on Vue.
What you get
| Component | Role |
|---|---|
| Woohl WordPress plugin | Installed on secure.example.com. REST endpoints for auth, cart, and storefront; validates your license. |
| Vue.js storefront | Hosted on example.com (DigitalOcean recommended). Talks to the secure site via the plugin APIs. |
| License | License key with expiry, tied to your purchase. |
| Downloads | Vue.js (ZIP) and Woohl plugin (ZIP) from email or My Account → Woohl Licenses. |
| Woohl theme (coming soon) | WordPress theme for marketing/docs; optional Elementor widgets. |
Note: The Woohl Licensing Server runs on the sales site (e.g. woohl.dev). Customers mainly use checkout, email, and My Account → Woohl Licenses.
How it works
- You purchase Woohl on woohl.dev (or your seller).
- When the order is paid, a license is created.
- You get an email with your key and download links.
- Install the Woohl plugin on
secure.example.comand enter the license key. - Deploy Vue to
example.com(DigitalOcean recommended) and point API URLs to the secure site. - Shoppers browse on
example.com; checkout completes onsecure.example.com/checkout.
Requirements
Secure site (WordPress + WooCommerce)
- WordPress + WooCommerce on
https://secure.example.com(or your chosen secure subdomain). - SSL certificate on the secure hostname.
- PHP and permalinks suitable for REST API (see hosting docs).
Vue site (storefront)
- Node.js + npm/pnpm/yarn for build and deploy.
- DigitalOcean (or similar) to host
example.com.
Account
- Use the same customer account at checkout when possible so My Account shows licenses (guest checkout may hide them).
Purchasing & Licensing
After you buy
- Unique license key
- Expiry date
- Link to order and customer when logged in
Where to find it
- WooCommerce → My Account → Woohl Licenses — key, status, Vue ZIP, plugin ZIP
Renewals
Expired licenses may block validation and downloads until renewed. Reminder emails may be sent before expiry.
Install the Woohl Plugin
Install only on the WordPress site that serves WooCommerce — the secure subdomain.
- Download the plugin ZIP from email or My Account.
- Plugins → Add New → Upload → Install → Activate on
secure.example.com. - Open Woohl settings and enter your license key.
- Allow
https://example.com(your Vue origin) in CORS / allowed domains if the plugin offers it. - Confirm checkout works at
https://secure.example.com/checkout.
Vue.js Storefront Setup
9.1 Unpack and install locally
- Download the Vue.js code (ZIP) from My Account or email.
- Unzip and run
npm install(or pnpm/yarn) per the package README.
9.2 Point the app at your secure backend
In .env (or equivalent), set your WooCommerce / WordPress base URL to the secure site:
https://secure.example.comYour README lists the exact variable names. Also set any checkout URL or redirect so “Checkout” sends users to https://secure.example.com/checkout.
9.3 Deploy to DigitalOcean
- Build production assets (
npm run buildor as documented). - Create an app or static site on DigitalOcean and deploy the build output.
- Attach your domain
example.com(andwwwif needed) in DigitalOcean DNS or your registrar. - Enable HTTPS.
9.4 Final checks
- Vue loads at
https://example.com. - API calls succeed against
https://secure.example.com(no CORS errors in the browser console). - Checkout completes on
https://secure.example.com/checkout.
License Activation
The license system can activate a domain, return status, and enforce activation limits. Enter your key in the plugin on the secure site; detailed API docs are available for developers on request.
Troubleshooting
https://secure.example.com. Use /checkout on that host.https://example.com in Woohl plugin / server settings; avoid mixed HTTP/HTTPS..env base URL is https://secure.example.com with no trailing slash issues; check permalinks.FAQ
https://secure.example.com/checkout..env and CORS accordingly.