The same dinner basket needs a different promise for pickup and delivery
A diner builds a basket from a nearby restaurant, then switches from pickup to delivery just before payment. The food has not changed, but almost everything around it may have: available hours, destination eligibility, minimum order, transport charge, expected time and the person responsible if the meal never arrives. A restaurant marketplace has to explain and confirm that new promise. Treating fulfillment as a cosmetic toggle leaves the kitchen, diner and support team working from different agreements.
A Grubhub-style restaurant ordering product connects discovery, branch menus, kitchen acceptance and selected pickup or delivery services under an independent brand. It does not include Grubhub affiliation, restaurant inventory, drivers, proprietary APIs or commercial contracts. The useful buying question is which fulfillment models your operator can supervise. Start there, then specify customer screens, restaurant tools, support permissions and payment reconciliation that make those models work when an order fails.
Choose who owns transport before designing the restaurant listing
Pickup sends the diner to the restaurant. Merchant delivery uses the restaurant’s own dispatch arrangements. Platform-courier delivery adds a separate transport assignment controlled by the marketplace or its licensed provider. These are three operating contracts, not three names for one status sequence. Record the supported modes per branch, identify who assigns a driver and state which party the diner contacts about delays. Do not display a platform tracking promise for a merchant service that cannot supply reliable location data.
Compare a DoorDash-style meal delivery scope when platform-controlled courier dispatch is the central business. Here the emphasis is a restaurant marketplace that can offer different fulfillment responsibilities without confusing them. A mixed model needs clear eligibility and support routing before it needs a wider restaurant catalog.
Keep pickup hours separate from delivery availability
The kitchen can be open while a merchant’s drivers have finished their shift. A branch may still accept pickup while delivery is unavailable, or close both briefly when preparation capacity is exhausted. Model normal hours, date-specific exceptions, mode pauses and branch-local time. Check availability again at checkout, not only when the diner opens a listing. Explain an unavailable mode and retain the basket where appropriate instead of turning a valid pickup order into an unexplained restaurant closure.
The Grubhub delivery and pickup settings reference describes separate fulfillment hours and restaurant-managed delivery areas. It supports the distinction between kitchen opening and delivery eligibility. Your implementation should use your own reviewed service boundaries and cutoff rules, not import another platform’s limits or imply access to its merchant tools.
One chain may have the same dish name across branches but different stock, modifiers or preparation arrangements. Keep menu identifiers, price versions and item availability branch-specific. Define required selections, incompatible combinations and the information the restaurant supplies about ingredients and allergens. Free-text instructions should not silently override a priced modifier or promise allergy safety. Material requests need a clear restaurant acknowledgement or a visible rejection before the diner relies on them.
A sold-out update arriving after basket creation should trigger an understandable choice: remove the affected item, select an offered alternative or abandon the order. Never replace a dish without the agreed consent. Restrict who can edit menus, retain publication history and use approved images with accurate descriptions. A copied competitor menu is neither an authorized restaurant relationship nor a usable inventory feed. Demonstrate a branch-specific unavailable modifier and the customer’s recovery path during acceptance.
Revalidate the whole agreement when the diner changes mode
Switching to pickup removes transport but introduces a collection location and collection window. Switching to delivery needs a valid address, supported area, available transport and revised charges. Recalculate against a versioned quote and clearly show material changes before confirmation. Do not preserve a delivery tip as an unexplained pickup charge or carry a pickup-ready time over as an arrival estimate. Keep the chosen mode and the accepted breakdown attached to the submitted order.
Once the restaurant has accepted and begun preparing, a mode change is an exception requiring review. A customer request to collect instead does not prove that a courier assignment has been canceled. Define the permitted transition, consent, transport cancellation and any price correction as connected steps. If one step fails, expose the unresolved state to support rather than presenting a completed change to the diner. Rehearse a change request arriving after preparation starts and before transport assignment completes.
Separate payment success from kitchen acceptance
An authorized payment tells the marketplace about money, not whether the restaurant saw the order. Distinguish submission, channel delivery, restaurant acknowledgement and acceptance for preparation. Use durable order identifiers across tablet, printer or POS channels. Repeated notifications must not create two kitchen tickets. Define the response to an unanswered order, including customer communication and cancellation or release of funds under the agreed policy. An idle tablet should not produce a confident preparing message.
The Grubhub restaurant policy reference discusses restaurant confirmation, menu responsibility and order adjustments. Those are useful categories for your acceptance and support design. Its policies are changeable and belong to that platform; your operator must agree its own confirmation handling and contractual allocation of refunds instead of treating the reference as a ready-made legal policy.
A scheduled order reserves work beyond today’s open screen
A dinner scheduled for tomorrow needs an eligible future slot, not merely a restaurant that is open now. Decide when the kitchen receives it, when acceptance is required and how preparation capacity is reserved. Store the branch-local promised time and a stable timestamp so daylight-saving changes do not shift the commitment. Menu or price changes after acceptance must not silently rewrite the diner’s confirmed order. Identify who resolves a newly announced branch closure.
Display whether the promise is a collection time or an estimated delivery arrival. A transport booking may need a later confirmation than kitchen acceptance; make that dependency visible. Separate future work from immediate tickets so staff do not accidentally prepare it early. Demonstrate a scheduled order crossing a delivery-hours boundary and a branch manager pausing tomorrow’s service. Group ordering and catering can wait until the operator has approved their distinct participant, lead-time and billing rules.