Cart Widget
Digital menu with AI-powered dietary recommendations, online ordering, spreadsheet POS integration, and delivery routing sync. Doubles as a standalone browsable menu for your website.
Digital Menu
Doubles as your restaurant's browsable menu page with categories, modifiers, and dietary tags
AI Menu Assistant
Customers ask about allergies, dietary needs, or mood — AI recommends items from your menu
Spreadsheet POS
Orders sync to Google Sheets as a lightweight POS
Delivery Routing
Syncs with Genius Router for optimized deliveries
AI Menu Assistant
Customers can switch to AI Recommend mode and ask natural language questions about your menu. The AI reads your entire menu — items, descriptions, dietary tags, modifiers — and recommends the right dishes. Works with any menu, no extra setup.
- ✅ "I'm celiac — what can I eat?" → filters gluten-free items
- ✅ "What goes good with a beer?" → mood-based recommendations
- ✅ "Healthy options under $10" → dietary + price filtering
- ✅ Quick suggestion chips: Popular, Vegan, Spicy, Budget-friendly
- ✅ OpenAI-powered with client-side fallback if API is unavailable
Digital Menu — Doubles as Your Menu Page
The Cart widget isn't just for ordering — it's a full browsable digital menu with category tabs, item images, descriptions, dietary tags, and modifier groups. Embed it inline on your website and it becomes your restaurant's menu page. Customers can browse before ordering.
- ✅ Category tabs with emoji icons and drag-to-scroll
- ✅ Item cards with images, descriptions, prices, and dietary badges
- ✅ Modifier bottom sheets (toppings, sizes, extras) with min/max rules
- ✅ Search by name, dietary tag, or modifier
- ✅ External menu mode — bind to your own HTML menu with data attributes
Spreadsheet-Based POS Integration
Every order syncs automatically to Google Sheets — one master sheet per business with full order details. Use it as a lightweight POS: track orders, manage inventory counts, and export data for accounting. No expensive POS hardware required.
- ✅ Orders auto-append to your Google Sheet in real-time
- ✅ Full order details: items, modifiers, prices, customer info, status
- ✅ Works with any spreadsheet workflow — pivot tables, dashboards, exports
Delivery Routing with Genius Router
The Cart Widget feeds delivery orders directly into the Genius Router — our VRPTW route optimization engine. Import orders by date, optimize multi-stop delivery routes, and track drivers in real-time. Cart + Router together give you a complete order-to-doorstep pipeline.
- ✅ Import today's delivery orders as route stops in one click
- ✅ Optimize delivery sequence with time windows and vehicle constraints
- ✅ Live GPS tracking and turn-by-turn navigation for drivers
Order-After-Payment Architecture
Orders are created only after successful payment via Stripe Connect. No abandoned orders, no unpaid invoices — funds go directly to your bank account.
- ✅ No abandoned or unpaid orders in your system
- ✅ Funds deposited directly to your Stripe account
- ✅ Automatic order tracking to Google Sheets
Quick Start
1. Add the Cart Widget Container
<!-- 1. Cart Widget Container -->
<div id="qt-cart"
data-widget="cart"
data-tenant="YOUR_TENANT_ID"
data-container="qt-cart"
data-display-mode="button"
data-show-toast="true">
</div>
<!-- 2. Load the widget script (before </body>) -->
<script type="module"
src="https://cdn.widgetfied.com/portal.js">
</script>Replace YOUR_TENANT_ID with your actual tenant ID. The widget loads your menu from the dashboard configuration and syncs orders to your Google Sheet.
2. (Optional) External Menu Mode — Add Menu Items
<!-- Menu Item Card (optional - for external menu mode) -->
<article class="menu-item"
data-product-id="spring-rolls-001"
data-product-name="Crispy Spring Rolls"
data-product-price="899"
data-product-image="https://example.com/spring-rolls.jpg"
data-product-description="Crispy vegetable spring rolls with dipping sauce">
<img src="https://example.com/spring-rolls.jpg" alt="Spring Rolls">
<h3>Crispy Spring Rolls</h3>
<p>$8.99</p>
<!-- Just add data-cart-add to any button! -->
<button data-cart-add>🛒 Add to Order</button>
</article>External menu mode: the widget auto-binds to buttons with data-cart-add. For in-widget menu mode, your menu is configured entirely in the dashboard.
Menu Management
Build your entire menu in the dashboard. No code needed for in-widget menu mode.
Categories
Organize items into categories (Appetizers, Mains, Desserts, Drinks, etc.) with custom emoji icons
Menu Items
Name, price (in cents), description, image URL, prep time, dietary tags (vegan, gluten-free, etc.)
Modifier Groups
Add-ons like "Dipping Sauce" or "Extra Toppings" with min/max selections and price adjustments
Availability
Toggle items as sold out without removing them from the menu
Popular Items
Flag items as popular to highlight them in the widget
All prices are stored in cents (e.g., 899 = $8.99). The widget handles display formatting automatically.
Restaurant Information
Set up your restaurant profile shown to customers in the widget.
Pizza, Thai, Mexican, American, etc.
Physical location for delivery radius calculations
Contact number shown on receipts and in the widget
Per-day open/close times with closed-day toggle
Delivery Configuration
Configure delivery fees, zones, tipping, and cancellation policies in the dashboard.
Minimum Order
Minimum order amount before delivery is available (e.g., $15.00)
Base Delivery Fee
Flat delivery fee added to all orders (e.g., $3.99)
Service Fee
Percentage-based service fee (e.g., 15%)
Delivery Radius
Maximum delivery distance in miles from your restaurant
Tipping
Enable/disable tipping with preset percentages (15%, 18%, 20%, 25%)
Tax Rate
Your local tax rate set once in the dashboard (e.g., 8.25%)
Order Scheduling
Allow customers to place orders for a future delivery time.
Minimum Lead Time
Soonest a customer can schedule from now (e.g., 30 minutes)
Max Advance Days
How far ahead customers can schedule (e.g., 7 days)
Time Slot Duration
Granularity of available delivery slots (15, 30, or 60 minutes)
Scheduling respects your configured operating hours — customers cannot schedule outside business hours.
Widget Container Attributes
Required and optional attributes for the cart widget container:
Required
data-widget"cart"Identifies this as a cart widget
data-tenant"YOUR_TENANT_ID"Your unique tenant identifier
data-container"unique-id"Must match the container element ID
Optional
data-display-mode"button" | "inline" | "modal"How the widget is displayed (default: button)
data-show-toast"true" | "false"Show toast notifications when items are added (default: true)
How It Works
Customer Browses Menu
Menu categories and items are loaded from your dashboard configuration. Customers can filter by dietary tags.
Adds Items to Order
Customer selects items, customizes with modifiers, and adds to their order.
Reviews Order
Customer sees items, quantities, subtotal, delivery fee, service fee, tax, and tip in the order summary.
Enters Delivery Details
Customer provides name, email, phone, delivery address, and optional scheduled delivery time.
Secure Payment
Payment processed via Stripe Connect — funds go directly to your restaurant's account.
Order Created
Order is created AFTER successful payment. Synced to Google Sheets for tracking.
Display Modes
Button Mode
Recommendeddata-display-mode="button"Shows a floating order button. Best for restaurant websites with existing content.
Modal Mode
data-display-mode="modal"Menu stays hidden until opened programmatically. Perfect for custom integrations.
Inline Mode
data-display-mode="inline"Renders the full menu and ordering flow directly in the container. Good for dedicated ordering pages.
Button Styles
Customize how your floating order button appears:
Icon Only
iconShows order icon only (default)
Text Only
textShows custom text like "Order" or "Menu"
Icon + Text
bothShows both icon and text together
Configure button style in your dashboard under White-Label → Cart → Button Style
Dashboard Configuration
Configure your cart widget in the dashboard:
Stripe Connect
RequiredSettings → PaymentsConnect your Stripe account to receive payments directly
Google Sheets
Settings → IntegrationsSet up orders spreadsheet for automatic order tracking
Restaurant Info
RequiredWhite-Label → Delivery → RestaurantCuisine type, address, phone, and operating hours
Menu
RequiredWhite-Label → Delivery → MenuCategories, items, modifiers, and pricing
Delivery Fees
RequiredWhite-Label → Delivery → DeliveryMinimum order, delivery fee, service fee, and tax rate
Scheduling
White-Label → Delivery → SchedulingEnable scheduled orders with lead time and time slots
Button Style
White-Label → Delivery → Button StyleChoose icon, text, or both for the order button
Cancellation Policy
Configure cancellation rules in the Delivery tab:
- Toggle cancellations on/off
- Set cancellation window (e.g., 10 minutes after placing order)
- Choose refund policy: full, partial, or no refund
- Optional approval requirement for cancellation requests
Google Sheets Order Tracking
Orders are automatically logged to Google Sheets for easy tracking:
- One master spreadsheet per restaurant with tabs for each customer
- Automatic order reference numbers (e.g., ORD-20260204-ABC1)
- Full order details: items, quantities, modifiers, prices, totals
- Customer information: name, email, phone, delivery address
- Delivery fees, service fees, tax, tips, and timestamp tracking
Set up your Orders Spreadsheet ID in Settings → Business Info → Google Sheets Integration
Requirements
- Active Widgetfied subscription (Growth plan or higher)
- Stripe Connect account configured
- Valid business information for Stripe
- SSL certificate on your website (https://)
- Google Sheets (optional, for order tracking)
- Restaurant menu configured in the dashboard
Troubleshooting
Widget not appearing
- • Verify data-tenant matches your tenant ID exactly
- • Check that data-widget="cart" is spelled correctly
- • Ensure script tag is after the widget container
- • Open DevTools (F12) → Console for errors
Payment not processing
- • Verify Stripe Connect is configured in dashboard
- • Check your Stripe account is in good standing
- • Ensure customer entered valid card details
- • Check for Stripe webhook errors in dashboard
Orders not appearing in Google Sheets
- • Verify Orders Spreadsheet ID is set in settings
- • Check Google Sheets integration is connected
- • Ensure the spreadsheet has proper sharing permissions
- • Check API logs for any sheet sync errors
Menu not loading
- • Verify you have at least one category with items in the dashboard
- • Check that menu mode is set to "in-widget"
- • Ensure items have valid prices (in cents)
- • Confirm operating hours allow ordering at current time