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
- Uber Eatsvia Deliverect$5,180
- SkipTheDishesvia Deliverect$3,240
- Walk-in and phonevia Square$1,960
- Website pickupvia Square$1,520
- Kioskvia Square$1,040
Gross sales, one table
Illustrative dataA 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
Missing from the reports
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
- LoadedDaily syncs, failures posted to Slack
- CleanedRefunds out, retired brands dropped
- Sales tableOne row per order: partner, channel, location, hour
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.
- 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.
BeforeSales kept in a separate sales tracker
AfterEvery system in one warehouse, loaded daily
- 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.
BeforeA total from each system
AfterOne row per order, credited to its partner and channel
- 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.
BeforeOrders in two systems, added twice
AfterOne source set per report, by brand or by channel
- 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.
BeforeStaff hours in 7shifts, sales elsewhere
AfterSales per hour worked, through the day
- 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.
BeforeOne report for the whole food hall
AfterA dashboard per partner, scoped to its own sales
- 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.
BeforeDiscount codes and traffic outside the sales reports
AfterDiscounts 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.

Sales by channel
Gross · shareTotal, all channels$48,260
Sales per hour worked
7shifts hours · all locations- 11 AM–1 PM$58
- 1–3 PM$34
- 3–5 PM$29
- 5–7 PM$72
- 7–9 PM$61
- 9–10 PM$38
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 walkthroughRestaurants 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.