Event bookings
The page where you sell private events — weddings, banquets, business dinners, catering — and track what each one costs you to run. Used by the owner and manager when a customer asks “can you do this event for us?”
What it does
A venue makes most of its margin on private events, but the math is hard to see in real time. The chef knows what dishes will be made, the customer agrees on a price, the kitchen orders ingredients — and somewhere in the middle, the question “is this event actually profitable?” usually gets answered after the fact, on a back-of-envelope sum.
This page makes that visible while you plan, not after. You build the event’s custom menu by picking recipes from the catalog (with the quantities the chef commits to), add the other things the customer pays for — drinks, service, room rental, anything else — and the system shows you the estimated food cost, the customer total, and the margin all at once.
Phase 1 covers planning and cost estimation. Issuing the actual quote and tax invoice will land in a later phase, alongside tracking the real ingredient cost after the event happens.
How to use it
- From the sidebar, open Prenotazioni Eventi (under the Clienti section).
- Tap the blue + New booking button at the top right. A new draft booking opens immediately, with a placeholder customer (“New customer”) and a date one week from today.
- The booking page has three tabs at the top: Overview, Menu & lines, and Cost summary.
Filling in the Overview tab
This is where the booking’s facts live: customer details on the right, booking details on the left.
- Title — what you call this event internally (“Smith wedding”, “Acme Q4 dinner”).
- Status —
Draftwhile you’re still building it,Quotedwhen you send the price to the customer,Confirmedwhen they accept,Completedafter the event,Cancelledif it falls through. Inquiries from the public form (later phase) start atInquiry. - Event starts at / ends at — pick a date and time on the calendar.
- Headcount — number of guests. Required if you choose the per-head pricing mode.
- Pricing mode — three choices:
- Per-line — each line on the menu has its own price. Best for à la carte events.
- Total — one agreed amount for the whole event. Best for fixed-price packages.
- Per head — agreed price per person × number of guests. Best for set-menu banquets.
- Tax rate (%) — Italy’s 22 (or 10 for some food cases). Shown on the customer total.
- Currency — defaults to your venue’s currency. Two-letter code (EUR, USD…).
- Notes for customer — appears on the future quote/invoice.
- Internal notes — only you see these.
Tick the Company / business customer box on the right to enable the company name + tax ID fields. Leave it unticked for private clients (a couple booking a wedding, for example) — tax ID is optional in that case.
Tap Save booking when you’re done. The customer card has its own Save customer button.
Building the menu (Menu & lines tab)
This is where the chef plans what will actually be made.
Add a recipe line
- Pick a recipe from the Recipe dropdown. The dropdown shows the cost the system has computed for that recipe (“(cost €43.67)”), so you can see where the margin will come from before adding it.
- Type the Portions — how many you’ll make for this event.
- Tap + Add recipe line. A row appears at the bottom of the Lines list with the recipe’s name, the quantity, the unit (“portions”), and a 0 in the price column.
- Type the price the customer pays per portion in the price column (the rightmost editable field on the row). Press Tab or click away — it saves automatically.
Add a drink, service, room, or free-form line
The grey buttons under Add other line add a row of the matching kind:
- Drink / beverage — bottles or glasses you’ll bill the customer for.
- Service / staff — service charge, waiter hours, chef hours.
- Room / venue rental — flat fee for using the space.
- Free-form — anything else: decorations, music, equipment hire.
Each button creates a row with a placeholder description (“Service charge”, “Room rental”…). Click in the description field and rewrite it to whatever the customer will see on the invoice.
Refresh recipe costs
If a recipe’s ingredients went up in price after you added it to a booking, the cached cost on the line will be stale. Tap Refresh recipe costs at the top right of the Lines list to pull the current cost back in for every recipe row at once.
Reading the Cost summary tab
The tab has three sections:
- Customer total — net selling, tax, gross total. This is the bill.
- Food cost & margin — three lines compared side by side:
- Estimated — what the recipes were planned to cost, from the cached prices on each recipe line.
- Actual — what they really cost once the chef logged production. Empty until you log at least one batch (next section below).
- Margin — net selling minus food cost. As soon as you log an actual batch, the margin switches from using estimated to using actual — so the number reflects reality, not the plan.
- Actual production — list of batches the chef logged for this event, with date, recipe, quantity made, and the cost frozen at the moment of production.
The margin shown here is food-only margin. Service, drinks, room rental, and free-form lines don’t carry a cost yet (a future phase will let you assign supplier cost to drinks). So the percentage is your worst-case margin — the real margin will be higher once non-food costs are tracked.
Logging actual production
Before, during, or after the event, the chef can record what was actually made. This is what turns the estimated numbers into actual numbers.
- On the booking’s Cost summary tab, scroll down to the Actual production card.
- Tap the blue + Log production button. (It’s disabled if no recipe lines have been added to the booking yet.)
- A dialog opens:
- Recipe line — pre-selected to the first recipe on the booking. If you cooked something else, change the dropdown.
- Actual quantity produced — pre-filled with the quantity that was planned. Change it to the real number (e.g. you planned 50 portions but only made 48).
- Notes (optional) — free text. “Extra portion for the kitchen tasting”, “ran short on flour”, etc.
- Allow stock shortfall — leave unchecked normally. Tick it only if ingredients are low and you want the system to log the batch anyway and let stock go negative — the gap then surfaces on the inventory page so someone can restock. Useful when receiving is behind.
- Tap Log production. Three things happen at once:
- The recipe’s ingredients are deducted from stock (oldest expiry first, the standard prep behaviour).
- The cost is frozen — what it costs you to make this batch right now is recorded permanently, even if supplier prices change tomorrow.
- The batch shows up at the bottom of the Actual production card, and the Actual food cost line in the margin card switches on.
After the event, log every batch you made for it. The food-cost number on the booking will reflect what you really spent, not what you guessed at planning time.
What happens behind the scenes
When you tap + New booking, two records are created at once: a fresh customer row (“New customer”) and a fresh booking row tied to it, status draft, dated a week ahead. You’re routed to the booking’s editor immediately so you can start filling things in.
When you add a recipe line, the system reads the recipe’s rolled-up cost per portion at that moment and stores it on the line. The recipe’s cost can keep changing afterwards — your booking’s stored cost stays put until you tap Refresh recipe costs. This means the price you quoted the customer can’t silently drift if a supplier raises prices the day after.
The cost summary is computed live every time you open the page. It re-runs whenever you add, remove, or change any line.
Examples
- 🎂 Birthday dinner for 12 — Per-line pricing. Three recipe lines (antipasto, primo, secondo) at 12 portions each, one room rental flat fee, one service charge of 4 waiter-hours. Cost summary shows the food cost (sum of recipes only) and the gross customer total (everything plus VAT).
- 💍 Wedding for 80, fixed package — Total pricing mode with
agreedTotal = €5,000net + 22% tax = €6,100 gross. Recipe lines still added so the chef knows what’s planned and the system computes food cost. Margin = €5,000 − food cost. - 🍷 Corporate dinner, 30 guests, set menu — Per-head pricing at €85/person × 30 = €2,550 net. Recipe lines added at 30 portions each. The cost summary shows whether €85 leaves enough margin for the recipes the chef chose.
- ⚠️ What if I forgot the headcount? — Per-head pricing without a headcount shows a yellow warning on the Cost summary tab (“pricePerHead or headcount is missing”). Selling total stays €0 until you fill it in. No invoice can be issued in that state in a later phase.
Documents tab — quotes, invoices, payments
Once a booking has at least one menu line, the Documents tab gives you the full back-and-forth with the customer:
Issue a quote
- Open the Documents tab.
- Tap + Issue new quote (top right of the Quotes card).
- The system creates a versioned proforma — v1, v2, v3 — capturing the current customer details, menu lines, pricing mode, and totals. Validity defaults to 30 days.
- The booking’s status auto-flips to Quoted.
When the customer responds:
- Mark sent — flip the quote from draft to sent (you’ve actually emailed it).
- Accept — the customer agreed. Booking status auto-flips to Confirmed.
- Reject — they passed. You can record a reason.
- Issue new quote again — auto-replaces the prior outstanding version (the customer should ignore the old PDF).
Issue tax invoices
Two kinds of fiscal document, both with proper gapless invoice numbers:
- Deposit invoice — for the up-front amount when the customer confirms. Tap the grey + Deposit invoice button. Default amount is 30% of the outstanding total (you can change it). The booking’s tax rate applies.
- Final invoice — for the full event amount (or the remainder, depending on your fiscal practice). Tap the blue + Final invoice button.
Both buttons stay disabled until the customer has at minimum a tax ID, address, city, and country code on the Overview tab — those fields are required for any tax invoice. Cross-border events aren’t supported in v1: the customer’s country must match the venue’s tax jurisdiction. If you have private clients without a tax ID, you’ll need a non-fiscal receipt path (coming in a follow-up).
Issued invoices flow into the existing Fatturazione (accounting) app via the same sync that POS-side invoices already use — no extra step.
Record payments
Use the + Record payment button on the Payments card whenever money lands:
- Deposit — paid against the deposit invoice. Pick the matching invoice from the dropdown.
- Balance — paid against the final invoice (or directly, if you skipped the deposit).
- Refund — money sent back to the customer (cancellation, partial refund). Tracked separately so the summary is honest about inflows vs outflows.
Each payment has a method (bank transfer, cash, card, cheque, other) and an optional reference (transaction id, cheque number). The top-of-tab Payment summary card updates live: Total, Received, Refunded, Outstanding — with a green progress bar showing how much of the booking is paid.
If you mis-record a payment, tap Void on the row. Voided rows stay visible for audit but stop counting toward the summary.
Public inquiry form
Visitors to your public site can request an event directly without you having to enter anything by hand:
- Public URL:
app.bitethemenu.com/<your-slug>/events/inquire - A “Request a quote” call-to-action also appears at the top and bottom of the What’s On page.
- The form asks for: name, email, optional phone, event type (wedding / birthday / corporate dinner / etc.), event date & time, optional headcount, optional message.
- Required to submit: name, email, and event date.
When a visitor submits:
- The system creates (or reuses, if the email already exists for this venue) an event customer with the contact details from the form.
- A new booking is created with status Inquiry, the date and headcount from the form, and the message + event type stored as internal notes on the booking.
- You see it immediately in the Prenotazioni Eventi list with a blue INQUIRY badge — at the top since it’s the most recent.
From there it’s the normal flow: open the booking, complete any missing customer fields (tax ID + address if you’ll invoice them), build the menu, issue a quote.
Inquiries default to per_line pricing mode and inherit the venue’s currency. There’s no public quote view, no online accept, no online payment — those are deliberate exclusions: the customer only requests; the venue keeps full control of the commercial flow from admin.
Related features
- Recipes & BOM — the booking’s food cost comes from each recipe’s ingredient roll-up.
- Production log against a booking (Phase 2) — record what the chef actually made, so the system knows the real food cost, not just the estimate.