Documentation
Everything you need to install, configure, and run your WirePulse store.
Getting Started
Installation Admin Dashboard Image GuidelinesProducts & Catalog
Managing Products Collections & Categories Product Types & AttributesOrders & Sales
Orders Draft Orders Discounts & Promotions Dynamic Discount Rules Gift CardsInventory & Logistics
Multi-Warehouse Fulfillment Returns (RMA) Back-in-Stock Alerts Stock ForecastingMarketing & CRM
Customer Segments Abandoned Cart Recovery Product Feeds Smart Recommendations SubscriptionsB2B / Wholesale
Company Accounts Price Lists Pay on AccountAI Features
AI Shopping Assistant AI Descriptions & SEOStorefront
Themes Page Builder Customer Portal AnalyticsDeveloper
REST API Webhooks Plugin System Store SettingsLicensing
Plans & Pricing Activating Your License Configuration Verification & GatingInstallation
Get WirePulse running locally in under 5 minutes.
Requirements
- PHP 8.4+ with common extensions (mbstring, xml, curl, sqlite3/mysql)
- Composer 2.x
- Node.js 20+ & npm
- SQLite (development) or MySQL 8+ (production)
- Flux UI Pro v2 license — purchase at fluxui.dev
Quick Start
git clone https://github.com/kwhorne/wirepulse.git
composer install
npm install && npm run build
cp .env.example .env and set your Stripe keys, mail driver, and AI provider key.
php artisan key:generate && php artisan migrate --seed
php artisan wirepulse:create-admin
composer run dev — visit http://localhost:8000
Admin Dashboard
Your command center for managing the store.
Dashboard
Revenue stats, order counts, inventory alerts, and restocking predictions at a glance.
Products
Create, edit, and organize your product catalog. AI-powered descriptions and SEO.
Collections
Hierarchical category system with parent/child relationships. Powers storefront navigation.
Orders
View and manage customer orders — line items, addresses, totals, payment status.
Customers
Customer database with order history, addresses, and group assignments.
Settings
Staff, themes, product types, currencies, payment methods, taxes, shipping, and more.
Image Guidelines
Automatic processing, recommended sizes, and best practices.
Automatic Processing
When you upload product images, WirePulse automatically:
- Resizes to max 1200×1500px (maintaining aspect ratio)
- Converts to WebP format (25-35% smaller than JPEG)
- Compresses at 85% quality (virtually invisible loss)
Upload JPEG, PNG, GIF, or WebP — the system converts everything to WebP automatically.
| Usage | Size | Ratio | Notes |
|---|---|---|---|
| Product image | 1200 × 1500 px | 4:5 | Ideal size. Auto-resized if larger. |
| Minimum upload | 800 × 1000 px | 4:5 | Smaller may look blurry on retina. |
| Hero banner | 1920 × 1080 px | 16:9 | For Page Builder hero modules. |
| Collection icon | 400 × 400 px | 1:1 | Square icons for category cards. |
Why 4:5? Industry standard used by Shopify, ASOS, and Zalando. Shows more of the product than square, looks premium, and matches Instagram portrait format.
Managing Products
Create, edit, and organize your product catalog with the tabbed editor.
Creating a Product
Product Editor Tabs
Product Information — Name, description, AI generator, pricing with cost price and DG%, and inventory.
Variants — Add, edit, and remove variants. Each has its own SKU, stock, pricing.
Related Products — Cross-sell ("You might also like") and up-sell ("Upgrade your choice") links.
Shipping & Dimensions — Weight, length, width, height per variant for shipping calculations.
SEO — URL slug, meta title, meta description with AI generation and live Google preview.
Data Quality Score
The header badge shows how complete your product data is across 12 data points. Click to see missing fields.
Pricing
Each variant has three price fields:
Price — Selling price including VAT. What the customer pays.
Compare-at — Original price. Shows strikethrough and discount badge on storefront.
Cost Price — Your purchase price (ex. VAT). Used for margin calculation. Never shown to customers.
Tip: Use ⌘K to quickly search and jump to another product while editing. Works by name or SKU.
Collections & Categories
Organize products into browsable categories with hierarchical nesting.
Collections appear in storefront navigation and can be nested — e.g., "Electronics > Laptops > Gaming Laptops". Products can belong to multiple collections. Create them at Collections → Create Collection.
Brands
Assign brands to products. Appears as a filter on product listing pages.
Tags
Flexible labels for internal organization. No hierarchy, shown on product pages.
Attributes
Standardized product fields like Material or Weight Class, organized in groups.
Product Types & Attributes
34 configurable attributes across 6 groups. Each type controls which fields appear in the editor.
General
Short description, technical description, features, material, color, warranty
Food & Beverage
Nutrition facts, ingredients, allergens, storage instructions
Textile & Apparel
Care instructions, fabric, size guide, fit, season, gender, 72 care label icons
Electronics
Technical specs, power supply, connectivity, battery life, certification
Furniture & Home
Assembly required, max load, room type, style
Sports & Outdoor
Activity type, weather rating, skill level, capacity
Tip: When you change a product's type in the sidebar, the Attributes tab updates automatically. Manage types at Settings → Product Types.
Orders
Lifecycle from checkout to fulfillment.
Checking out
Payment confirmed
Shipped/fulfilled
Stock is deducted when payment is confirmed, not when the order is created — abandoned checkouts don't lock inventory. Each order has a unique reference code (e.g., WP-A3K9M2X1). Click any order to see line items, addresses, payment info, and tax breakdown.
Draft Orders
Create orders manually for phone orders, B2B quotes, or custom requests.
Creating a Draft Order
Tip: Draft orders are essential for B2B and phone sales. Payment links expire after 7 days. Use custom line items for consulting fees, installation, or negotiated pricing.
Discounts & Promotions
Coupon codes with usage limits, date ranges, and priority rules.
Tip: For storefront sale displays, use the compare-at price on individual products instead of creating a discount code — it's more visible to browsing customers.
Dynamic Discount Rules
Automatic discounts that apply without coupon codes when conditions are met.
E.g., 10% off orders over 1000 kr.
E.g., 100 kr off orders over 500 kr.
E.g., free shipping on orders over 499 kr.
Multiple rules can stack — e.g., "10% off over 500 kr" and "Free shipping over 499 kr" both trigger on the same order. Configure at Settings → Discount Rules with optional date ranges and priority ordering.
Gift Cards
Digital gift cards with balance tracking, split payment at checkout, and transaction ledger.
How It Works
Issue: Marketing → Gift Cards → enter value & optional expiry → unique XXXX-XXXX-XXXX code generated.
Redeem: At checkout, customer enters the code. Full coverage = instant payment. Partial coverage = remaining charged via Stripe.
Refund: If Stripe session expires after applying a gift card, the balance is automatically refunded.
Tip: Issue gift cards as refunds instead of cash — money stays in your ecosystem and drives repeat purchases. Set 12-month expiry.
Multi-Warehouse / Locations
Multiple inventory locations with per-variant per-location stock tracking.
Main storage. Products shipped to customers.
Physical retail. Ship-from-store or BOPIS.
Third-party logistics partner.
Stock is tracked per variant per location. The storefront shows the aggregate total. Configure at Settings → Locations. When an order is paid, stock is allocated from available locations — split across multiple fulfillments if needed.
Fulfillment
Split fulfillment from multiple locations with ship/deliver tracking.
On Order Details, create fulfillments manually or let the system auto-allocate. Ship with optional tracking number/URL. Mark as delivered when the customer receives the package. Uses fulfillment.created and fulfillment.shipped webhook events.
Returns (RMA)
Customer self-service returns with 30-day window, admin workflow, and automatic gift card refunds.
Customer Flow
Customer opens a completed order in their portal → clicks "Request Return" → selects items, quantities, and reason → submits. Tracks status at /app/returns.
Admin Flow
Review at Sales → Returns → Approve/Reject → Mark as Received → Process Refund (gift card automatic or original method manual). Inventory is restocked on refund.
Webhook Events
return.requested
return.approved
return.refunded
Back-in-Stock Alerts
Automatic email notifications when out-of-stock products are restocked.
Stock Forecasting
Predictive restocking alerts based on 30-day sales velocity.
The dashboard analyzes sales over the past 30 days and predicts when each variant will run out. Alerts appear in the amber panel if less than 30 days of stock remain.
Customer Segments
Dynamic segments that auto-recalculate hourly based on purchase behavior.
VIP
Spent > 5,000 NOK total. Your most valuable customers.
First-Time Buyers
Exactly 1 order. Target with welcome offers.
At Risk
Last order > 90 days ago. Re-engagement candidates.
Big Spenders
AOV > 1,000 NOK. Target with premium products.
Custom Segments
Build conditions with: Total Spent, Order Count, Last Order Days Ago, Avg Order Total, Registered Days Ago, Customer Group. Use Match ALL or Match ANY logic. Preview matches before saving.
Abandoned Cart Recovery
Automatic email recovery for carts abandoned 1+ hours, with up to 3 reminders.
How It Works
Tip: Recovery runs automatically every 15 minutes — no setup needed beyond a mail driver. Industry average recovery rate is 5-10%. Monitor at Marketing → Abandoned Carts.
Product Feeds
Auto-generated feeds for Google Shopping, Meta, TikTok, and Pinterest. Regenerated every 4 hours.
Google Shopping
XML feed for Google Merchant Center. Includes all required g: fields.
Meta Commerce
JSON catalog for Facebook Shop and Instagram Shopping.
TikTok
JSON catalog for TikTok Ads Manager product catalog.
XML feed for Pinterest Business catalog ingestion.
Create at Marketing → Product Feeds. Each feed gets a public URL at /feeds/{slug}.xml or .json. Submit the URL to the ad platform. Feeds regenerate automatically every 4 hours.
Smart Recommendations
"Customers who bought this also bought…" based on co-purchase analysis.
A nightly command (recommendations:generate) analyzes 90 days of orders. Products frequently bought together get a co-purchase score. On product pages, recommendations are shown in priority order:
1. Manual cross-sell — always wins if set.
2. Co-purchase data — sorted by score.
3. Same brand/type fallback — for new products with no orders.
Tip: Manually set cross-sell on your top 20 bestsellers to bootstrap recommendations. After 50+ orders, the system handles it automatically.
Subscriptions
Recurring orders with 5 frequency options and customer self-service.
Customers subscribe from a completed order → choose frequency → system auto-generates orders on schedule. B2B customers get instant processing with invoices. B2C customers receive a Stripe payment link.
Weekly
7d
Bi-weekly
14d
Monthly
30d
Bi-monthly
60d
Quarterly
90d
Customer Self-Service
At /app/subscriptions: change frequency, update quantities, pause, resume, or cancel. Admins manage all subscriptions at Sales → Subscriptions.
Webhook Events
subscription.created
subscription.order_generated
subscription.cancelled
Company Accounts
B2B wholesale with registration, payment terms, credit limits, and approval workflow.
Name & Registration — Organization number and VAT number for invoicing.
Payment Terms — Net 0, 15, 30, or 60 days.
Credit Limit — Maximum outstanding invoice balance. Orders exceeding the limit are blocked.
Approval — Only approved companies can use "Pay on Account".
Users — Multiple employees linked with roles: Admin, Buyer, or Viewer.
Price Lists
Customer-group-based price overrides with priority, date ranges, and quantity breaks.
Pricing Resolution Order
1. Active price lists for the user's customer group (highest priority first)
2. Price list entries matching variant, currency, and minimum quantity
3. Customer group price in the prices table
4. Base price (no customer group)
Supports quantity breaks — e.g., kr 80 when buying 10+, kr 60 when buying 50+.
Pay on Account
Approved B2B customers checkout on credit with automatic invoicing.
Approved companies with payment terms and sufficient credit see "Pay on Account" at checkout. Order is placed immediately, invoice generated with due date. Stock decremented and fulfillments created. Overdue invoices flagged daily.
AI Shopping Assistant
Storefront chatbot with product search, order tracking, and bilingual support (EN/NO).
Enable in 4 Steps
Search Products
Natural language search: "winter jackets under 2000 kr", "Nike shoes on sale"
Product Details
"Tell me about the Deluxe Widget", "Is this in stock?", "What sizes?"
Track Orders
"Where is WP-ABCD1234?" — returns status, total, and tracking info.
Architecture
Powered by Laravel AI SDK with tool-calling. Three tools: SearchProducts, GetProductDetails, TrackOrder. Uses the cheapest model for cost efficiency. Conversation stored in session (up to 20 messages).
AI Descriptions & SEO
Generate product descriptions and SEO metadata with one click.
AI Description Generator
On the product editor, enter keywords (e.g., "waterproof, lightweight, hiking, breathable") and click Generate. The AI creates a professional description with paragraphs and feature bullet points. Always review before publishing.
AI SEO Generator
On the SEO tab, click "Generate with AI" to auto-create optimized URL slug, meta title, and meta description. Review the live Google search preview before saving.
Tip: The more specific your keywords, the better the result. The AI writes in the same language as your input — write in Norwegian for Norwegian descriptions.
Themes
8 built-in color themes with light/dark mode support.
Professional blue
Natural green
Warm orange
Creative purple
Soft pink
Deep indigo
Bold red
Fresh emerald
Page Builder
Visual drag-and-drop editor with 55+ modules including 9 e-commerce modules.
Editor Layout
Left panel — Module library. Drag modules into your page.
Center canvas — Your layout with 1-4 column rows.
Right panel — Settings for the selected module.
E-Commerce Modules
E-commerce modules pull live data from your catalog. Data is cached for 5 minutes.
Customer Portal
Self-service account at /app with B2B-adaptive features.
My Account
/app
Dashboard with greeting, order count, total spent, and recent orders.
My Orders
/app/orders
Full order history with details, totals, and fulfillment tracking.
My Addresses
/app/addresses
Manage shipping/billing addresses. Set defaults for faster checkout.
Subscriptions
/app/subscriptions
Change frequency, update quantities, pause, resume, or cancel.
Company (B2B)
/app/company
Org number, VAT, payment terms, credit limit, outstanding balance.
Invoices (B2B)
/app/invoices
Invoice list with status, due date, and amount tracking.
Tip: The portal adapts automatically — when you link a user to a company, the B2B features (Company, Invoices) appear instantly.
Analytics
Visual analytics with charts, KPIs, and period-over-period comparison.
Revenue
Total revenue from completed/processing orders.
Orders
Order volume with trend indicator.
New Customers
Customer acquisition over period.
Avg Order Value
AOV with period-over-period change.
Recovery Rate
Abandoned cart recovery percentage.
Top Sellers
Top 10 bestselling products by units sold.
Charts
Revenue Over Time (line), Orders Over Time (bar), AOV (line), Customer Acquisition (dual-line with B2B highlight), Cart Recovery (stacked bar). All interactive with hover tooltips.
REST API
Token-based API (Laravel Sanctum) with 12 resource endpoints, filtering, includes, and cursor pagination.
Authentication
Create tokens at Settings → API Tokens. Include header: Authorization: Bearer YOUR_TOKEN. Rate limit: 60 req/min.
Endpoints
GET/POST /api/v1/products GET/POST /api/v1/orders GET/POST /api/v1/customers GET/POST /api/v1/collections GET/POST /api/v1/brands GET/POST /api/v1/tags GET/POST /api/v1/discounts GET /api/v1/currencies GET /api/v1/channels GET /api/v1/dashboard/stats GET /api/v1/inventory
Filtering & Includes
GET /api/v1/products?filter[status]=published GET /api/v1/products?include=variants,brand,media GET /api/v1/orders?filter[status]=processing
Token Abilities (Scopes)
products:read
products:write
orders:read
orders:write
customers:read
customers:write
collections:read
collections:write
dashboard:read
inventory:read
Webhooks
21 events with HMAC-SHA256 signing, automatic retries, and delivery log.
Setup
Settings → Webhooks → "Add Webhook" → enter endpoint URL → select events → Test → Save. Retries: 3 attempts with backoff (10s, 1m, 5m).
Available Events (21)
order.created
order.updated
order.status_changed
product.created
product.updated
product.deleted
customer.created
customer.updated
inventory.changed
cart.abandoned
fulfillment.created
fulfillment.shipped
invoice.created
invoice.paid
subscription.created
subscription.order_generated
subscription.cancelled
return.requested
return.approved
return.refunded
stock.back_in_stock
Signature Verification
Each payload is signed with HMAC-SHA256. Verify the X-WirePulse-Signature header against your webhook secret.
$payload = file_get_contents('php://input');
$expected = hash_hmac('sha256', $payload, $secret);
if (hash_equals($expected, $signature)) {
// Webhook is authentic
}
Plugin System
Hook-based architecture with 4 extension points.
Plugin Structure
plugins/my-plugin/
├── manifest.json # Plugin metadata
└── src/
└── MyPluginServiceProvider.php # Registration logic
Extension Points (Hooks)
admin.sidebar.items — Add custom menu items to the admin sidebar
product.editor.tabs — Add custom tabs to the product editor
checkout.after_payment — Run logic after payment confirmation
api.routes — Register additional API endpoints
Example Registration
$manager = app(PluginManager::class);
$manager->registerHook('admin.sidebar.items', fn () => [
'label' => 'My Feature',
'icon' => 'star',
'route' => '/wirepulse/my-feature',
]);
Store Settings
Complete configuration reference.
Staff
Admin access management. Toggle admin privileges per user.
Product Types
Define types and configure which attributes appear for each.
Currencies
Exchange rates, decimal places, symbols. Mark one as default.
Channels
Sales channel configuration for multi-platform selling.
Languages
URL slugs and multilingual support. Default language setting.
Taxes
Tax classes, zones, and rates. Configurable VAT/GST per region.
Shipping
6 providers: Flat Rate, Free Shipping, Weight-Based, Bring, Postnord, Local Pickup.
Locations
Warehouses, stores, 3PL. Per-location inventory tracking.
API Tokens
Sanctum tokens with scoped abilities. Rate limited 60/min.
Webhooks
21 events, HMAC-SHA256 signed. Retry with backoff.
Plugins
Enable/disable installed plugins from the plugins/ directory.
Discount Rules
Automatic discounts without coupon codes.
AI Settings
Toggle AI Shopping Assistant. Requires AI provider API key.
Pages
CMS pages with visual Page Builder. Draft/publish workflow.
Themes
8 color themes with instant storefront switching.
Plans & Pricing
WirePulse is open source and free to use. Pro and Enterprise tiers unlock advanced features.
Community
FreeProducts, variants, collections, cart, Stripe checkout, single warehouse, discount codes, Page Builder, themes, REST API, webhooks, and plugin system.
Pro
$99/monthEverything in Community, plus: multi-warehouse, abandoned cart recovery, gift cards, product feeds, AI Shopping Assistant, AI descriptions & SEO, returns/RMA, discount rules, recommendations, analytics, draft orders, back-in-stock alerts.
Enterprise
$299/monthEverything in Pro, plus: B2B company accounts with payment terms, price lists with volume pricing, pay on account (invoicing), recurring subscriptions, stock forecasting, dynamic customer segments.
Purchase your license at wirepulse.org/pricing. After checkout, your license key appears on your dashboard.
Activating Your License
Get up and running with your Pro or Enterprise license in minutes.
.env file:
WIREPULSE_LICENSE_KEY=your-uuid-license-key-here
php artisan license:verify to verify manually at any time.
Configuration
License settings in config/license.php.
Environment Variables
# Your license key from wirepulse.org WIREPULSE_LICENSE_KEY= # License server URL (default: https://wirepulse.org) WIREPULSE_LICENSE_SERVER=https://wirepulse.org # Cache TTL in hours (default: 24) WIREPULSE_LICENSE_CACHE_TTL=24
WIREPULSE_LICENSE_KEY
Your UUID license key. Leave empty for Community (free) mode.
WIREPULSE_LICENSE_SERVER
The license server URL. Only change this for self-hosted license servers.
WIREPULSE_LICENSE_CACHE_TTL
Hours to cache the verification result. Default 24. Lower values mean more frequent checks.
Verification & Feature Gating
How WirePulse verifies your license and enables features.
Daily Verification
A scheduled command (license:verify) runs daily and contacts the license server at POST /api/v1/verify. The server validates the key and returns the tier (free/pro/enterprise) and expiry date. Results are cached locally.
Manual Verification
php artisan license:verify # Output (valid): # License valid — Tier: pro, Expires: 2027-03-30 # Output (no key): # License invalid or not configured — running in free/community mode.
Graceful Degradation
License verification never blocks your store. If the license server is temporarily unreachable:
1. WirePulse uses the last known valid result from cache.
2. If no cache exists, the store runs in Community (free) mode.
3. When the server is reachable again, the next verification updates the cache automatically.
Admin Banner
A small banner at the top of the admin panel indicates your license status:
Managing Your Subscription
Log in at wirepulse.org/app to view your license key, manage your subscription via Stripe (upgrade, downgrade, cancel), and download invoices. Tier changes take effect on the next license verification.
Tip: If you downgrade from Enterprise to Pro, Enterprise-only features (B2B, subscriptions, segments) are disabled but your data is preserved — upgrade again and everything is restored.
Quick Reference
Scheduled Commands
segments:recalculate
Hourly
carts:process-abandoned
Every 15 min
feeds:generate
Every 4 hours
invoices:check-overdue
Daily
subscriptions:generate-orders
Daily
recommendations:generate
Daily 03:00
license:verify
Daily
Database Schema (60+ tables)
Ready to get started?
WirePulse is open source and free to use. Clone, install, and start selling.