Salta ai contenuti

Restaurant delivery

Questi contenuti non sono ancora disponibili nella tua lingua.

Delivery lets each restaurant own its own courier experience (not a marketplace). Guests order from the public menu, choose Delivery, pay by card or cash when you allow it, and track the rider live.

Need Where
Plan feature delivery Same plans that include order-ahead by default
Restaurant coordinates Restaurant profile → address with lat/lng
At least one zone Delivery & Takeaway → Delivery tab
Enable delivery Delivery & Takeaway → Delivery → Enable delivery
Stripe (for card) Payments onboarding — or cash-only if Allow cash / pay on delivery is on
  1. Landing Order → storefront.
  2. Choose Pickup or Delivery (when both are enabled).
  3. For delivery: search address → confirm zone/fee/ETA → pay card or cash.
  4. After accept, status advances to out for delivery / delivered.
  5. Track link uses MapLibre + live GPS while the driver is on duty.
Role Actions
CRM Orders Accept/reject, advance status, see delivery badge + address
CRM Dispatch Register drivers (team members), create multi-stop runs, start runs, ETA override
CRM Delivery settings Enable, accepting, cash, prep/load ETA knobs, zones
Operator app Delivery Go on duty (GPS), mark stops picked up / delivered
  • Card (default): auth-then-capture on accept (same as pickup prepaid).
  • Cash: opt-in delivery_pay_on_delivery. No Stripe; paid_at stamps when marked delivered.
Env Purpose
ROUTING_BASE_URL OSRM-compatible router for drive ETAs (self-host in prod)
GEOCODER_BASE_URL LocationIQ: https://eu1.locationiq.com/v1 (EU) or https://us1.locationiq.com/v1
GEOCODER_API_KEY LocationIQ access token (dashboard → Access Token). Alias: LOCATIONIQ_API_KEY
MAP_STYLE_URL MapLibre style (default OpenFreeMap liberty)
PUBLIC_BOOKING_BASE_URL / EIGHTY_SIX_PUBLIC_URL Track links in emails
NATS_URL Live location fan-out to track SSE

Without routing, the API falls back to zone base drive minutes. Without geocoder base/key, address search returns unavailable (guests need coordinates another way).

  1. Create a LocationIQ account and copy the Access Token.
  2. Prefer eu1 if most restaurants/guests are in Europe.
  3. Seal into eighty-six-api-config (staging + production separately):
Terminal window
# After merging existing secret keys, add:
# GEOCODER_BASE_URL=https://eu1.locationiq.com/v1
# GEOCODER_API_KEY=<token>
kubectl create secret generic eighty-six-api-config \
--namespace booking \
--from-literal=GEOCODER_BASE_URL=https://eu1.locationiq.com/v1 \
--from-literal=GEOCODER_API_KEY='YOUR_TOKEN' \
# ...all other existing keys...
--dry-run=client -o yaml \
| kubeseal --format yaml \
> infra/k8s/overlays/staging/eighty-six-api-sealed-secret.yaml

Free tier is typically enough for early multi-restaurant volume if address search is button/Enter-driven and Redis-cached (24h).