Add Aedan Rose to Your Website in 3 Minutes

No coding experience required. Just copy, paste, and go live.

Quick Start

Follow these simple steps to add Aedan Rose to your restaurant website:

1 Get Your Widget Code

Log into your Aedan Rose admin dashboard and navigate to:

Dev Tab → Widget Code Section

Your unique widget code will be displayed there, automatically generated for your restaurant.

2 Copy the Code

Click the "Copy Code" button or manually select and copy your widget code.

3 Paste on Your Website

Add the code to your website before the closing </body> tag.

See platform-specific guides below for detailed instructions.

That's it! Aedan Rose will appear as a chat bubble on your website within seconds.

Widget Installation (Recommended)

The widget appears as a floating chat bubble on your website. This is the most popular integration method.

Step 1: Get Your Widget Code from Admin Dashboard

Your widget code is automatically generated in the Dev Tab of your admin dashboard with your unique restaurant ID already embedded. Here's what it looks like:

<!-- Aedan Rose AI Restaurant Agent -->
<script>
  (function() {
    var s = document.createElement('script');
    s.src = 'https://aedanrose.ai/widget.js';
    s.defer = true;
    s.setAttribute('data-restaurant-id', 'YOUR_RESTAURANT_ID');
    s.setAttribute('data-api-url', '/api/v1');
    s.setAttribute('data-primary-color', '#667eea');
    document.head.appendChild(s);
  })();
</script>
<!-- End Aedan Rose Widget -->
Important: Always get your personalized code from the Dev Tab in your admin dashboard. The code above shows the structure, but your actual code will have your unique restaurant ID already included.

Step 2: Add Code to Your Website

Paste the code in the <head> section of your website on every page where you want Aedan Rose to appear.

Note: The script automatically appends to the <head> section and uses defer loading for optimal performance without blocking page rendering.

Iframe Embedding (Alternative)

Use this method to embed Aedan Rose as a full chat window on a dedicated page or section.

When to Use Iframe:

  • Dedicated "Chat with Us" or "Order Online" page
  • Contact page embedded chat
  • Sidebar chat on your homepage

Iframe Code Example:

Get your personalized iframe code from the Dev Tab. It will look like this:

<!-- Aedan Rose Iframe Embed -->
<iframe
  src="https://aedanrose.ai/widget.html?id=YOUR_RESTAURANT_ID&color=%23667eea&mode=iframe"
  width="420"
  height="640"
  frameborder="0"
  allow="microphone"
  style="border:0; border-radius: 16px; box-shadow:0 10px 30px rgba(0,0,0,.12);"
  title="AI Chat Assistant"
