What you will see
When a menu publish to a delivery app fails, the publish status in Stream shows an error. It usually looks like DSP_REJECTED: ... or another code in capital letters, followed by a message. In most cases the message is the delivery app's own text, so you can send it to that app's support team as it is. Stream can add a code at the start of a message and can shorten a long message.
To read it, open the delivery app's status window in the Stream dashboard and use the copy button to copy the full message. If one menu fails, the window shows that error for the whole delivery app, while your other menus can still be live. For the meaning of the icons, see What do the status icons mean?.
What to do first
Read the error text, especially the first words. Look for a code in capital letters at the start, for example
DSP_REJECTED.Find the delivery app and the error in the lists below.
Some errors are temporary, for example when the delivery app is busy. Stream tries again later, and the error can stay on screen until the next try works. Other errors need a change to your menu or your account. Trying again does not fix these. Fix the problem, then publish again.
Do not publish many times in a row. Allow time for each publish to process.
Common codes (all delivery apps)
Code | What it means | What you can do |
| The delivery app did not accept your menu. The message tells you why. | Fix the item or setting that the message names, then publish again. If the message is about your store, contact the delivery app. Find the message in the list for your delivery app below. |
| Stream did not give this error a more exact code. The message often starts with a better code. | Look for a code in capital letters at the start of the message, for example |
| The delivery app received too many requests in a short time. | Wait. Stream tries again. Do not publish many times in a row. |
| The delivery app had a temporary problem. | Publish again later. If the error continues, contact Stream. |
| The delivery app did not accept the connection for this store. | Reconnect the delivery app in Stream, then publish again. |
| Stream could not classify this error. It usually comes from the delivery app. | Contact Stream and send the full message. |
| The delivery app does not let this store use the integration yet. | Check that you connected the correct delivery app for your country, then contact the delivery app or Stream. |
| No menu at this location has opening hours. | Add menu hours, then publish again. |
| No active menu is assigned to this delivery app. | Assign a menu to the delivery app, then publish again. |
| The menu has no items. | Check that the menu has items in Stream. If the menu comes from your POS, sync your POS, then publish again. |
| Another publish is still running. | Wait for it to finish. |
| The delivery app found a problem in your menu but did not say which part. | Contact Stream. We ask the delivery app for the details. |
| No message was saved for the failure. | Publish again. If the message is still empty, contact Stream. |
| The dashboard does not know the code. | Open the status window to read the full message. |
| The message comes from Stream, not the delivery app. | Contact Stream. |
Any other code | Stream must check the error. | Contact Stream and send the full message. |
Uber Eats
Uber Eats stores every rejection with the code MENU_FAILURE_UNKNOWN. The real reason is in the message, which usually starts with DSP_REJECTED: Uber rejected the menu:. Uber Eats reports only the first check that fails, so after you fix one problem a new message can appear. If it does, fix it the same way, or send it to us.
What you see | What it means | What you can do |
| An option group requires more choices than it allows (the minimum is higher than the maximum). | In your POS, correct the minimum and maximum for the option group, sync your menu and publish again. |
| An option group allows more different choices than it has options. | In your POS, lower the group maximum or add options, sync and publish again. |
| An option has a default quantity above its maximum. | In your POS, correct the default quantity or the maximum for the option named in the message, sync and publish again. |
| An item, option or option group has no name. | Give the item, option or option group a name in your POS, sync and publish again. |
| The same time period is listed twice on one day in a menu's hours. | Remove the repeated period from the menu hours, then publish again. |
| Option groups are nested in a loop (an option's nested group contains itself or one of its parents). | Remove the loop in your POS, sync and publish again. |
| An item price is higher than Uber Eats allows. | Lower the price of the item the message names, or take the item off the menu you publish to Uber Eats, then publish again. |
| Two different objects in your catalog (for example an item and an option) share the same ID. | Contact Stream. The IDs come from your POS and your POS provider may need to make them unique. |
| Uber Eats is checking your new menu against older menu data that it still holds for your store. The IDs in the message come from Uber's system, not from your menu. | Changing your menu does not fix this. Contact Stream, we will ask Uber Eats to clear the old data. Until it is cleared, menu changes may not reach Uber Eats. |
| A temporary problem on the Uber Eats side. | Publish once more. If the same text comes back, contact Stream. |
| Stream only received Uber Eats' top-level message, so the cause is not known from the message. | Contact Stream. |
| This relates to how your Uber Eats store is set up on Uber's side. | Contact Stream. Do not republish or reconnect while we check. |
DoorDash
What you see | What it means | What you can do |
| Your Stream location's connection to DoorDash is out of date. | |
| Two entries in one category share an ID (for example two combos with the same SKU). | Fix the duplicate in your POS, wait for the sync, then publish to DoorDash again. |
| An extra or option has no name. | Give it a name in your POS, wait for the sync, then publish to DoorDash again. |
| DoorDash is not accepting one of your menus and gives only a general error. | Contact Stream with the exact text and the menu name. We can open a case with DoorDash. Please do not disconnect and reconnect DoorDash, as that does not clear this error. |
| A DoorDash internal fault. It usually clears on the next publish. | Publish once to DoorDash. If it fails twice in a row on the same menu, contact Stream. |
Heading | No message was saved for the failure. | Publish again. If the message is still empty, contact Stream. |
| DoorDash still connects this location to a different DoorDash store. | Ask DoorDash to remove the old connection, then connect again. |
| DoorDash cannot find the account for this store. | Contact DoorDash Support. |
| DoorDash found items that need its approval. | Contact Stream to learn which items DoorDash found. Then complete the DoorDash compliance forms, or remove those items. |
Deliveroo
What you see | What it means | What you can do |
| A bundle breaks Deliveroo's price rules. Deliveroo rejects the whole menu. | |
| A bundle group is empty or contains items that are not on your full menu. | See (FAQ) Deliveroo Bundle Pricing Rules and Rejection Errors (rules 4 and 5). |
| The site's setup in Deliveroo Partner Hub is not finished. | Complete the setup in Deliveroo Partner Hub, then publish again. |
| Deliveroo does not accept a tax rate on your menu. | Check the tax rates on your items, then publish again. |
| Deliveroo allows one menu upload per minute. | Wait about a minute between publishes. Do not publish many times in a row. |
| Your Deliveroo site or brand is not linked to Stream's Deliveroo account. | Contact Stream. |
Grubhub
What you see | What it means | What you can do |
| Grubhub limits how many option groups a menu can have. Grubhub counts every copy of a group, and a menu repeats some groups for each item and size. Your menu is over the limit for your store. | Send only one menu to Grubhub, turn off some sizes or option groups for Grubhub only, or attach shared options to the item instead of each size in your POS. We can also ask Grubhub to raise the limit for your store. Grubhub decides this, and it can take several days. Contact Stream if you want us to ask. |
| Your menu is over Grubhub's size limit, as Grubhub measures it. | Use the same steps as above (fewer sizes, items and option groups). Contact Stream if you want us to ask Grubhub for a larger limit. |
| An option group allows an unlimited number of choices. Grubhub needs a maximum. | In your POS, set a maximum for those groups (for example 99), sync your menu and publish again. |
| Grubhub does not accept the tax rate of this location. | Check and correct the tax rate in your POS or in Stream, then publish again. |
| Grubhub could not accept the menu file Stream sent. | Contact Stream with the full message. |
| Grubhub refused Stream's access to the store. The Grubhub account may no longer be connected to Stream, or may have moved to another provider. | Reconnect Grubhub in Stream, then publish again. If you moved to another provider, tell us and we will disconnect Grubhub in Stream. If you see a 403 again after reconnecting, contact Stream. |
| Grubhub has special hours for your store that were added in the Grubhub portal. Stream cannot change them, so Grubhub rejects the update. | Delete those special hours in the Grubhub portal, or call Grubhub Restaurant Care at 877-799-0790. Then publish again. |
| Grubhub failed without giving a usable reason. | Wait about 15 minutes and publish once. If it fails again, contact Stream. Grubhub keeps the last menu it accepted in the meantime. |
Just Eat Takeaway (JET) and Lieferando
What you see | What it means | What you can do |
| Just Eat Takeaway has not yet registered this restaurant ID for menu uploads with the key Stream used. | 1. Check that the restaurant ID in Stream matches your Just Eat Takeaway ID exactly, with no spaces at the start or end. 2. Check that you connected the correct platform: Germany and Austria use Lieferando, and the UK, Ireland and Spain use Just Eat (JET). 3. If the ID or platform is wrong, disconnect the location and connect it again with the exact ID on the right platform. 4. If it is correct and you connected less than 7 working days ago, please wait: setup on the Just Eat side usually takes about 7 working days after you connect. After that, contact Stream. |
| The Just Eat brand key used does not own this restaurant. | Contact Stream. |
| Just Eat Takeaway has accepted the upload but has not yet enabled the connection for this restaurant. | Contact Stream. We ask Just Eat Takeaway to enable it. |
| Just Eat Takeaway allows at most two time ranges per day in a menu, and they must not overlap. | Correct the menu hours in your POS so that each day has at most two non-overlapping ranges, then publish again. |
| An item has exactly one size. | |
| The menu has no items in its categories. | Put items in the menu's categories, sync your POS and publish again. |
Still need help?
Contact Stream Support at [email protected] and include:
Your Stream location name
The delivery app
The exact error text (use the copy button in the status window)
The date and time of the publish
When you contact the delivery app yourself, send the full message. The delivery app needs its own message to find the problem.
