Skip to content

Every order, credited to its partner and channel.

The food hall’s orders came through delivery apps, its own website, kiosks, the counter and partners’ own sales files, each in a different system. We loaded them into Snowflake, credited every order to its partner brand, channel and location, and gave each partner a dashboard of its own sales.

Kitchen HubFood hall and ghost kitchens · Partner sales reporting

Harbour Noodle Co.Partner sales · Oct 10–16, 2022

ChannelGross sales

  1. Uber Eatsvia Deliverect$5,180
  2. SkipTheDishesvia Deliverect$3,240
  3. Walk-in and phonevia Square$1,960
  4. Website pickupvia Square$1,520
  5. Kioskvia Square$1,040

Gross sales, one table

Illustrative data
$12,940514 orders

A report per system, and partners asking for their own.

Delivery-app orders sat in Deliverect, counter, kiosk and outpost sales in Square, staff hours in 7shifts, and some partners sent their own sales files. An order recorded in two systems could be counted twice, and each partner brand needed a view of its own sales.

Reported one system at a time

  • DeliverectDelivery apps
  • SquareCounter, kiosk, outposts
  • 7shiftsStaff hours
  • Partner filesPartners’ own sales
A total per system

Missing from the reports

Each partnerLabor by hourOne sales number

Every order in one Snowflake table, and a dashboard for every partner.

Daily syncs loaded Deliverect, Square, 7shifts, website orders and partner files into the food hall’s Snowflake, where dbt models built one sales table for the food hall’s dashboards and one dashboard per partner brand.

Kitchen Hub’s environment

Orders, sales, staff hours and traffic

  • Deliverect: delivery apps
  • Square: counter, kiosk, outposts
  • 7shifts: time punches, wages
  • GA4: website traffic

The food hall’s own data

  • Website orders
  • Discount codes
  • Partner sales files
  • Brands and retirement dates

Snowflake and dbt

  1. LoadedDaily syncs, failures posted to Slack
  2. CleanedRefunds out, retired brands dropped
  3. Sales tableOne row per order: partner, channel, location, hour
Sales by brandSales by channelLabor vs salesItem levelDiscounts
Partner dashboardHarbour Noodle Co. ▾

Powered by Maven

One per partner brand, each seeing only its own sales

How the food hall’s reporting came together.

Six steps, from daily syncs to discount codes tied to orders.

  1. 01

    Load every system into Snowflake

    Scheduled syncs loaded Deliverect orders, Square sales, 7shifts time punches and website orders into Snowflake every day, and a failed sync posted an alert to Slack.

    Before

    Sales kept in a separate sales tracker

    After

    Every system in one warehouse, loaded daily

  2. 02

    Credit each order to its partner and channel

    dbt models put delivery-app, counter, kiosk, outpost and partner-reported sales in one table. Each order carried its partner brand, channel, location, hour and order type: pickup, takeout or delivery.

    Before

    A total from each system

    After

    One row per order, credited to its partner and channel

  3. 03

    Count each order once

    Each report drew on one of two source sets, by brand or by channel, so an order recorded in two systems wouldn’t be added twice. Refunds came out, orders paid in several payments counted once, and retired brands dropped out after their last day.

    Before

    Orders in two systems, added twice

    After

    One source set per report, by brand or by channel

  4. 04

    Put labor beside sales

    7shifts time punches were split into hours and costed at each role’s wage, so sales, orders, hours worked and labor cost lined up by hour and location.

    Before

    Staff hours in 7shifts, sales elsewhere

    After

    Sales per hour worked, through the day

  5. 05

    Give each partner its own dashboard

    Each partner brand had a dashboard of its sales by channel, location and item, and partner logins were scoped to their own brand. Partner reporting later moved to a white-labeled Maven portal.

    Before

    One report for the whole food hall

    After

    A dashboard per partner, scoped to its own sales

  6. 06

    Tie discounts to orders, and show traffic by source

    A marketing dashboard listed each discount code used on website, kiosk and food hall orders by location, marked each customer’s first and repeat orders, and showed GA4 sessions and purchases by traffic source.

    Before

    Discount codes and traffic outside the sales reports

    After

    Discounts by order, purchases by traffic source

One sales table, read by channel or by brand. Each view draws on one source set.

One illustrative week across every location. Switch between sales by channel and sales by partner brand, with labor beside sales through the day.

Food hall salesUpdated Mon, Oct 17, 2022 · 6:00 AM
Last week · Oct 10–16, 2022 ▾All locationsAll order types
Credit sales
Gross sales$48,260One source set per view
Orders1,912Average $25.24
Sales per hour worked$51.50937 hours worked
Labor cost$15,93033% of sales

Sales by channel

Gross · share
Uber Eatsvia Deliverect$16,84035%
SkipTheDishesvia Deliverect$9,62020%
Walk-in and phonevia Square$7,45015%
Website pickupvia Square$6,41013%
Kioskvia Square$5,28011%
Outpostsvia Square$2,6606%

Total, all channels$48,260

Sales per hour worked

7shifts hours · all locations
  1. 11 AM–1 PM$58
  2. 1–3 PM$34
  3. 3–5 PM$29
  4. 5–7 PM$72
  5. 7–9 PM$61
  6. 9–10 PM$38
Above the week’s $51.50Below it
Illustrative data

Sales spread across delivery apps, POS and partners? We’ll walk through your systems and show how every order fits in one table, credited to its channel and brand.

Book a walkthrough

Restaurants and food halls: every order, credited to its channel.

Start with a free scan of your tracking, or have us bring delivery, POS and labor data into one set of reports.