Catering Partner Integrations
Olo Rails Integration
Menu Sync
56 min
ezcater and olo have two integrations available to our catering partners orders api and menus api the orders api transmits order data, while the menus api syncs the ezcater menu with your olo rails menu, allowing for menu per location this documentation provides comprehensive guidance for preparing menus for integration with ezcater it outlines menu features, requirements, best practices, and integration specific configuration guidance to ensure a smooth integration process to get the menus api configured, ezcater requires additional metadata tagging to automate the menu build the purpose of this document is to explain the steps needed to build and tag your menu with the necessary metadata tagging to automate the menu build to ensure a smooth transition, we highly recommend you add all metadata tags as soon as you can this will allow the ezcater team to streamline the process and work on getting your brand live as soon as possible for assistance or questions about the integration functionality or what metadata key/value to use , please reach out to api support\@ezcater com mailto\ api support\@ezcater com for assistance or questions regarding your olo menu (metadata placement, rails visibility settings, basket errors) please contact your olo customer experience manager or your olo project manager additional resources ezcater menu requirements https //api ezcater io/general menu guidanceezcater and olo rails faq https //api ezcater io/olo rails integrationrails filters/menu visibility https //olosupport zendesk com/hc/en us/articles/360028092432 rails filters marketplace menu visibility for a downloadable version please use the link below https //archbee doc uploads s3 amazonaws com/cnbnwfhdna9lzk7nmy mg 36jt7j4bhegaxdfnm1ths 20250324 183641 pdf metadata setup the purpose of this document is to identify and walk through the requried steps needed to set up metadata within olo menu management to ensure a smooth sync with ezcater via the menu api metadata is data that is entered in key/value pairs (also known as metadata tags) in menu admin in the case of ezcater specific metadata, the key/values are passed onto the ezcater platform to create a specific user experience for best practices and information on the metadata keys/values available for use, please follow below or reference ezcater’s features list how to set up metadata in the olo menu management click the metadata tag on the category, product, modifier group or modifier choice enter the key | value pair for a more in depth walkthrough of the steps above, please utilize the video below metadata callouts if you need to duplicate a product for ezcater and would like to use the same tags for the product make sure to keep the “keep existing metadata for product” checked do not delete any metadata from live ezcater products unless advised otherwise by ezcater/olo there are no negative implications to adding metadata in advance to a live ezcater menu prior to onboarding with the ezcater menus api remove the spacing that is present in the key or value field for example if a value is written vegetarian, gluten free it will fail instead remove the space vegetarian,gluten free keys and values are not case sensitive utensils specific metadata utensils is a general term used to describe the varying utensil items a customer will need utensils can include utensils; forks, knives, spoons, plates, bowls, and/or napkins we can accommodate free or paid utensils utensils selections from customers can be found in ezmanage ezcater requires all menus to have a utensil configuration ezcater provides consumers the ability to select or deselect their utensil requirements as the order forms in the cart the experience includes as items are added to the cart, tableware options appear in the cart in a dedicated section upon edit the consumer can select or deselect “tableware” as needed the options available for selection change based on the item’s option/choices selected free utensils specific metadata free utensils are modeled as an option/choice, are tagged as “utensils”, while hidden on the ezcater menu, they are presented as part of the checkout experience if utensils are free, all items will need to have a utensil configuration with the exception of individual drinks to create free utensils specifically for ezcater you will not use the single use category functionality instead you will create a modifier group under each ezcater specific item the table below highlights the possible configurations for utensils depending on the menu items offered utensils must be applied to all food items true falsefalse unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type exceptions that would not require utensils individual drinks create a utensils modifier within the group and map it to the pos add metadata by clicking the “tag” button, enter the key + value as shown below key choicetypetags value utensils for a more in depth walkthrough of the steps above, please utilize the video below paid utensils specific metadata paid for items are tagged as “utensils” and presented in the menu as an item customers can select these items and add them to the cart as they build their order paid utensils are set up by creating a utensils item with a cost under a “miscellaneous” category add metadata by clicking the “tag” button, enter in key + value as shown key itemtypetags, taxcategory value utensils, miscellaneous add option level for utensils and the necessary choices using the configuration below depending on the menu items offered true falsefalse unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type exceptions that would not require utensils individual drinks for a more in depth walkthrough of the steps above, please utilize the video below metadata tag configurations below are the necessary keys and values that need to be entered for all items keys are indicated by bold text, values are indicated by sub bullets item level tagging cateringservesize required for all items a numeric value indicating the serving size sorry, we cannot support ranges (ex serves 4 8) ranges can be added to the item's descriptions supported values any positive non zero integer taxcategory required for all items tax designations of each item supported values bakery items cakes and pies candy chips and snacks coffee tea milk dressings and condiments exempt ice cream miscellaneous non soda drinks prepared food sandwiches soda water foodlabelingtags required when applicable these values will tag an item with the flag in ezcater these flags will be searchable by the customers supported values healthy vegetarian vegan kosher halal gluten free spicy itemtypetags required when applicable these values are specifically used for upsell opportunities please ensure all beverage and dessert items are tagged accordingly supported values dessert drinks utensils ice individualwrapstatus required when true a value indicating whether the product can be individually wrapped or not supported values t f quantityunit required for all items unit of measure for items supported values bar bottle bowl box buffet cake can carafe dozen foot full pan gallon half gallon half pan item kit liter package pan person pie piece pint pizza platter pound quart roll six pack skewer slider taco tray twelve pack two liter option level tagging foodlabelingtags required where applicable these fields will tag an item’s choice with the flag in ezcater these flags are not searchable by customers but will be tagged on the choice option supported values healthy vegetarian vegan kosher halal gluten free spicy choicetypetags required where applicable these values are specifically used for upsell opportunities please ensure all beverage and dessert items are tagged accordingly supported values dessert drinks utensils ice sized based items tagging isselectionsizegroup required where applicable for sized based items, the above tags will still be required on the parent/item level with the exception of cateringservesize that will live on the option level parent/item level taxcategory (required) foodlabelingtags itemtypetags individualwrapstatus quantityunit (required) option group isselectionsizegroup = t option cateringservesize these tags are specifically referring to size based items and are used to delineate small, medium, large for items the product size selection names should not include the product name the option group with this metatag should also be given the smallest sortorder products with selection sizes must have matching option and modifier structure across all sizes different selection sizes must have the same structure/names so the logic knows how to match options under the same option but with selection sizes option groups under each size must have exactly the same description, sortorder, mandatory, minselects, maxselects, choicequantityincrement, supportchoicequantities for each selection size metadata tag will need to be added to the “ option group ”, not the parent/item or the option supported values t cateringservesize required a numeric value indicating the serving size for sized based items, these need to exist on the option level, not item level sorry, we cannot support ranges (ex serves 4 8) ranges can be added to the item's descriptions supported values any positive non zero integer for a more in depth walkthrough of the steps above, please utilize the video below zero dollar parent items items where the price lives on the option level, but is not a size priced options within the first option group with a “sortorder” of 0 option group must have minselects = 1 and maxselects = 1 and be mandatory if these rules are not applied, the item will not be built "isselectionsizegroup" metadata should not be added to the “option group” lead time for menu items the item lead time indicates how far in advance the order for the specific item must be placed from when it will be ready this field should be used only when a menu item has a longer lead time than your ezcater marketplace store please note, if an item lead time is shorter than your business lead time, these items will be available for order when considering adding longer lead times to menu items, it’s helpful to remember that many customers search based on the store’s lead time adjusting lead times thoughtfully and having lower lead times helps ensure customers can easily find and order the items they want leadtime supported values will be in minutes starting at 5 hours and up to 72 only whole hours will be supported false falsefalse unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type false unhandled content type relish menus api set up the purpose of the relish menu set up is for the menus api this set up will build the menus for the relish locations, however, orders will not flow into olo if you have any locations who offer relish, this tagging will need to be completed item level relishchannel= t (required) marketplacechannel=t (required if items will be shared between marketplace & relish otherwise the item will only be available on relish) cateringservesize (required) taxcategory (required) quantityunit (required) foodlabelingtags (required when applicable) itemtypetags (required when applicable) choice level foodlabelingtags (required when applicable) choicetypetags for drinks, desserts (required when applicable) this is needed for tracking and upsell opportunities sides individually packaged relish side = t (required when applicable) this is only for printing an additional label relish tagging logic when there is an item that is not a part of the main item and will not come in or on the ordered item, we will require “individually packaged relish side = t” for example, if there is a bowl being ordered and there is the ability to add mac and cheese as a side to the item at an additional cost, the mac and cheese would not come inside the bowl, so it will need to be tagged in order to generate another label choicetypetags will also generate another label for drinks or desserts that come with the package if you duplicate/ add menu items specifically for relish, utensils are not required for relish items rails visibility when using ezcater specific menu categories you will need to adjust the rails visibility setting to filter off all other ordering channels category level settings navigate to the “edit category” button with a category under “category visibility” deselect all ordering channels with the exception of ezcater item level settings navigate to the product and click into the product name scroll down to get to the menu product visibility feature and change the visibility to be ezcater specific