Partner Integration Technical Documentation
Goals of this Document
This document should outline the technical details of building a Partner Integration that sends data to Tenzo for a joint customer between the partner and Tenzo.
Once the build of the integration is complete, the Tenzo team will be in contact to ask the partner to complete the Partner Integration Certification. This document allows for correct documentation to be completed, shares knowledge of both Tenzo and the partner platform and shares key contacts on both partner and Tenzo so that everyone is informed. It is the official sign off on the technical side of the integration.
Data Delivery
Destination
Data is to be delivered via SFTP.
Within each SFTP folder there will be a 'writeable' folder. The data must be put in this folder.
During initial development and testing phase, the SFTP credentials will be provided by either the Partnerships team, Product Manager of Integrations or Implementation Managers at Tenzo. Tenzo will also provide the Partner with a sandbox account, to allow the Partner to test sending data to Tenzo and checking it against their own platform.
Once the partner has been certified via the Partner Integration Certification, the SFTP credentials will be provided by Implementation Managers or Customer Success Managers at Tenzo.
Naming Requirements and File Type
These should be delivered to the SFTP as CSV files. The name of these files depends on the type of data being sent and must begin with:
"sales_""labor_"- this is actual labour (shifts taken place in the past)"labor_planned_"- this is scheduled labour (shifts scheduled for the future)"actual_usage_"- this is the COGS (cost of goods sold)"theoretical_usage_"- this is the theoretical usage (in theory how much did we use based off of sales)"wastage_"- wasted food and beverage costs per item"menuitem_costs_"- cost of the menu items (dish or recipe cost)
If possible, sending one file per location/site is preferable for debugging purposes. However Tenzo can support all locations to be contained within one file.
For example the Partner could send one file for multiple locations:
but one location at a time is preferable:
Example Files
You can find example files in the following way:
Example google sheet here (one CSV per tab)Or you can find specific CSV examples here:
- actual_usage_20240101_locationa.csv
- exchange_rates_20240101_locationa.csv
- labor_20240101_locationa.csv
- labor_planned_20240101_locationa.csv
- menuitem_costs_20240101_locationa.csv.csv
- purchases_20240101_locationa.csv
- sales_20240101_locationa.csv
- social_20240101_locationa.csv
- theoretical_usage_20240101_locationa.csv
- wastage_20240101_locationa.csv
Date Ranges
Tenzo recommends to send different amount of data depending on the type of data. These are:
- Sales: Previous 7 days.
- Labour: Previous 14 days (shifts taken place) and 14 days into the future (scheduled shifts)
- Inventory:
- Purchases, Theoretical Usage, Wastage, Menu Item Costs: Previous 28 days
- Actual Usage: Previous stocktake.
NOTE: Tenzo will overwrite ALL data for the date range that is sent. Tenzo cannot append additional data onto existing data. Therefore, each time data is sent, it must include a complete export of all data for the day(s).
Data Frequency
Frequency
Data should be sent at a minimum frequency of once per day.
Increases in frequency can be discussed on a per integration basis, as it's largely dependent on the type of data being sent.
Timings
Ideally the data is sent between 4am and 6am UK time (GMT in winter, BST in summer). Tenzo will ingest this data within 20 minutes from it being sent.
Data Fields
NOTE: The Tenzo format supports data at both an item and transaction level. Some metrics only make sense at a transaction level. In these cases Tenzo will take the data point from the first item on the transaction. Therefore it is always safest to repeat the transaction level data for every item on the transaction.
e.g. If there is a guest count of 4 on a table, this would be best represented as:
Tenzo would not sum the guest count → 12 in this example, but take the guest count from the 'Burger' row and therefore for the whole transaction Order ID → 1, it would have a guest count of 4.
This is also how Service Charge works.
Sales
Sales
The supported fields in the "sales" files are:
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
Order ID Text field
Format: Text field
Employee Name Text field
Format: Text field
Table Number Text field
Format: Text field
Time HH:MM
Format: HH:MM
Order Type Text field
Format: Text field
Revenue Center Text field
Format: Text field
Product Item Text field
Format: Text field
Product Category Text field
Format: Text field
Product Division Text field
Format: Text field
Guests Integer
Format: Integer
Quantity Float (Decimal)
Format: Float (Decimal)
Net Amount Float (Decimal)
Format: Float (Decimal)
Gross Amount Float (Decimal)
Format: Float (Decimal)
Discount Name Text field
Format: Text field
Discount Amount Float (Decimal)
Format: Float (Decimal)
Service Charge Float (Decimal)
Format: Float (Decimal)
Labor
Labor
The supported fields in the "labor" files are:
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
House Part Text field
Format: Text field
Role Text field
Format: Text field
Employee Name Text field
Format: Text field
Pay Rate TypeText field
Format: Text field
Pay RateDecimal
Format: Decimal (e.g. 12.5)
Shift Start Time HH:MM:SS
Format: HH:MM:SS
Shift End Time HH:MM:SS
Format: HH:MM:SS
End DateYYYY-MM-DD
Format: YYYY-MM-DD
MinutesInteger
Format: Integer(e.g. 300)
Base AmountDecimal
Format: Decimal (e.g. 131.75)
Holiday AccrualDecimal
Format: Decimal (e.g. 131.75)
PensionDecimal
Format: Decimal (e.g. 131.75)
Employer TaxesDecimal
Format: Decimal (e.g. 131.75)
Fully Loaded AmountDecimal
Format: Decimal (e.g. 161.97)
Labor Planned
The supported fields in the "labor_planned" files are:
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
House Part Text field
Format: Text field
Role Text field
Format: Text field
Employee Name Text field
Format: Text field
Pay Rate TypeText field
Format: Text field
Pay RateDecimal
Format: Decimal (e.g. 12.5)
Shift Start Time HH:MM:SS
Format: HH:MM:SS
Shift End Time HH:MM:SS
Format: HH:MM:SS
End DateYYYY-MM-DD
Format: YYYY-MM-DD
MinutesInteger
Format: Integer(e.g. 300)
Base AmountDecimal
Format: Decimal (e.g. 131.75)
Holiday AccrualDecimal
Format: Decimal (e.g. 131.75)
PensionDecimal
Format: Decimal (e.g. 131.75)
Employer TaxesDecimal
Format: Decimal (e.g. 131.75)
Fully Loaded AmountDecimal
Format: Decimal (e.g. 161.97)
Inventory
Actual Usage
The supported fields in the "actual_usage" files are:
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Text field
Format: Text field
Amount Float (Decimal)
Format: Float (Decimal)
Theoretical Usage
The supported fields in the "theoretical_usage" files are:
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Text field
Format: Text field
Amount Float (Decimal)
Format: Float (Decimal)
Wastage
The supported fields in the "wastage" files are:
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Text field
Format: Text field
Amount Float (Decimal)
Format: Float (Decimal)
Menu Item Costs
Date YYYY-MM-DD
Format: YYYY-MM-DD
Location Text field
Format: Text field
MenuitemText field
Format: Text field
Cost Float (Decimal)
Format: Float (Decimal)
FAQ
File size permitting, we usually recommend a date range depending on the type of data. See the Date Ranges section above. These changes would appear in the file sent the next day and then would get updated on Tenzo.
The file should not be sent. Tenzo will be alerted to no data on our side. However if at anytime you experience any issues, then please contact Tenzo (emails at end of this document).
All fields do not need to be populated. Tenzo will load what is in the file.
Contacts
| Name | |
|---|---|
| Partnerships | partnerships@gotenzo.com |
| Product | product@gotenzo.com |