></iframe>
URL Parameters:
  • id - Your restaurant ID (required)
  • color - Primary color in URL-encoded hex format (optional, default: #667eea)
  • mode - Set to "iframe" for embedded mode (required)

Custom Sizing:

You can customize the iframe dimensions directly in the Dev Tab using the "Resize iFrame" feature. Simply enter your desired width and height, and the code will be updated automatically.

<!-- Custom Size Example -->
<iframe
  src="https://aedanrose.ai/widget.html?id=YOUR_RESTAURANT_ID&color=%23667eea&mode=iframe"
  width="500"
  height="700"
  frameborder="0"
  style="border:0; border-radius: 16px; box-shadow:0 10px 30px rgba(0,0,0,.12);"
  title="AI Chat Assistant"
></iframe>

Order Page Embed

The Order Page is a standalone, hosted page where guests can place orders, book VIP tables, and reserve — separate from the AI chat widget. It lives at your own vanity link (for example aedanrose.ai/your-name) and can be embedded on your website as an iframe or simply shared as a link or QR code. It works with or without the AI widget installed.

Step 1: Publish and Get Your Embed

Open Settings → Payments → Order Page & Embed in your admin dashboard to publish your page and pick your link. Your ready-to-paste iframe snippet and shareable link also appear in the Dev Tab under Order Page Embed.

Step 2: Embed the Iframe (or Share the Link)

Paste the iframe snippet into any page on your website — a menu page, an "Order Online" page, or your footer. It resizes to full width and is safe to drop anywhere:

<!-- Aedan Rose Order Page -->
<iframe
  src="https://aedanrose.ai/your-name"
  style="width:100%;min-height:720px;border:0;"
  title="Order online"
  loading="lazy"
  allow="payment"
></iframe>
Prefer no code? You don't have to embed anything. Just link to your order page from your website, social bios, or Google profile — or print the QR code (available in the Dev Tab and Settings) for tables and takeout bags.

Per-Table QR Codes & Deep Links

The order page URL accepts query parameters, so one printed QR per table turns into labeled dine-in ordering with zero typing:

  • ?table=12 (or ?t=12) — pre-tags the visit with a table number, so the order arrives in your dashboard labeled “Table 12”. If the parameter is absent, the checkout step offers a table picker instead.
  • ?item=… — deep-links straight to a specific menu item, useful for promoting one dish from an email or social post.

Guests also keep their cart between visits (it persists in their browser), and when your plan includes diner accounts, a sign-in button appears on the order page so returning guests can order under their account.

Plan Availability

  • Ordering and VIP tables are included on every plan, including Free.
  • Online reservations are part of the Full House plan.
Checkout & fees: The Order Page uses the same secure Stripe checkout as the widget. A 3% service fee is shown to the guest at checkout.

Order Page Analytics & Campaign Attribution API only

Two owner-authenticated read endpoints report on order-page performance. Both take an optional ?days= window (1–365, default 30) and require a Firebase ID token for an owner or admin of that restaurant.

There is no dashboard card for either report. Neither appears as a screen in the admin dashboard today — you read them over the API. One shortcut exists: on the Manager plan you can ask the Aedan Rose Copilot for your order-page performance summary in plain language, and it will run the first endpoint for you. The campaign attribution report has no Copilot command and no dashboard card — API only. If you want these surfaced in the dashboard, tell us at [email protected].

GET /order-page/:rid/analytics?days=30 — funnel totals, conversion rate, a daily series, and top-viewed items.

GET /order-page/:rid/analytics/attribution?days=30 — answers “which email brought guests back, and what did it earn.” Guest-facing campaign links carry a signed token; when a guest arrives, orders, or books, that token is recorded and rolled up here per campaign.

Field Meaning
totals.attributedSessionsVisits that arrived carrying a verified campaign token
totals.attributedOrdersOf those visits, how many completed a paid order
totals.attributedRevenueOrder revenue from those visits, in dollars
totals.attributedReservationsBookings carrying a campaign token
totals.unverifiedSessionsVisits whose token failed signature checks. Reported openly and excluded from every number above — a non-zero value means somebody is hand-crafting links
campaigns[]The same figures broken out per campaign, plus conversion (orders ÷ sessions, as a percentage)
emptytrue when there is nothing to report yet
Attribution counts only signed tokens that we minted on your campaign links. A guest who types your URL in directly, or arrives from a hand-edited link, is deliberately not attributed to any campaign — these reports under-claim rather than over-claim.

Platform-Specific Installation

Choose your website platform for step-by-step instructions:

WordPress Installation

  1. Install the "Insert Headers and Footers" plugin (or use your theme's custom code feature)
  2. Go to Settings → Insert Headers and Footers
  3. Paste your widget code in the "Scripts in Footer" section
  4. Click "Save"
  5. Visit your website to confirm Aedan Rose appears
Alternative: If you're comfortable editing theme files, paste the code in Appearance → Theme Editor → footer.php before </body>

Shopify Installation

  1. Go to Online Store → Themes
  2. Click "Actions" → "Edit Code"
  3. Find the theme.liquid file in the Layout folder
  4. Scroll to the bottom and paste your widget code before </body>
  5. Click "Save"
  6. Preview your store to confirm

Wix Installation

  1. Go to Settings → Custom Code
  2. Click "+ Add Custom Code"
  3. Paste your widget code
  4. Set placement to "Body - End"
  5. Choose "All Pages" (or select specific pages)
  6. Click "Apply"

Squarespace Installation

  1. Go to Settings → Advanced → Code Injection
  2. Paste your widget code in the "Footer" section
  3. Click "Save"
  4. Visit your site to confirm

Custom HTML Installation

  1. Open your website's HTML file in a text editor
  2. Find the closing </body> tag (usually near the bottom)
  3. Paste your widget code right before it
  4. Save the file
  5. Upload to your server (via FTP or hosting control panel)
<!-- Your existing HTML -->
  <footer>
    <!-- Footer content -->
  </footer>

  <!-- Aedan Rose Widget Code - PASTE HERE -->
  <script>
    window.aedanConfig = { ... };
  </script>
  <script src="https://cdn.aedan.ai/widget.js" async></script>

</body>
</html>

Customization Options

Change Colors to Match Your Brand

Customize the widget color directly in your widget code by changing the data-primary-color attribute:

<script>
  (function() {
    var s = document.createElement('script');
    s.src = 'https://aedanrose.ai/widget.js';
    s.defer = true;
    s.setAttribute('data-restaurant-id', 'YOUR_RESTAURANT_ID');
    s.setAttribute('data-api-url', '/api/v1');
    s.setAttribute('data-primary-color', '#ff6b00'); // 👈 Change this to your brand color
    document.head.appendChild(s);
  })();
</script>
Pro Tip: You can also change the widget color from the Settings Tab in your admin dashboard. The Dev Tab will automatically update your widget code when you change the color.

Customize Widget Behavior

For advanced customization like welcome messages and positioning, visit the Settings Tab in your admin dashboard where you can configure:

  • Primary widget color
  • Restaurant-specific greetings and welcome messages
  • Business hours and operating schedule
  • Special instructions for AI responses

API Keys (Advanced)

The Dev Tab provides API keys for advanced integrations and programmatic access:

Public API Key

Your public API key is displayed in the Dev Tab and is safe to use in client-side code. It's automatically included in your widget code.

Security: Your public key is used to authenticate widget requests. Never share your private/secret keys publicly.

Testing and Validation

The Dev Tab includes powerful testing tools:

  • Test Live AI: Opens a test window to chat with your AI in real-time
  • Validate Setup: Checks if your widget code is correctly configured
  • Run Full Diagnostic: Comprehensive system check including API connectivity and AI training status
  • Test API Connection: Verifies your backend connection is working
  • Verify AI Training: Confirms your AI has been trained with your documents

Downloadable Test Files

The Dev Tab lets you download complete HTML test files with your widget embedded for local testing.

Testing Your Installation

How to Verify Aedan Rose is Working:

  1. Visit your website in incognito/private browsing mode
  2. Look for Aedan Rose's chat bubble (bottom right by default)
  3. Click the bubble to open the chat
  4. Send a test message: "I'd like to make a reservation"
  5. Aedan Rose should respond within 1-2 seconds
Success! If Aedan Rose responds, your installation is complete. Test reservations and orders to ensure everything works perfectly.

Account Management & Deletion

You can manage or permanently delete your Aedan Rose account at any time. There are three ways to delete: from the admin dashboard (owners), from the mobile app, or via the public web form (no sign-in required).

Delete or deactivate from the admin dashboard (owners)

Restaurant owners have two self-serve controls in the admin dashboard under Settings → your user card → ACCOUNT OPTIONS:

  • Deactivate Account — takes every restaurant you own offline (status: disabled) without deleting any data. Use this if you want to pause rather than erase.
  • Delete Accountpermanent and immediate. A confirmation dialog explains exactly what will be removed before anything happens. Deletion wipes your entire restaurant ecosystem: all restaurants you own, team members, schedules, orders, reservations, menus, conversations, and analytics, and ends associated subscriptions.

Both options are visible only to owner/admin accounts, and the server independently re-checks your role before executing — staff accounts cannot trigger them.

Delete from the mobile app

The Aedan Rose mobile app is available for both iOS and Android:

  1. Open the Aedan Rose app → MoreProfile.
  2. Scroll to the bottom and tap Delete Account Permanently.
  3. Confirm. Deletion is instant and wipes all restaurants, employees, schedules, orders, reservations, menus, and analytics.

Delete from the web (no sign-in required)

  1. Go to aedanrose.ai/delete-account.
  2. Submit the form with your account email. We'll email a verification link.
  3. Click the verification link. Our team reviews the request within 3–5 business days (this review step is a security measure).
  4. You'll receive a final confirmation email when the account is deleted.
Important: If you have an active paid subscription, cancel it separately at aedanrose.ai/admin before deleting your account so you're not charged a final pro-rated amount.

Account deletion is permanent and irreversible. Certain records may be retained in anonymized form in our financial or security logs as required by law.

Troubleshooting

Widget Doesn't Appear

  • Check if code is pasted before </body> tag (not </head>)
  • Clear your browser cache (Ctrl+F5 or Cmd+Shift+R)
  • Verify your restaurant ID is correct in the code
  • Check browser console for JavaScript errors (F12 → Console tab)

Widget Appears but Doesn't Respond

  • Verify your Aedan Rose account is active (check admin dashboard)
  • Ensure you've uploaded your menu in the admin dashboard
  • Check your plan's conversation limits aren't exceeded
  • Contact support if issue persists

Widget Looks Different Than Expected

  • Verify customization code syntax is correct
  • Check if your website's CSS is overriding widget styles
  • Try using !important in custom CSS if needed
Need Help?
Still stuck? Visit our Help Center or email [email protected]

Next Steps: Training Your AI

After installing the widget, you need to train Aedan Rose on your restaurant's specific information. Here's how:

1. Prepare Your Training Documents

For a location using its own knowledge, prepare up to 2 PDF files:

  • Menu PDF: Your complete menu with items, prices, and descriptions
  • About/Overview PDF: Information about your restaurant (history, specialties, policies, hours, location, etc.)
Pro Tip: Ensure your PDFs contain readable text (not just scanned images). The AI extracts structured data from the text content.
Multi-location source: AI Training now shows the effective source for Menu and About separately. A badge marked Local means this location uses its own document. Shared means the owner published a group-owned version from Restaurants → Guest widget locations. Local documents remain available as a fallback while Shared is active, but editing the local fallback does not silently replace the published group version.

2. Upload Training Documents

Go to Admin Dashboard → Settings Tab → Training Section

  1. Choose the Menu or About PDF for the active restaurant
  2. Upload it; the file is securely stored for that location
  3. Wait for upload confirmation (green checkmark)
Important: PDFs must be under 10MB each. Supported formats: PDF only (no Word docs, images, or Excel files).

Multi-location training and publishing

  • Local training remains location-specific. Managers can maintain the active restaurant's local Menu and About documents.
  • Shared knowledge is owner-controlled. Only the literal account owner can choose group members, select a source, validate the draft, publish it, or roll back a published version.
  • Menu and About are independent. You can keep both local, share only Menu, share only About, or share both.
  • Publishing is atomic. Saving a draft changes nothing for guests. Publish activates one complete, validated version; rollback restores an earlier complete version.
  • About never overrides structured local facts. The selected restaurant's address, phone, hours, timezone, and enabled services take priority over shared brand or policy text.

3. Run AI Training

After uploading documents:

  1. Click the "Train Aedan Rose" button
  2. Training takes 2-5 minutes (watch the progress indicator)
  3. AI will extract menu items, prices, policies, and restaurant information
  4. You'll see "Training completed" when finished
Training Quota: Each plan has a monthly training limit (the free order-only plan includes 1 menu upload/month). Check your usage in the Settings tab.

4. Test Your Trained AI

Use the Dev Tab → "Test Live AI" button to verify training worked:

  • Ask: "What are your hours?" (should answer from your About PDF)
  • Ask: "What's on the menu?" (should list items from your Menu PDF)
  • Ask: "How much is [specific menu item]?" (should provide exact price)

5. Connect Stripe to Accept Online Orders 💳

Want customers to pay for orders directly through Aedan Rose? Connect your Stripe account to start accepting online payments.

Why Stripe?
  • Secure: Industry-leading payment security (PCI-DSS Level 1)
  • Aedan Rose takes 0% of your food revenue: Customers pay the 3% AI Service Fee separately on top of their order — Aedan Rose never deducts from your sales
  • Direct deposits: Money goes straight to YOUR bank account from your Stripe balance
  • Aedan Rose never touches your money: Stripe holds and disburses everything
  • Fast setup: 5-10 minutes to connect
About Stripe's Payment Processing Fee: Stripe — like every payment processor — charges its industry-standard rate of 2.9% + $0.30 per successful card transaction for US domestic cards. This is the same rate charged by PayPal, Square, Adyen, Shopify Payments, and every other major processor. Aedan Rose has no control over this fee — it is set by Stripe and deducted directly from your Stripe balance. We receive no portion of it. International cards, Amex, currency conversion, and certain payment methods carry additional Stripe surcharges per stripe.com/pricing. Full disclosure in our Terms of Service.

How It Works:

  1. Customer orders through Aedan Rose chat: "I want 2 pizzas for delivery"
  2. Aedan Rose calculates total and adds 3% AI service fee
  3. Aedan Rose generates secure payment link and sends to customer
  4. Customer clicks link → Redirected to Stripe checkout page
  5. Customer pays with credit card (hosted by Stripe, not us)
  6. Money split automatically by Stripe:
    • The full order amount (food, drinks, etc.) goes to YOUR Stripe account → YOUR bank account, less Stripe's industry-standard 2.9% + $0.30 payment processing fee
    • 3% AI Service Fee is split to Aedan Rose by Stripe automatically — this is added on top of the customer's order, not deducted from your food revenue
    • Aedan Rose takes 0% of your food revenue; the only fee deducted from your Stripe balance is Stripe's own processing fee, which is set by Stripe and outside our control
  7. Order confirmed in your admin dashboard
Example Payment Breakdown:
Customer orders $30.00 worth of food
+ $0.90 (3% AI Service Fee — customer pays this on top, not deducted from your food revenue)
= $30.90 total customer pays

Stripe processes the $30.90 and:
🏦 Splits $0.90 to Aedan Rose (AI Service Fee)
💰 Splits $30.00 to YOUR Stripe balance, then deducts Stripe's own industry-standard 2.9% + $0.30 payment processing fee (~$1.17 on a $30 split). You net ~$28.83 in your bank in 2–7 business days.

Stripe's processing fee is set by Stripe and is the industry standard for every payment processor (PayPal, Square, etc.). Aedan Rose has no control over and receives no portion of it.

Step-by-Step Setup:

Option 1: I Already Have a Stripe Account (Recommended)
  1. Log into Aedan Rose Admin Dashboard
    • Go to Settings Tab
    • Scroll to "Payment Processing" section
  2. Click "Connect Existing Stripe Account"
    • Button will be orange/blue - can't miss it!
  3. Authorize Connection
    • You'll be redirected to Stripe.com
    • Log into your existing Stripe account
    • Stripe will ask: "Allow Aedan Rose by Aedan Rose to access your account?"
    • Click "Connect"
  4. Verify Connection
    • You'll be redirected back to Aedan Rose dashboard
    • Status should show: ✅ Connected
    • Your Stripe account ID will be displayed
  5. Test It!
    • Open your AI chat widget
    • Place a test order: "I want to order a burger for pickup"
    • Aedan Rose should generate a payment link
    • Click link to see Stripe checkout page
Option 2: I Don't Have a Stripe Account Yet (New to Stripe)
  1. Log into Aedan Rose Admin Dashboard
    • Go to Settings Tab
    • Scroll to "Payment Processing" section
  2. Click "Create New Stripe Account"
    • Alternative button below "Connect Existing Account"
  3. Complete Stripe Onboarding Form
    • You'll be redirected to Stripe's onboarding page
    • Fill out business information (5-10 minutes)
  4. What Information You'll Need:
    • Business Details: Restaurant name, address, phone, website
    • Tax Information: EIN or SSN (for tax reporting)
    • Bank Account: Routing number and account number (where you'll receive payouts)
    • Identity Verification: Upload driver's license or passport
    • Business Owner Info: Name, DOB, address
  5. Submit and Wait for Verification
    • Stripe reviews your application (usually instant, sometimes 1-2 business days)
    • You'll receive email confirmation when approved
  6. Return to Aedan Rose Dashboard
    • Once approved, connection status shows: ✅ Connected
    • You're ready to accept payments!
Once Connected - What Happens?
  • ✅ Aedan Rose can now generate secure Stripe checkout links for customer orders
  • Aedan Rose takes 0% of your food revenue — the 3% AI Service Fee is paid by the customer on top of their order, separately
  • ✅ Payments automatically split by Stripe: order total to your Stripe balance, AI Service Fee to Aedan Rose
  • ✅ Stripe's industry-standard 2.9% + $0.30 payment processing fee is deducted from your Stripe balance (this is the same rate every payment processor charges and is outside Aedan Rose's control)
  • ✅ Net amount deposited to your bank account in 2-7 business days (Stripe standard)
  • ✅ View all payment activity in your Stripe dashboard; full order history in Aedan Rose admin dashboard

Security & Privacy:

  • 🔒 No credit card data stored by us: All payment info stays with Stripe
  • 🔒 PCI-DSS Level 1 Certified: Highest security standard for payment processing
  • 🔒 Your money, your control: We can't access your Stripe balance or bank account
  • 🔒 Disconnect anytime: Revoke access in Settings tab with one click

Common Questions:

Q: Does Aedan Rose take a percentage of my food revenue?

A: No. Aedan Rose takes 0% of your food revenue. The 3% AI Service Fee is added on top of the customer's order and paid by the customer (not deducted from your sales). Example: $30 order = customer pays $30.90, Aedan Rose receives $0.90, your $30.00 food revenue goes to your Stripe balance.

Q: What does Stripe charge?

A: Stripe charges its industry-standard rate of 2.9% + $0.30 per successful card transaction on US domestic cards — the same rate charged by PayPal, Square, Adyen, Shopify Payments, and every other major payment processor. This fee is set entirely by Stripe and is deducted from your Stripe balance before payout. Aedan Rose has no control over this fee and receives no portion of it. International cards, Amex, and currency conversion carry additional Stripe surcharges. Full pricing: stripe.com/pricing.

Q: When do I get paid?

A: Stripe deposits to your bank account in 2-7 business days (varies by bank). First payout may take 7-14 days for new accounts.

Q: Can I use Stripe if I'm outside the US?

A: Yes! Stripe supports 40+ countries. During onboarding, select your country and provide local bank details.

Q: What if a customer disputes a charge?

A: Handle disputes directly in your Stripe dashboard. Stripe provides tools to respond and resolve disputes.

Q: Can I disconnect Stripe later?

A: Yes! Go to Settings Tab → Payment Processing → Click "Disconnect Stripe". Takes effect immediately.

Q: Who pays the 3% AI service fee?

A: The customer pays it. It's added to their order total automatically. The 3% fee is an AedanRose platform fee that covers AI processing and secure infrastructure; restaurants cannot remove or reconfigure it.

Need Help Connecting?
Stuck during setup? We're here to help:
📧 Email: [email protected]
💬 Chat: Click the Aedan Rose widget on any page
📚 Help Center: Detailed guides and FAQs

6. Monitor Performance

Track your AI's performance in the Analytics tab:

  • Revenue Analytics: Track order values and trends
  • Customer Intelligence: See customer behavior patterns
  • AI Performance: Monitor confidence scores and response accuracy
  • Email Analytics: Track email notification delivery

Training Best Practices

What Makes Good Training Data?

  • Menu PDF: Organized by categories (Appetizers, Entrees, Desserts, Drinks), clear pricing, ingredient details, dietary info
  • About PDF: Business hours, location/address, phone number, restaurant history, specialty dishes, dietary accommodations, reservation policies, delivery/takeout info
  • Quality over quantity: 2 well-organized PDFs train better than 10 messy ones
  • Keep it updated: Re-train when you update your menu or change policies (uses 1 training credit per run)

Common Training Mistakes to Avoid

  • ❌ Uploading image-only PDFs (scanned menus without text layer)
  • ❌ Including outdated menu items or incorrect prices
  • ❌ Forgetting to include essential info like hours and location
  • ❌ Not testing the AI after training
  • ❌ Using Word docs or images instead of PDFs

Embed Attribute Reference

The widget script supports exactly four data-* attributes. Anything else is ignored.

Attribute Required Default Values / Notes
data-restaurant-id ✅ Yes Your unique restaurant identifier. Copy from the Dev Tab in your admin dashboard. Case-sensitive.
data-api-url No https://aedanrose.ai Override the API endpoint. Only needed for self-hosted enterprise deployments.
data-position No bottom-right One of: bottom-right, bottom-left, top-right, top-left.
data-primary-color No #00d4ff Hex color for the launcher and accent UI. Inline override of your dashboard branding.
No other attributes are recognized. If you see suggestions online for data-z-index, data-delay-ms, or other custom attrs, they are not supported by this widget. Use CSS targeting #gaazzeebo-widget for additional customization.

Position Examples

<!-- Bottom-right (default) -->
<script src="https://aedanrose.ai/widget.js" data-restaurant-id="..." defer></script>

<!-- Bottom-left -->
<script src="https://aedanrose.ai/widget.js" data-restaurant-id="..." data-position="bottom-left" defer></script>

<!-- Top-right with custom brand color -->
<script src="https://aedanrose.ai/widget.js" data-restaurant-id="..."
        data-position="top-right" data-primary-color="#ff6b00" defer></script>

REST API Reference

The Aedan Rose REST API is organized around resources and uses standard HTTP verbs. All requests must include a Bearer token obtained via the auth flow. Production base URL: https://aedanrose.ai

Authentication: Include Authorization: Bearer <your-token> on every request. Tokens are issued by POST /auth/login and refreshed transparently by the admin dashboard. For server-to-server use, contact [email protected] for an enterprise API key.

Authentication

MethodPathPurpose
POST/auth/signupCreate a new restaurant account
POST/auth/loginExchange credentials for an access token
GET/auth/meGet current user + restaurant context

Conversations & Chat

MethodPathPurpose
GET/restaurants/:id/chat/messagesFetch group-chat messages
POST/restaurants/:id/chat/messagesSend a group-chat message
POST/restaurants/:id/chat/dm/*Direct-message endpoints
POST/agent/*Customer-facing AI agent endpoints (used by the widget)

Scheduling

MethodPathPurpose
GET/POST/PATCH/DELETE/restaurants/:id/shiftsShift CRUD
GET/POST/restaurants/:id/employeesEmployee management
GET/POST/restaurants/:id/time-offTime-off requests & approvals
GET/POST/restaurants/:id/shift-tradesShift trade requests, approvals, claims
GET/POST/restaurants/:id/blackout-datesBlackout date management

Tasks & Operations

MethodPathPurpose
GET/POST/restaurants/:id/tasksTask templates + instances
GET/POST/restaurants/:id/tasks/categoriesTask category management
POST/restaurants/:id/tasks/generateBulk-generate tasks from templates

Billing & Plans

MethodPathPurpose
POST/billing/create-checkout-sessionStart a Stripe-hosted checkout. Body: { plan, billing }
GET/PUT/restaurants/:id/planRead or change plan tier

Analytics, Status & Marketing

MethodPathPurpose
GET/analytics/*Conversation, performance, revenue analytics
GET/statusPlatform health status (also rendered at /status.html)
POST/marketing/*Email campaigns, broadcasts, segments
POST/contactPublic contact form submissions
POST/public/deletion-requestsEnd-user account deletion requests

All /restaurants/:id/* routes enforce row-level security — you can only read or write your own restaurant's data. Cross-tenant requests return 403.

Webhooks

Aedan Rose receives webhooks from Stripe (billing events) and SendGrid (email delivery events). If you're integrating your own payment provider or email service, contact [email protected].

Stripe Webhook

  • Endpoint: POST /webhooks/stripe
  • Signature header: Stripe-Signature
  • Verification: HMAC-SHA256 using your Stripe webhook signing secret. Requests with invalid signatures return 400.
  • Events consumed: checkout.session.completed, customer.subscription.updated, customer.subscription.deleted, invoice.payment_succeeded, invoice.payment_failed

SendGrid Webhook

  • Endpoint: POST /webhooks/sendgrid
  • Signature header: X-Twilio-Email-Event-Webhook-Signature
  • Verification: ECDSA signature using your SendGrid public key.
  • Events consumed: delivered, bounce, blocked, spam_report, unsubscribe, open, click
Webhook secrets are configured by Aedan Rose during onboarding — you do not need to manage them yourself.

Error Codes

All API errors return JSON with shape { "statusCode": <n>, "message": "<string>", "error": "<string>" }.

StatusWhen you see itWhat to do
400Invalid request body, missing required field, malformed JSONInspect message for the specific field; fix and retry
401Missing or expired tokenRefresh credentials; re-login
403Cross-tenant access attempt or insufficient roleConfirm restaurant ID matches your account; check role requirements
404Resource not found, or RLS-hidden from your tenantVerify the resource ID; if accessing another tenant's data, you'll see 404 not 403
409Conflict — duplicate email, shift overlap, etc.Read message for the conflicting field
422Validation failed (e.g., invalid date range)Check field constraints; retry with valid values
429Rate limit exceededBack off; see Rate Limits
500Server error — usually transientRetry with exponential backoff. If persistent, check status page
503Service unavailable — maintenance or incidentCheck status page for current incident

Rate Limits

The widget endpoints are sized for normal customer traffic; admin API endpoints are sized for dashboard use. If you need higher throughput for an integration, contact [email protected].

  • Conversation limit: Hard-capped per plan tier (see Plan Feature Matrix). Excess conversations return 429 with message: "Monthly conversation limit reached".
  • Auth endpoints: Bursty signin/signup is throttled to protect against credential stuffing.
  • Public deletion form: 5 requests per IP per hour.
Rate-limit responses include a Retry-After header indicating seconds to wait before retrying.

Plan Feature Matrix

Every paid plan includes the full 5-agent AI system, 24/7 guest chat with voice input, online ordering, loyalty & CRM, full API access, and 100+ language support. Table reservations ($0 per cover) and the floor plan come with Full House and Manager. Every new account starts with a 30-day trial of the full Manager plan experience — see The 30-Day Free Trial. Multi-location groups run under one dashboard — each location pays for its own plan, tiers can be mixed, and how many locations you can add scales with your plan (see Multi-Location & Group Overview).

Plan Price Conversations/mo Emails/mo Team members Support
Free (order-only)$0— (no AI chat; guests browse & order, 1 menu upload/mo)Email
Online Ordering$79/mo ($790/yr)2,00010,000— (no team tools)Email
Full House$299/mo ($2,990/yr)10,00050,000 marketingUnlimitedPriority
Manager$949/mo ($9,490/yr)25,000150,000UnlimitedPriority + dedicated account manager
  • Online Ordering adds the Money Dashboard, revenue analytics, menu manager, guest loyalty & accounts, Customers CRM with Reach Out campaigns and custom-branded emails, automated win-back & reminders, Lost Customer / Lost Revenue / Guest Intelligence, VIP section bookings with deposits, and sales-tax configuration; it does not include team tools, inventory, table reservations, or the floor plan.
  • Full House adds unlimited team members (scheduling, mobile apps, chat, tasks, PTO, trades, time clock with geofence, roles), all inventory + recipes tools, online table reservations at $0 per cover, floor plan + table management, Google presence + web traffic intelligence, peak-time patterns, and full analytics.
  • Manager adds the Aedan Rose Copilot (AI operations manager — chat-run scheduling, menus, pricing, and campaigns with 300+ tools — see The Aedan Rose Copilot; Copilot usage included), VIP pre-shift briefings, feedback sentiment, competitor intelligence, AI-assistant visibility, your brand on guest emails, quarterly reviews, and a monthly ROI report.

Full pricing details: /pricing.html

The 30-Day Free Trial

Every new account starts with a 30-day trial of the full Manager plan experience — the real top tier, not a cut-down demo. No credit card required.

  • During the trial you get everything Manager includes: the AI widget, Stripe-connected ordering, table reservations and the floor plan, team tools, guest marketing, full analytics, the menu manager, API access — and the Aedan Rose Copilot.
  • The Copilot comes with a limited one-time preview allowance that covers the whole trial, rather than the full monthly allowance paid Manager accounts get. If you use it up before day 30, only the Copilot pauses — ordering, reservations, your team, analytics, and email all keep working normally for the rest of your trial. Subscribing to the Manager plan starts your full monthly Copilot allowance right away. Copilot top-ups cannot be purchased during the trial.
  • On day 30, if you haven't subscribed, your account lands on the Free (Order Only) plan: guests can still browse your menu and place paid orders, and transactional emails (receipts, confirmations) keep sending — but AI chat conversations switch off.
  • Nothing is deleted. Your menu, settings, and history stay intact; upgrading from Settings → Billing restores full features immediately.
VIP section bookings and online ordering work on every plan, including Free — those never switch off.

Guest Marketing

Everything guest-facing lives in the Guest Marketing hub in the dashboard sidebar (on the legacy view this item is labeled Customers). The hub has four tabs:

  • Overview — guest KPIs, plus your Lost Revenue and Guest Intelligence reports in one place, and a “What to do next” feed of action insights. Each insight names the guests behind it and shows a dollar impact only when it can be computed from your own order history — when it can't be priced honestly, no number is shown.
  • Guests — your known-guest list with win-back risk bands (watch / at risk / likely lost), including the at-risk Lost Customers view.
  • Segments — your custom guest groups and the Reach out to a group campaign composer.
  • Automations — retention automations and Guest journeys.

Sending controls and branding live under Settings → Email Branding. This section covers what each piece does and which plan turns it on.

Capability Where it lives Lowest plan
Your custom guest groupsReach out → Your custom guest groupsOnline Ordering ($79)
Email templates (save & reuse)Reach out → Save as templateOnline Ordering ($79)
A/B testing on sendsReach outOnline Ordering ($79)
Your logo & colours on guest emailsSettings → Email Branding → Brand & LogoOnline Ordering ($79)
Guest journeys (multi-step automations)Reach out → Guest journeysFull House ($299)
Send from your own domainSettings → Email Branding → Send from your own domainManager ($949)
On an older grandfathered plan? The tiers above are for the current $79 / $299 / $949 lineup. A handful of long-standing accounts are still on a legacy plan structure where some of these unlock higher up. If your dashboard disagrees with this table, your account is on a legacy plan — check Settings → Billing for what you actually have, or email [email protected].

Your custom guest groups

A guest group is a saved set of rules — for example “visited in the last 90 days and spent over $150” — that keeps itself up to date. You build it once and every future send can target it. Groups are recalculated when you use them, so a guest who stops qualifying stops receiving that group's email.

Groups can filter on visit recency and frequency, lifetime and average spend, loyalty status, and the items a guest has actually ordered, so you can build things like “people who ordered the tasting menu but haven't been back in two months.”

Email templates and A/B testing

Any email you compose under Reach out can be saved with Save as template and reused later. When you send, you can split the audience and test two subject lines or two bodies against each other; the winning variant is reported back with open and click numbers so the next send is better than the last.

Guest journeys Full House ($299) and up

A journey is a multi-step automation: a guest enters on a trigger (first visit, birthday month, no visit in N days), waits a defined amount of time, and receives a step — repeating until the journey ends or the guest exits.

There are 45 built-in journey templates covering welcomes, win-backs, milestones, occasions (birthdays, anniversaries), slow-night fills, VIP cultivation, and recognition — plus a from-scratch builder. Annual occasion journeys (a birthday, the anniversary of a first visit) are built to repeat: the same guest can be re-enrolled when the occasion comes around again, rather than hearing from you once ever and then never again.

  • Simulation is safe. Running a simulation sends nothing. It shows you who is currently enrolled and what they would receive next.
  • Journey email counts against your monthly email allowance like any other send. See Usage Alerts & Volume Add-Ons.

Auto-exit — check this before you launch

A journey can stop sending to a guest who does the thing the journey was trying to cause. In the editor this is the “Stop the sequence when they act” checkbox. On a journey you build from scratch it is off until you switch it on.

Of the 45 built-in templates, 35 already have it on — including Win Back Lapsed, First-Timer → Regular, No-Show Recovery and Birthday Table. Ten ship with it deliberately off, because they are courtesy and recognition notes that should finish even if the guest orders in the meantime — for example:

  • Welcome Series & First Week Welcome
  • Review Recovery
  • VIP Cultivation
  • Big Spender Thank-You & Top Spender Recognition
  • Visit milestones (5th visit, 10th visit, one-year anniversary) and loyalty tier upgrades
If you build your own win-back or lapsed-guest journey, tick that box. Without it, a guest can receive a “we miss you” email the day after they came in.

One honest limitation when it is on: stopping the journey on a new booking relies on the reservation being linked to that guest's account, which happens when they book while signed in. A walk-in or a phone booking taken under their name will not always be matched, so it may not stop the sequence.

A simulation preview covers guests who are already enrolled in the journey. It is a preview of the next step, not a forecast of future enrolments.

Unsubscribes & suppression

Every marketing email carries a working unsubscribe link, and we support the Gmail/Yahoo one-click unsubscribe standard (List-Unsubscribe) — a guest who taps “Unsubscribe” in their mail client is opted out of your marketing instantly, per restaurant, with no extra page to click through. Suppressed guests are automatically excluded from future campaigns and journeys. Transactional email is never suppressed — order receipts and reservation confirmations always send, even to guests who opted out of marketing.

Send from your own domain Manager ($949)

Every paid plan puts your logo, colours, and restaurant name on guest emails (Brand & Logo). The Manager plan goes one step further and lets you own the actual From address, so guest email arrives from your own domain instead of ours.

Setup is a DNS step: the dashboard gives you the records to add at your domain registrar and verifies them for you. Two things worth knowing:

  • Your existing email keeps sending normally the entire time. The records we ask for are additive — a few CNAMEs. We do not touch your MX records and we do not rewrite an existing SPF record, so your day-to-day mailbox is unaffected.
  • We never change your DNS for you. We show you what to add and we check whether it is there. Every write happens in your registrar, by you.
  • A missing DMARC or BIMI record will never stop your email from sending. Leaving them alone is a completely safe choice.

Read this before you turn on DMARC enforcement

DMARC has a policy setting. At p=none it only reports, and it is harmless. Moving it to quarantine or reject is a destructive change to your whole domain, not just to Aedan Rose:

Enforcement silently blackholes any sender you haven't aligned first. Your accountant's invoicing tool, your booking platform, your point-of-sale receipts — anything that sends mail as your domain and isn't correctly set up will be treated as forged and silently discarded. There is no bounce message. You will not know it happened. Inventory and align every sender before you enforce.

This is why BIMI is not a free win. Showing your logo in the inbox requires DMARC already at quarantine or reject — so “I just want the logo” means committing to enforcement first. Treat BIMI as the last step of a deliberate deliverability project, not a switch to flip. If you are unsure, stay at p=none and email [email protected] before changing it.

Usage Alerts & Volume Add-Ons

Two things are metered monthly: AI conversations and emails. Both reset at the start of each billing period, and both can be topped up without changing plans.

80% alerts

When either meter crosses 80% of your monthly allowance, we let you know. Two things happen:

  • An email goes to the account address. This is sent by a once-daily sweep, not the instant you cross the line — so expect it within a day of hitting 80%, not within minutes.
  • A push notification to any staff who have the mobile app installed with billing notifications switched on.

To keep these from becoming noise, the email is rate-limited — you will not get one every day for the same situation.

Treat 80% as a heads-up, not a safety net. Because the alert is batched daily, a heavy send can take you from 80% to your limit before the notice arrives. If you are planning a large campaign near the end of your period, check your usage on the billing screen first rather than waiting to be told.

We do not cut your service off mid-month without warning.

Email volume packs

Buy from Settings → Billing → Monthly Emails → Add Emails:

Pack Price
10,000 extra emails/month$25/month
50,000 extra emails/month$99/month
150,000 extra emails/month$249/month
A pack is a recurring monthly charge, not a one-time top-up. When you buy a pack it becomes a permanent line on your subscription, billed again every month on your normal renewal date, until you remove it. If you only needed the extra headroom for one busy month, remove the pack afterwards — it appears in the Active Add-Ons list on the same billing screen, with a cancel control. Otherwise you keep paying for it every month.
  • Available on every paid plan (not the free order-only tier).
  • On a monthly plan your first charge is prorated to the days left in the current period, then renews at full price on your plan's renewal date. On an annual plan the pack is charged in full up front.
  • Each pack is a fixed size — you cannot buy a partial one. To get more headroom, buy a larger pack, or purchase an additional pack.
  • Buying a pack does not change your plan tier or your base monthly price.

Extra AI conversations

Add conversations from Settings → Billing → Conversations → Add More at $8 per 100 conversations, without changing your plan tier. Like the email packs, this is a recurring monthly add-on — remove it when you no longer need it.

Copilot credit top-ups Manager plan

The Aedan Rose Copilot is included with the Manager plan — usage is included and there is no separate add-on to buy for it. If you run through your included monthly usage before your reset date, the owner can Add credits from the Workspace → Copilot tab:

  • Three ways to buy. Pick the Booster or Pro pack, or choose the Custom option and enter any amount from $5 to $5,000. Checkout is handled securely by Stripe.
  • Price-only. You see exactly one dollar figure — the price you pay. Your allowance itself is always shown as a percentage; there are no token counts or running dollar balances to interpret.
  • One-time, not recurring. Unlike the email and conversation packs above, a Copilot top-up is a single one-off charge — it does not renew.
  • Owner-only. Admins and managers can use the Copilot, but only the account owner can buy credits.
  • Instant. The moment your payment clears, your percentage meter ticks back up.
  • Not available during the free trial. Trial accounts use the one-time Copilot preview allowance — subscribe to the Manager plan first, and top-ups unlock from there. See The 30-Day Free Trial.

Role Permissions

Aedan Rose has four roles. Each has progressively more capability:

Capability Server Manager Admin Owner
View own shifts & tasks
Request time off / shift trades
Send group-chat / DMs
Approve time off / trades
Create / edit shifts & schedules
Manage tasks & assignments
Add / remove employees
View full analytics & revenue
Configure AI training & brand
Billing, plan & account settings
Delete restaurant account

The 5-Agent AI System

Every Aedan Rose plan includes five specialized AI agents that coordinate behind the scenes. Customers interact primarily with Aedan Rose; the others are background specialists that handle domain-specific reasoning.

  • Aedan Rose — Primary customer-facing agent. Handles greetings, menu Q&A, reservations, takeout/delivery routing, and general inquiries.
  • Raguel — Reservations & booking specialist. Validates party size, time slots, and availability.
  • Remiel — Menu & dietary specialist. Answers ingredient and allergen questions with high precision.
  • Michael — Operations & logistics. Handles takeout routing, delivery quoting, and hours-based decisioning.
  • Raphael — Sentiment & escalation. Detects unhappy customers and triggers staff handoff workflows.

What Guests Can Do in the Chat

The widget is not just Q&A — it is a full guest-service surface. Here is what your guests actually get once it's installed and trained:

Order & pay without leaving the chat

Guests browse your menu as visual cards inside the conversation — with item photos, prices, and dietary tags (vegan, gluten-free, and so on) shown as chips on each card. Tapping a card opens a detail view; an +Add button builds a cart, and checkout completes on Stripe's secure hosted page. Each card also has an Ask button so a guest can ask the AI about that specific dish.

Reservations & VIP bookings

  • Table reservations — offered in chat when your plan includes online reservations (Full House and up). On plans without them, the widget simply never offers a reservation it would have to decline.
  • VIP section & private-dining bookings — available through the chat on every plan, including Free, with deposits handled through Stripe.

Dietary & allergen questions

Ingredient and allergen questions are routed to the dietary specialist agent (see the 5-agent system) and answered from your trained menu data — including the per-item descriptions and dietary tags you maintain in the menu manager. Menu cards and item detail views surface dietary tags directly, so guests can see at a glance what fits their diet before they even ask.

100+ languages, both directions

  • Your greeting can be set in any of 100+ languages (Settings → AI Training has a searchable language picker).
  • Guests can write in whatever language they prefer — replies come back in the guest's language.
  • Right-to-left scripts (Arabic, Hebrew, Persian, Urdu and others) render correctly and automatically, per message.

Guest accounts

When your plan includes diner accounts, an account button appears in the chat header so guests can sign in — the same account works on your Order Page. The widget hides the button automatically on plans without accounts.

After a guest completes an order, reservation, or VIP booking in the chat, the confirmation card includes a calm inline invitation to create a diner account — it sits below the confirmation details and is never a blocking popup, and it never covers the confirmation number. The invitation only appears when your plan includes diner accounts and the guest isn't already signed in; a guest who dismisses it is not asked again.

The Aedan Rose Copilot Manager plan

The Copilot is an AI operations manager that lives in a sidebar inside your admin dashboard. Where the widget serves your guests, the Copilot works for you: you tell it what you want in plain language — “schedule Matthew for the closing shift tomorrow”, “raise every wine by $2”, “86 the salmon”, “send a win-back campaign to guests we haven't seen in 60 days” — and it does the work using the same data and permissions model as the dashboard itself.

Availability: Manager plan ($949) only — the Copilot API returns 402 on lower tiers. Within a Manager account it is available to owner, admin, and manager roles; staff roles cannot use it.

What it can operate — 300+ tools

The Copilot has over 300 registered tools spanning every part of the product — including a set of connector write-ops that let it push work into the outside tools your team already uses. The major areas:

Area Examples Tools
Scheduling & time offCreate shifts, templates, bulk builds, trades, leave types, accruals, blackout dates38
Menu, orders & reservationsMenu CRUD, bulk price changes, bulk 86, edit/cancel orders, reservation CRUD, widget config31
Guest CRM & lifecycle marketingSegments, lost customers, campaigns, smart send, loyalty, retention sweeps, feedback35
VIP sections & private diningSections, bookings, check-in, deposits, refunds, payment links19
InventoryStock, forecasts, recipes, 86/restore, thresholds, bulk adjust17
Floor plan & tablesTables/areas CRUD, presets, bulk ops, assign reservations to tables16
Time clock & geofenceWho's on the clock, timesheets, anomalies, tips, geofence radius & enforcement, punch edits12
Operational tasksTask categories, templates, bulk assign, generate, notify12
Settings, training & opsAI training, notifications, email settings, data cleanup12
Users & accessInvites, roles, profiles, API key regeneration11
Guest journeysList/simulate/create/activate journeys, stats9
Team commsGroup chat, DMs, pins, reactions, broadcasts8
Billing & money readsMoney summary, payout history, subscription, usage vs limits, invoices8
Analytics readsPeak times, AI-widget performance, feedback analytics, top sellers7
Manager notebookYour daily notebook entries and to-do items7
Traffic & presence, sales tax, order page, widget oversight, custom segmentsWebsite traffic, campaign links, tax settings & rate suggestions, order-page settings/slug/embed/analytics, live conversation oversight25
Connector write-opsSend to Slack, append rows to Google Sheets & Microsoft Excel, POST signed webhooks, publish to Wix & Squarespace, open GitHub issues7
Core abilitiesPersistent memory (remember/recall/forget), chart rendering, exact calculation, web research, dashboard navigation, background task tracking~20

Working autonomously

Beyond one-shot requests, the Copilot can carry a job to completion on its own — while still stopping for your approval on anything consequential:

  • Autonomous mode (opt-in). In Workspace → Copilot each user can flip on Autonomous mode: the Copilot then executes routine changes without an approval tap per step and keeps going until the job is done. Even with it on, it always stops and asks first before money operations, staff or role changes, bulk outbound sends, and destructive or irreversible actions. Everything it does is logged, and you can turn the switch off anytime.
  • Write retries. If a write briefly fails (a hiccup, a lock), the Copilot retries it safely using an idempotency key, so a change lands exactly once — never twice, never zero times silently.
  • Task planning (task-DAG). For a multi-step job it plans the steps, runs the independent ones together, and orders the ones that depend on each other — so a big task finishes faster without stepping on itself.
  • Auto-continue after approval. When you approve a step in the middle of a longer job, the Copilot picks the job back up and keeps going automatically — you don't have to re-ask.
  • Background tasks. Long jobs keep running after you close the sidebar and report back when done. You can see running, paused, failed and completed work at a glance in the Workspace → Copilot tab.

The approval model — how writes stay safe

  • Reads run freely. Looking things up (schedules, sales, menu prices, timesheets) needs no approval — the Copilot chains read → compute → propose in one turn.
  • Consequential writes raise an approval card. Before a schedule change, price change, campaign send, or similar action lands, the Copilot shows an on-screen card describing exactly what will happen. Nothing executes until you approve it — and the Copilot is explicitly forbidden from claiming an unapproved action was performed.
  • Revisions are painless. Ask to change a pending proposal and the old card is voided automatically the moment the new one is created — you never have to reject anything manually.
  • Money operations require step-up re-authentication on top of the approval card — an extra identity check for the highest-consequence actions.
  • Writes are verified. Every write tool declares a verification step, so the Copilot confirms the result actually landed before reporting success.

Usage & the meter

  • Copilot usage is included with the Manager plan and resets each billing period.
  • The sidebar and the Workspace → Copilot tab both show a usage meter — percent used, percent remaining, and your reset date. Usage is always shown as a percentage; we don't display token counts or a running dollar balance.
  • Heavier reasoning modes consume your allowance faster; you choose the trade-off per conversation.
  • Run out before the reset? The account owner can Add credits right from the Workspace → Copilot tab. Choose the Booster or Pro pack, or enter a custom amount ($5–$5,000) — you see only the price you pay, and it's a one-time charge that does not renew. See Usage Alerts & Add-Ons.

Working style

  • Long jobs continue in the background. A big task (a month of schedules, a large menu restructure) keeps running after you close the sidebar and reports back when done.
  • It remembers. The Copilot has persistent memory across sessions (tell it “remember that Tuesday deliveries arrive at 9am”), reads and writes your manager notebook, renders charts from your data, does exact math, and can research the web when asked.
  • It looks things up instead of asking you. Current prices, existing hours, an employee's shifts — the Copilot reads them itself rather than asking you for data it can fetch.
  • No raw IDs. It refers to shifts, guests, and menu items by name and description — never internal identifiers.

Loyalty & Rewards

The Loyalty & Rewards tab in the dashboard runs a points program for your guests. You set the rules once, hit Save, and guests do the rest automatically — no day-to-day work for you.

How guests earn

  • Points per spend. Every order earns points at the rate you set, written as “X points per $Y” — for “1 point per $1” use 1 and 1; for “5 points per $100” use 5 and 100. The editor shows a live example (“A $40 order earns 40 points”) as you tune it.
  • Welcome bonus. An optional one-time gift of points the moment a guest joins — a small bonus (like 50) nudges first-timers to sign up. Set 0 to skip it.
  • Membership levels. As lifetime points grow, regulars rise through the levels you name (like Silver → Gold) and can unlock perks such as VIP section access on the levels you mark.

How guests redeem

You define the rewards guests can trade points for, each with a name and a point cost. Three reward types: a free item, a percent off, or a dollar amount off. Percent and dollar discounts are applied automatically at checkout; a free item is handed over in person. Price rewards so they feel reachable after a few visits.

Where guests see their points

Signed-in guests can simply ask the AI widget — “how many points do I have?”, “what tier am I?” — and their account summary in the chat shows their points balance. On your side, the Members list in the Loyalty tab shows every enrolled guest with their spendable points balance, lifetime earned (which sets their level), and a manual Adjust control for adding or removing points by hand.

Good to know

  • The master switch is safe. Turning the program off pauses earning and redemption but keeps every balance intact for when you switch it back on.
  • Multi-location pooling is opt-in. Owners of several locations can share loyalty across the locations they select: guests earn at any of them and see one combined balance, and rewards are redeemed at the location where the guest checks out. Off by default — each location keeps its own points.
  • The Copilot can operate the loyalty program for you as part of its guest-marketing toolset.

Inventory

The Inventory tab tracks stock for menu items and raw ingredients, in three sub-tabs: Items, Ingredients, and Recipes.

Stock states at a glance

Insight cards across the top count and filter your stock into: Low stock, Out / 86'd, Not selling (stale), Selling fast, and Well stocked — plus a total inventory value figure. Each stock record carries quantity on hand, unit, par level, and a per-item low-stock threshold you set, which drives the low/out flags.

86'ing and the menu

86'ing a stock-tracked item takes it off the menu — guests can't order it — and marks the 86 as a human decision, so restocking will not silently put it back; only an explicit restore does. Restoring clears both the manual and automatic 86 and makes the item orderable again (restock first, or an auto-86 sweep may take a zero-stock item straight back off). Items without a stock record can be 86'd in bulk from the menu tools instead.

Recipes & forecasts

The Recipes tab links menu items to the ingredients they consume, so selling a dish draws down the right raw stock. Depletion forecasts project when an item will run out at its current selling pace, so you can reorder before the Friday rush does it for you.

The Copilot has 17 inventory tools — ask it “what's low on stock?”, “86 the salmon”, or “when will we run out of tequila?” and it reads or operates the same inventory data.

Online Presence

The Online Presence tab is a health-check of how easy your restaurant is to find online: your website, your Google profile, directory listings such as Yelp, and whether AI assistants recommend you. It rolls up into a single presence score, and every number on the page is real and stamped with the date it was last checked.

Refreshes are metered per plan

Tapping Refresh re-checks your website, Google profile, and listings right now and updates every number on the page. Your plan includes a set number of refreshes each month — a “Refreshes left this month” meter on the page shows exactly where you stand, and the allowance resets on the 1st. Out of refreshes? Upgrade for more, or wait for the reset. Most owners only need a refresh every week or two.

Sales Tax at Checkout

Sales tax is configured under Settings → Payments → Sales Tax at Checkout. It is off by default and opt-in per restaurant — nothing is added to guest orders until you enable it.

  • You set the rates. Enabling requires a base combined rate above zero; every rate must be between 0 and 20%. Tax is always calculated from your settings.
  • Per-category rules. On top of the base rate you can set different rates for specific categories — alcohol, non-alcoholic beverages, cold to-go items, retail, cigars/tobacco, and hookah/shisha. Per-category rates are percent-of-price only; per-unit excise taxes (per-cigar, per-ounce) are not supported — price those into the item.
  • The rate suggestion is an estimate. The dashboard (and the Copilot's suggest a tax rate tool) can propose a state-average rate, but it is never auto-applied — you must click Apply, and you should verify the exact rate with your accountant.
  • What guests see. With tax added at checkout, guests see the tax line on their order total; you can instead run tax-inclusive pricing, where your menu prices already contain the tax.
  • You remit as usual. Collected tax lands in your payout like the rest of the order. Aedan Rose never files taxes for you, and none of this is tax advice.

Multi-Location & Group Overview

Each location is its own restaurant and billing unit with its own plan — tiers can be mixed freely (for example, a Manager flagship and an Online Ordering food truck under one login). Current per-location billing accounts can add locations as separate billing units; if a legacy account has a location cap, Group Overview shows the exact limit that applies to that account.

  • Adding a second location: open Restaurants in the dashboard sidebar and use Add Restaurant. The new location starts isolated, with its own team, operational settings, billing, payment account, inventory, reservations, VIP configuration, catering configuration, and local knowledge.
  • Group Overview: Restaurants opens a card per accessible location, one-tap dashboard switching, and per-restaurant shortcuts. The internal restaurant switcher changes which dashboard tenant you manage; it is different from the optional guest chooser described below.
  • Loyalty can pool across your locations if you opt in — see Loyalty & Rewards.

Guest widget location chooser

Owners with multiple locations can turn on a location chooser for the customer-facing widget. Your existing website embed remains the stable entry point. Before the welcome message or guest session begins, the widget asks which published location the guest wants.

Routing guarantee: after selection, the guest receives a location-bound session. Chat history, menu, order, reservation, reservation change, VIP or bottle-service booking, catering request, diner account, payment, confirmation number, inventory adjustment, analytics, feedback, and staff notification all use the selected restaurant. The widget never merges or transfers a live cart, booking, payment, or account context to another location.

Set it up

  1. Open Restaurants → Guest widget locations.
  2. Select at least two locations you literally own. A restaurant you can access only as an admin, manager, or employee cannot be added to your public group.
  3. Give every location a clear guest-facing name, reorder the choices, and review the mobile-style preview. The verified restaurant address is displayed read-only; update it in the restaurant profile so the chooser, receipts, and routing stay aligned.
  4. Choose Local or Shared independently for regular Menu knowledge and About knowledge.
  5. Save the private draft, run validation, review the exact guest impact, and publish. Saving alone never changes the live widget.

Menu and About combinations

MenuAboutWhat guests receive
LocalLocalEach selected location uses its own Menu and About documents.
SharedLocalOne published regular catalog; each location keeps its own About knowledge.
LocalSharedEach location keeps its own regular catalog; brand and policy knowledge is shared.
SharedSharedThe published regular catalog and group About knowledge are shared.

What sharing never changes

  • Selected-location operations remain local: inventory quantities, recipes, sold-out/86 state, kitchen hours, pickup/delivery availability, tax jurisdiction and rates, Stripe account, reservations, VIP sections, confirmation numbers, analytics, and notification recipients.
  • The Aedan Rose 3% customer service fee remains enforced. It is customer-facing, code-owned, and cannot be removed or configured by a restaurant. It is unrelated to the internal manager Copilot.
  • Catering remains local. The regular Menu toggle does not share catering menus, minimums, headcount rules, lead time, fulfillment, service area, delivery fee, or prepayment policy.
  • Loyalty remains independent. Points pool only through the separate shared-loyalty setting. Enabling the guest chooser does not merge diner balances.

Permissions, safety, and recovery

  • Owner: can edit group drafts, choose members and sources, publish, disable, and roll back.
  • Admin or manager: can inspect the effective source for an accessible location and maintain permitted local fallbacks, but cannot create or publish a cross-location relationship.
  • Draft and live are separate. Concurrent or stale edits are rejected instead of overwriting a newer version.
  • The embed anchor is required. The location whose widget code is installed cannot be removed or hidden inside the wizard. This prevents its URL from publishing a configuration it cannot bootstrap.
  • Validation is a staged write, not a read. It materializes immutable Menu/About snapshots and records a validated or failed draft state, but it never changes live guest behavior. Missing members, ambiguous labels, unavailable source documents, ownership changes, and ineligible locations block activation.
  • Rollback is versioned. It restores a complete earlier configuration without moving existing guest sessions or transactions.
  • Selector off and Disconnect group are different. Selector off keeps the published group and any shared Menu/About source. Disconnect group uses a separate confirmation to return new sessions to independent local widgets; existing signed sessions finish on their frozen restaurant and version. The stored version and audit history remain available for recovery.
  • Embed contract compatibility is fail-safe. The widget accepts the current versioned bootstrap contract (schemaVersion: 1). A future or malformed contract is not treated as a valid cross-location selection; the widget shows a safe recovery state instead of guessing.
  • Safe failure: if the group bootstrap cannot be verified, the widget does not expose a stale foreign location. Existing location-bound transactions continue with their original restaurant.

The Aedan Rose Copilot can inspect this configuration, stage a draft, run owner-only validation, and propose publish, rollback, emergency selector-off, or full unpublish. Draft creation and validation are classified writes; live cross-location changes require a specific owner approval card, step-up authentication, optimistic-version recheck, safety snapshot, read-after-write verification, audit record, and conflict-aware undo. The internal Copilot itself is never charged the customer-facing 3% fee.

Data Management

The Data Management tab gives you direct control over your own operational data — useful for housekeeping and for data-minimization policies (see Data & Privacy).

  • Selective deletion. Choose exactly which data types to delete: reservations, orders, AI actions, conversations, customer feedback, and webhook events — each checkbox shows a live count of what's there.
  • Retention window. Deletion applies only to records older than the period you pick: 30, 60, or 90 days, 6 months, or 1 year — recent data is never swept up by accident.
  • Scheduled cleanup. An optional recurring cleanup (for example weekly) keeps the same policy applied automatically.

This complements the account-level deletion paths described in Account Management: Data Management trims specific data types on a schedule you choose, while account deletion removes everything.

Team Chat & DMs

The Team Chat tab (Full House and Manager, which include team tools) gives your staff a group channel everyone sees plus direct messages between any two team members. Messages support reactions, pins, and read receipts; managers and admins can pin announcements to the top of the group channel, where they appear in a slim banner above the chat. Message history is retained and searchable by content or author, and deleted messages are removed for all team members. The same chat is available in the staff mobile app, and the Copilot can send messages and broadcasts on your behalf (with your approval).

Affiliate Program

Refer restaurants to Aedan Rose and earn 8% of every subscription payment they make — every month, for as long as they stay subscribed and you remain in the program. Free to join.

Referred plan You earn (monthly)
Online Ordering — $79/mo$6.32/mo
Full House — $299/mo$23.92/mo
Manager — $949/mo$75.92/mo

How referrals are credited (attribution)

  • Your link and QR code set a 90-day attribution window. When someone opens your affiliate link (or scans your QR code), a first-party attribution record is set on their device that lasts 90 days. If they sign up any time inside that window, the referral is yours.
  • Last click wins. If a prospect clicks more than one affiliate's link, the most recent click before signup gets the credit.
  • A manually entered referral code always counts. If the restaurant types your code into the signup form, that credits you even if no link was ever clicked — and a manually entered code takes precedence over any link-click attribution.
  • In-person QR scans are durable. A QR code scanned in the field (from a flyer, table card, or your phone) stores a 90-day record on that device, so a signup completed days or weeks later on the same device still credits you — even if the original browser tab was closed long ago. Scanning on one device and signing up on a completely different one is the one case that can't be connected.
  • Self-referrals are blocked. Referring your own restaurant (matching email, account, or signup identity) does not earn commission.

How commissions and payouts work

  • Real payments only. Commission accrues when the referred restaurant's invoice is actually paid — and if a payment is refunded or disputed, the matching commission is reversed.
  • Annual plans pay you monthly. When a referral pays for a year up front, your 8% is split into 12 monthly installments — steady recurring income rather than one spike.
  • 30-day hold. Each commission becomes payable 30 days after the underlying payment clears (this absorbs refund windows).
  • $25 minimum payout. Balances below $25 roll forward to the next cycle.
  • Paid via Stripe Connect directly to your bank account.

The affiliate dashboard

  • Your referral link and QR code, always one tap away.
  • A Grow tab of ready-made marketing playbooks, downloadable assets, and a media library of promotional material.
  • A full earnings ledger and payout history.
  • A direct message thread with our team.

Learn more and join at /affiliates.html · sign up at /affiliate-signup.html · program terms at /affiliate-terms.html.

Security Overview

  • Row-Level Security (RLS). Every database table containing tenant data has RLS policies enforced at the PostgreSQL layer. Cross-tenant access is impossible even with a compromised application-layer auth token.
  • Non-superuser application role. The application connects as aedan_app, a non-superuser role with NOBYPASSRLS. Administrative operations require a separate, audited role.
  • Firebase authentication. User identity is managed by Firebase Auth — passwords are never stored in our database.
  • TLS-only. All traffic uses TLS 1.2+ (HTTP requests are redirected). The widget refuses to load over plain HTTP.
  • Stripe-hosted payments. Card data never touches Aedan Rose servers — checkout occurs on Stripe's PCI-DSS-certified hosted page.
  • Audit logging. Auth, billing, and destructive actions are logged with actor, timestamp, and target.

Data & Privacy

  • Tenant isolation. Your restaurant's conversations, customers, and analytics are isolated at the database level. Not visible to other restaurants on the platform.
  • Customer PII. The widget collects only what customers volunteer in conversation. No browser fingerprinting, no cross-site cookies, no marketing pixels.
  • End-user deletion. Customers can request deletion of their conversation history via /delete-account.html. Requests honored within 30 days.
  • Retention. Conversation transcripts are retained for analytics. Configurable retention windows are available on Full House and Manager plans.
  • DPA / SCCs. Manager customers can request a signed Data Processing Addendum and Standard Contractual Clauses — email [email protected].
  • Full policy: /privacy-policy.html

CORS & Content Security Policy

If your site uses strict CSP or non-default CORS, ensure the following:

Minimum CSP Directives

script-src 'self' https://aedanrose.ai;
connect-src 'self' https://aedanrose.ai wss://aedanrose.ai;
frame-src 'self' https://aedanrose.ai;
img-src 'self' https://aedanrose.ai data:;
style-src 'self' 'unsafe-inline' https://aedanrose.ai;

Allowed Origins

Add every origin where the widget will load (scheme + host + port). https://www.yourdomain.com and https://yourdomain.com count as separate origins. Local development origins (http://localhost:3000) must be added explicitly — file:// origins are not supported.

Reverse Proxies & CDNs

If you front your site with Cloudflare, Fastly, or Vercel, ensure Authorization, Origin, and X-Restaurant-Id headers are forwarded to origin.

For deep troubleshooting, see the Troubleshooting Guide in your admin dashboard's Dev tab.