your menu. your link. no commission.
customers order on a branded page we build for you — pickup or delivery, paid up front. you keep every dollar, cash out the same day, and their info lands in your inbox, not a marketplace's.
online ordering. no commission.
what your customer sees.
they tap your link, build their order, pay with card. if you offer both, they pick pickup or delivery at checkout. the ticket hits your kitchen the moment they confirm.
- public order page at /mudpuppy-order/[your-slug]
- card up-front — no chasing payment when they don't show
- pickup, delivery, or both — toggle in settings, customer picks at checkout
load. share. deliver.
build your menu
items, prices, photos, mods. set your hours, set your prep time. pick pickup-only, delivery-only, or both. you set your flat delivery fee and your minimum.
drop your link anywhere
instagram bio, sign at the counter, a printed QR card. customers tap it, build their order, pay up front. ticket hits the kitchen the second it's confirmed.
pickup or driver dispatch
they pick it up at your counter, or you dispatch a DoorDash Drive driver — flat fee, no commission, your customer stays your customer.
AI that grows the ticket — included.
Mudpuppy drafts your menu descriptions and your promos, replies to catering requests for you, and picks the best 'complete your order' add-ons to lift each ticket — all included, no add-on. allergens stay in your hands.
no cut of your sales.
you pay one flat price for the software and keep every dollar of every order. sell a hundred plates or a thousand — we never take a slice.
a real site, not a free template.
your order page lives on your own web address and looks like you paid a designer for it — not a cookie-cutter page buried on a 'square.site' link that screams free tool. the free options park you on their domain; yours is yours.
a better rate on every card.
your customers' cards run at a lower processing rate than the popular free ordering pages charge — the savings on every order quietly help cover the whole thing.
nothing sneaks onto the bill.
the price on your menu is the price your customer pays. no mystery 'service' or 'convenience' fee tacked on in your name to make a regular feel nickel-and-dimed.
your customers are yours.
every name, number, and order history lands in your account. text them, reward them, win them back — they're not locked inside someone else's app.
no contract. cancel anytime.
month to month — no year-long lock-in, no early-termination fee. stay because it's working, not because you're trapped. we'd rather earn it every month.
a real person gets you live.
we set up your menu, photos, and payments with you. you're not handed a login and a help article and left to figure it out alone.
delivery without the middleman tax.
hand a delivery to a driver for one flat fee — no per-order commission eating your margin. the customer sees your name on the receipt, and they still belong to you.
169 features. Filter what you want to see.
This list updates the moment something ships. Status pills don't lie — if it says coming soon or waiting on, that's where we honestly are.
- shipped 2026-05-21livepublic order page at /mudpuppy-order/[slug]
- shipped 2026-05-21livemenu items with photos, prices, modifiers
- shipped 2026-05-21liverequired modifier groups (min/max rules)
single/multi-select, required, min/max selections per group — the depth behind 'modifiers'
- shipped 2026-05-21liveorder-level customer notes (allergies, 'no onions')
'anything we should know?' textarea at checkout; renders on the kitchen ticket
- shipped 2026-05-21liveper-line item notes
customer notes a single item — prints on the kitchen ticket
- shipped 2026-05-28livelive 'where's my order?' tracker
post-checkout confirmation page polls every 15s — customer sees status without calling
- shipped 2026-05-22liveone-tap reorder for returning customers
public reorder endpoint rebuilds a past order into the cart
- shipped 2026-05-21livetip jar at checkout
0/10/15/20% presets; operator can toggle off entirely
- shipped 2026-05-22livesales tax (local rate, food only)
operator's local rate, computed server-side on food subtotal — never on tip or delivery
- shipped 2026-05-30liveAR DFA sales-tax auto-pull (origin + auto-refresh)
save your kitchen's city in settings and flip 'auto' — the suite pulls the current state+county+city rate from the AR Department of Finance quarterly roster every time you save. AR taxes prepared food at the seller's location, so pickup AND delivery both ring the same origin rate. mig 0400.
- shipped 2026-05-21livecard prepay (Stripe Connect, commission-free)
operator runs their own Express Connect; destination charges to the shop's bank, no shows still pay
- shipped 2026-05-21livepickup mode
customer comes to you, order ready at the counter
- shipped 2026-05-22livedelivery mode
address + flat delivery fee + optional minimum
- shipped 2026-05-22liveboth modes (customer picks at checkout)
- shipped 2026-05-28liveorder ahead for a future date / time
customer schedules pickup or delivery for next week's catering, not just now
- shipped 2026-05-29just shippedupsells at checkout
suggest add-ons the customer can tap once before paying
- shipped 2026-05-29just shippedcombo deals
bundle items at a single price — lunch combo, family pack
- shipped 2026-05-29just shippeddelivery zones with per-zone fees
different delivery fees by neighborhood or radius
- shipped 2026-05-29just shippeddayparting menus
breakfast menu mornings, lunch menu midday, dinner menu evenings — auto-switches
- shipped 2026-05-29just shippedauto-dispatch a DoorDash Drive driver (with dasher tracking)
white-label Drive — flat fee, no commission; tracking URL + dasher name/phone on the operator's order modal
waiting on: needs Heath's DoorDash Drive account + env vars to go live
- shipped 2026-05-29just shippedoperator-side DoorDash dispatch controls (dispatch / refresh / cancel)
manual control of a live driver dispatch on the order modal
- shipped 2026-05-29just shippedDoorDash webhook receiver
live dasher status updates flow back into Mudpuppy
- shipped 2026-05-29just shippedDoorDash dispatch times dasher arrival to when the food is actually ready
pickup_time = now + current wait (or scheduled time on order-ahead) so the driver doesn't show up to an empty pass
- shipped 2026-05-22livepoints / gift card / punch redemption as tender at public checkout
customer applies gift card balance + points before the card charge; tender caps against the running total
- shipped 2026-05-22livepromo code entry on the public order page
customer types the code at checkout; same engine the register uses
- shipped 2026-05-21liveCustomizations room — modifier groups + options CRUD (togglable)
full author-side API for modifier groups + options; togglable as a room via section toggle
- shipped 2026-05-29just shippedprintable 'scan to order' QR sign
generates a print-ready QR sign with the shop name + ordering URL
- shipped 2026-05-29just shipped'add Order Online to your Google listing' walkthrough
guide to set the Mudpuppy link as your GBP order button (commission-free)
- shipped 2026-05-22livepublic-page rewards lookup by phone at checkout
as the customer types their phone, the page live-fetches their points balance + punch progress for this shop so they see what they can redeem before paying
- shipped 2026-05-22livesubscription perks auto-applied at checkout
active members get their % discount + free delivery stamped on the order row at checkout time (audited per order)
- shipped 2026-05-28liveorder-ahead picker shows 'full' slots greyed/disabled
when a slot hits its per-future-slot cap the public picker still shows it but greys it so the customer can't pick a kitchen-busted time
- shipped 2026-05-28livedriver name + tracking URL + ETA on the customer's live-tracker
delivery orders surface dasher name + DoorDash map link + ETA on the customer's confirmation/tracking page (not just to the operator)
- shipped 2026-05-21liveApple Pay / Google Pay / Link express checkout on the public order page
Stripe ExpressCheckoutElement above the 'or pay by card' divider — only renders when a wallet is available
- shipped 2026-05-29just shippedout-of-window dayparted categories stay visible but greyed
menu sections from the wrong daypart show up dimmed with an 'available [breakfast]' hint — not hidden, just held until their time
- shipped 2026-05-22livereorder stale-menu warning
reorder pre-load flags when a past item is gone — 'added what we could; a few things changed, double-check below'
- shipped 2026-05-29just shippedoperator pickup-address form for DoorDash dispatch
street / city / state / ZIP / phone / driver instructions — gated so auto-dispatch can't flip on until the address is usable
- shipped 2026-05-22livelive ZIP-debounced delivery-zone resolve on the public order page
350ms debounce — the diner sees their zone name + fee + minimum before submitting; checkout is blocked when the ZIP isn't in any zone
- shipped 2026-05-28livecustomer can re-rate dishes from the live-status page
'change my rating' link toggles back into the rate-dishes UI after submitting
- shipped 2026-05-29just shippeddietary filter chips on the public menu
vegan / vegetarian / gluten-free / dairy-free / nut-free / halal / kosher — top-of-menu chips hide items that don't match every selected tag; bar only renders when at least one item is tagged
- shipped 2026-05-29just shippedFDA Big-9 allergen tags on every item
red 'Contains: PEANUTS · DAIRY' chip on the public menu — prints prominently on the kitchen ticket so the line cook sees it before plating
- shipped 2026-05-29just shippedper-item spice level (0–4 flames)
flame icons render next to the item name on the public menu; NULL hides them for sides and drinks
- shipped 2026-05-29just shippedoperator-set 'NEW' / 'Limited time' item badge with auto-expiry
the chip disappears on its own once the deadline passes — no manual cleanup
- shipped 2026-05-29just shipped'most popular' badge computed from the last 30 days of orders
stamped live on the public menu — operator never has to mark a winner; the data does
- shipped 2026-05-31just shippedcustomer favorites + resume cart + saved delivery notes
returning customers see their favorited items at the top of the menu, their last in-progress cart waiting (so a phone-flip mid-order doesn't lose the work), and their saved delivery notes prefilled on the address step
- shipped 2026-05-31just shippedpublic customer-lookup, favorites, and resume APIs
the public order page authenticates returning diners by phone number (the customer key) and serves favorites + the in-progress cart back to them — no account, no password
- shipped 2026-05-31just shippedabandoned-cart recovery (cron + email)
a customer who builds a cart and walks away gets a branded 'still hungry?' email with their cart prefilled — daily cron, one send per cart, opt-out per shop
- shipped 2026-05-21livelive ticket queue (3-column kanban: New / Making / Ready)
tinted columns; the advance button reads 'Start' → 'Mark ready' → 'Picked up'/'Delivered'
- shipped 2026-05-21liveprep-time controls
set the prep time for the shop; customer sees a real ETA
- shipped 2026-05-29just shippedper-item prep minutes with parallel-kitchen MAX cart ETA
set real minutes per item (a Coke isn't 20 minutes, a brisket plate isn't 20 minutes); checkout ETA takes MAX across the cart — instead of the common assumption that a ticket finishes only when its slowest item does
- shipped 2026-05-28liveslot capacity
cap how many orders can fire in any 15-minute window so the kitchen doesn't drown
- shipped 2026-05-28liveper-future-slot caps for order-ahead
distinct from live throughput — caps how many advance orders can land in a given Friday lunch slot
- shipped 2026-05-28liveper-day 7-row hours editor with closed-day flag
Monday-through-Sunday hours model, not a single all-week range
- shipped 2026-05-28live'slammed' live wait-time override
operator override — busy / slammed / 60 / 90 min — shown to customers instead of normal prep time
- shipped 2026-05-21livepause 'accepting orders' switch
one-tap pause stops new public orders without taking the menu down
- shipped 2026-05-21livesold-out / availability toggle per item
one-tap 'on/off' pill marks an item unavailable without deleting
- shipped 2026-05-21livemenu sections (category management)
add/remove sections like 'Breakfast', 'Drinks'
- shipped 2026-05-21livemark-paid override for pay-at-pickup tickets
settle an unpaid ticket at the counter
- shipped 2026-05-21livecancel order from the kitchen view
'cancel order' inside the order modal
- shipped 2026-05-22liverefunds (full + partial card refunds)
Stripe refund; reverses points + gift card + promo + punch on full refund
- shipped 2026-05-21livestore hours + temporary closures
- shipped 2026-05-28liveinline 'live wait' override dropdown on the orders header
busy / slammed / 30 / 45 / 60 / 90 min — set the slammed quote in one click without leaving the queue
- shipped 2026-05-21liveone-tap 'mark item sold-out / back' availability toggle on the menu row
separate route shape that flips availability without opening the item dialog
- shipped 2026-05-21livemenu-photo R2 pipeline (auto-rotate, EXIF strip, WebP normalize)
operator uploads any image; server normalizes + serves a fast WebP with a year-long immutable cache
- shipped 2026-05-29just shippedcombo bundles carry their own photo
so a Lunch Special tile shows the plate, not text
- shipped 2026-05-22liveorder modal opens from a global-search deep link
/mudpuppy?order=<id> auto-opens that ticket so the search palette can jump straight into one
- shipped 2026-05-21livemodifier + combo selections snapshot onto the order line
groupName / optionName / priceDelta (and slot / item for combos) are frozen on the ticket so editing a menu item later never rewrites a past order
- shipped 2026-05-29just shippedper-item stock counts with atomic race-safe decrement
items with a stockCount reserve quantity at order placement; auto-86 (hidden from the public menu) when count hits 0
- shipped 2026-05-29just shipped'only N left' low-stock urgency badge on the public menu
renders when stock falls to or below the operator's threshold — the last few cookies move twice as fast
- shipped 2026-05-21livelive ticket queue auto-refresh every 15 seconds
operator never has to reload to see new orders
- shipped 2026-05-21live'show completed' filter (back-of-queue history view)
flips the queue into a list of picked-up + canceled orders without leaving the page
- shipped 2026-05-21livededicated kitchen-display surface (KDS) at /mudpuppy/kitchen
a true kitchen-display screen — horizontal strip of orders oldest-first, distinct from the operator orders kanban; auto-polls every 10s even when the tab is backgrounded
- shipped 2026-05-29just shippedper-line bump on the kitchen display
single tap finishes one item; when every line on an order is bumped the ticket auto-flips to ready and the customer 'ready' email fires
- shipped 2026-05-29just shippedlive age timer with amber-at-10 / red-at-15 minute tint on every KDS card
the pass sees at a glance which ticket is aging out
- shipped 2026-05-29just shippedaudible bell on a new KDS order (Web Audio beep + mute toggle)
the pass hears every new ticket without staring at the screen; mute toggle persists per device
- shipped 2026-05-29just shippedtimed-snooze pause ('we're slammed, back at HH:MM')
operator sets a future timestamp; the public order page auto-clears at that instant with no cron, no manual unpause; shows resume time + optional reason
- shipped 2026-05-29just shippedorder-cancel/refund returns stock to the shelf
releaseStock puts reserved units back so a canceled order never silently eats inventory
- shipped 2026-05-31just shippedphone-order dialog (operator-typed call-ins)
'☎ phone order' button on the orders shell opens a dialog the operator types into while the customer's on the line. order lands in the queue + auto-opens its detail modal — same flow as a public order, with tender flexibility for cash pickup
- shipped 2026-05-31just shippedCSV menu import from your old point-of-sale
'Import from CSV' button in the menu shell + empty-state opens a parse + preview dialog. paste a menu export from your old point-of-sale instead of re-typing every item — Mudpuppy detects the format from the headers
- shipped 2026-05-31just shippedAI-drafted menu item descriptions (food-profile-aware)
included with the app — type an item name, get a polished first-draft description in your shop's voice (bakery vs BBQ vs café each sound right). allergens are deliberately untouched — safety domain stays in the operator's hands
- shipped 2026-05-31just shippedESC/POS thermal-printer printing
kitchen tickets print direct to Star / Epson thermal printers via ESC/POS — native, no third-party print service in the middle
- shipped 2026-05-31just shippedEpson SDP + Star CloudPRNT printer endpoints
cloud-connected receipt printers (Epson Server Direct Print, Star CloudPRNT) fetch tickets from Mudpuppy directly — works for kitchens that don't keep a PC at the pass
- shipped 2026-05-31just shippedbusy-mode override for the kitchen
one-click 'kitchen is slammed' override raises customer-visible prep times + caps incoming order rate until you flip it back
- shipped 2026-05-31just shippeddead-items report
menu items that haven't sold in the chosen window, ranked by 'longest since last order' — surfaces the things to drop or rework
- shipped 2026-05-22livegift cards
phone-number-keyed, no card to lose
- shipped 2026-05-22livepromo code rules (% / $ / BOGO, min subtotal, max-uses)
first-order discount, slow-day deals, with caps
- shipped 2026-05-22liveloyalty points
earn on every order, redeem on a future one
- shipped 2026-05-22livepunch cards
10th coffee free, digital
- shipped 2026-05-22livereferral program with public landing
share a code, /mudpuppy-ref/[code] tracks clicks; both sides get credit
- shipped 2026-05-28livemeal subscriptions
monthly coffee plan, weekly lunch box — auto-charged, redeemable on a cadence
- shipped 2026-05-28liveoperator-side subscription signup (Stripe Elements in the customer dialog)
enroll a customer in a plan with card captured via Elements
- shipped 2026-05-28livesubscription perks — free delivery + standing discount
freeDelivery boolean + discountBps per plan
- shipped 2026-05-28just shippedsubscription dunning (auto-cancel after 3 fails)
daily-cron retry with max-attempts before cancelling
- shipped 2026-05-22livepaid-order reward fan-out (single-shot settle guard)
when an order flips to paid, one atomic hook draws down gift-card tender, spends points, logs the promo, awards earn-points, and stamps the punch — protected by rewards-settled-at so a re-run never double-credits
- shipped 2026-05-22liverefund clawback cascade on a FULL refund
Stripe refund triggers points clawback + gift-card restore + promo redemption undo + punch-card stamp reversal, all idempotent
- shipped 2026-05-22liveoutstanding gift-card liability rollup on the rewards page
header shows '$X in unspent balances outstanding' so the operator knows what they still owe in food
- shipped 2026-05-22livegift-card audit ledger (issue / redeem / void)
every gift-card movement writes a transaction row so the running balance is reconstructable + auditable
- shipped 2026-05-28livesubscription transactional emails (welcome / renewal / payment-failed)
three branded sends fire automatically — welcome receipt at signup, renewal receipt each cycle, dunning note when a card fails
- shipped 2026-05-28livesubscription billing ledger
every billing event (signup / renewal / renewal_failed / cancel) lands so the operator can answer 'when was this subscriber last billed?' without leaving Mudpuppy
- shipped 2026-05-22liveoperator sell-a-gift-card modal
preset amounts ($10/$25/$50/…), recipient name + note, then a 'gift card ready' code-display screen so the operator can text the code to the buyer
- shipped 2026-05-28livesubscription plan archive / restore / delete CRUD
operator can pause selling a plan without disrupting existing subscribers; archived plans render dimmed with an 'archived' label
- shipped 2026-05-22liveconfigurable points earn rate + redemption value
N points per $1 + cents per point, tunable per-shop from the points settings — drives all earn + preview-redeem math
- shipped 2026-05-28liveoperator can cancel a customer's active subscription mid-cycle
writes a cancel row to the subscription ledger and stops future charges; perks honor the period-end policy
- shipped 2026-05-22livepublic referral landing with click attribution
/mudpuppy-ref/[code] records the click against the referrer and routes the visitor to the shop's order page — attribution is automatic
- shipped 2026-05-22livelive promo + gift-card preview at checkout
the diner sees the discount + gift-card balance applied to their cart BEFORE submitting — nothing is recorded or drawn down on the preview
last updated 2026-05-31
online ordering. no commission.
tell us about your business and we'll get you set up.