Tracking & Status Updates
In this guide, we'll cover handling order tracking and status updates either through MealMe's out-of-the-box solution or self-implementation.
Out-of-the-box Solution
Upon successfully placing an order, MealMe by default will send order confirmation and status updates via email and SMS.
SMS Updates
- 1 is sent for both pickup and delivery orders upon placing an order.
- 2 is sent for both pickup and delivery orders upon the store confirming the order.
- 3 is sent for pickup orders upon the store confirming the order is ready for pickup.
- 4 is sent for delivery orders upon the delivery driver nearing the delivery address.
- To disable SMS messages, set the input parameter
disable_sms
totrue
when creating the order using the Create Order API.
Email Updates
Here's an example order confirmation email sent upon placing an order.
- To white-label this email, please review the White-labelling Email guide.
- To disable emails, set the input parameter
disable_email
totrue
when creating the order using the Create Order API.
Here's an example order cancelation email sent upon an order being canceled by the store or delivery service.
- To white-label this email, please review the White-labelling Email guide.
- To disable emails, set the input parameter
disable_email
totrue
when creating the order using the Create Order API.
Tracking Website
A URL to MealMe's tracking site will also be provided in the order confirmation SMS and email notifications. Here's an example tracking URL for a past order.
Tracking URL: https://tracking.mealme.ai/tracking?tracking_id=-N2IusaxbwJWqvXmhA0u
- To white-label the tracking website, complete the following steps:
- Provide MealMe with a 16x16 pixels favicon image.
- To white-label the domain (i.e. tracking.example.com), add the following record to your DNS:
DNS Record type :A
DNS Hostname:tracking
DNS Value:164.92.86.140
Self-implementation
The previous section demonstrates the out-of-the-box solution for tracking orders and handling communication for status updates. Alternatively, you can build your own solution by subscribing to tracking webhook events using the Add Tracking Webhook API and/or polling order status updates using the Get Orders API.
Tracking Webhook Subscription
Here's an example Add Tracking Webhook API request that demonstrates adding an example callback URL to your account to receive order status update webhook events.
curl --request POST \
--url https://api.mealme.ai/account/tracking/add_webhook \
--header 'Id-Token: <API KEY>' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"endpoint": "https://mealme.ai/tracking_webhook"
}
'
{
"status": "Current tracking webhook attached to account: https://mealme.ai/tracking_webhook"
}
- Review the comprehensive list of all events here.
Polling Order Updates
Here's an example Get Orders API request that demonstrates retrieving order details for for an example order with
curl --request GET \
--url 'https://api.mealme.ai/account/orders?order_id=-N03tAvlIinAWhlIYPyj' \
--header 'Id-Token: <API KEY>' \
--header 'accept: application/json'
{
"orders": [
{
"items": [
{
"product_id": "gAAAAABjG7vcneDPtykGbsBcLjJUqW8qqJFctTqQDovWuSkEd9VlTM0dNVVKPLcDAMHXhna_dsa-RJOrXBO82jvvMCDXHYCz3Qwv9qEznaqGB2OXKA-k9cWAQFv1S7epy-C5yCDj7MLlDLl1psRTBRtUcv2PUnaYMMnMvonWGbzQbkGr0_0yjtFNS38EosYy-0-l3_0wLfSzQjSPVQ2Go9FUL4Dw_lvLYMkPHnGnewXnh0HtztKYrMn4lZQppC505ReRYfWxMQkMnqq10EbYMYRGDlEkYCNQX8TFtrNeq3ikYpmctjinfqdhs1-AjapHL6wpkyoRoY6rnKE7dBQjIkn_nIQ1aXmznzKpR5P0Xr9xvp5w2IkCWK8_MhHEenGct1y7n3yGteXzQM4o5Md1yynTwRal7Bq4QoVt-EzyLoW-ZtX8-snYWnDpNLduZLW7j3XCo8EIEBlKUSWkvNl0gbQgyosKgZB573GNQ-rEu3RYvJ_S_Ri62ywBYf_zTexUJtERtIpd6lawr6sty3Wpyq1zhve2zuhsRJ8wj_uorThApJreOXRiOpzyFXTZWxjXz3EklKoqPjUCVllMjVkVQUYkUghVvfr9dO7GWhkqGsRkRHjGxX7coYlI3GaVEQdaIcVrAo2zJBOJt42j5xwgOz0Gw2oupiwQwYtWpUVnYX0JHssDlbmbDON8ddU7YJdGxhC3TOFAGXLIzCPbRifamoEu2np7wbNQ8pDB5tX07lwVQIbrVs0thXYpdGxKk1eKx_c1aKQcf-srjZKHVUvO_4zSRC2FqIpdaYPU0pDDlIovXu6NgoB7CL0=",
"selected_options": [
{
"option_id": "gAAAAAAAAAAAvcAsFofXR7XlzNv5B6-g-rAwJFDta7zt94Yg9eLLrwjlri1BholqW5kmJdCjTdOx-onRBaLrkLH0gJyALVdHPQ3RrgwdzKixuyBDcl2pcC3Yw7WydclLYPdeZoFu7k9hzaSuKxC0RiYH9cUghhNRB6OaBmEWSRIBY_IsFT8uJ0DtFc1v9wF-K0OmBQ6QLrV1dT3fYTTtgnWNrrjZBLL2P1N3d77_CJAlvWNyvnksU2srG3rxM1GuZeN_tmvUQ0cz4NLdq8j8ZTfI8p0ILJ1dyE24krn5_rfalZvV33AylZ5TIHbh5LG6u-QY_NERjzUHK1uLUyjKYgGsq22wM4-uSGi1XTLqN7NngiGl8TQFsrh7r60XiBvB_dl0TN6sUawnDhbc3OLo6QvFWMG0-5ZhWaklnVXP59__N1WE9Jgze9jBfd30KgCNM76hxVCu5Y0seNvrLbDxAvaeW1Cqf37JNb1yxqvfVSI7Y92FnelFAa5OdPTOXdvXtSpGlH8biIvihF-ZTMUpfoGOLD2vF5tQwlImLG0V64l1TpIobps8GxoYChCknaUjGJqJ6H6lN3sHeCntpUd09hDpnlEv2yxRv1ocXmTQwuHXuI7NiZ1pmUpbrktD8iBNgmkIiOFPVqE8",
"quantity": 1
}
],
"notes": "No whipped cream."
},
{
"product_id": "gAAAAABjG7vcilemNMYoldpPlDj4EoX3i0Z2SD02sdIfwANAnRm7inPVS7qqUbRMKZSqsYk_PEbZA6fZ1ek9e50iyhN6YqwoZGL16oC942H9gZ5Kxx6D0nUQXZbiWmrvzq1bjYlu01PTWhJV_RDOF-3iSit3wKQoxDOrguqoEk7jHqRMXEd7pR7IUk01-KaIGVX2YZfELRKLwIJHmdVu1elgRu-7msIiWITDU5VmjeZLo4Zx_D6p4in9T5aecFYowlXj9hhq42J1SpFJynrl06Tw7r8uA04ClKkSBGrSRVyjeGVIHq_0OZQ1cDV5hLfdcn8CUn_duwmjZYcfI5phC_ILtEnS2-l1e9_bcyonB_WRzyQVz_nyFk5ZkUDp9QHZZeCUQb2D_8AW7F9Ly76g0-RJctvXa1SKe9dNGjDFDngvOjr20XgI6Blgr3kwl67K-R7hohZcHLJN0jw-jnUg9iaZA4rJP5NU9cZP5kAEkVMCLK8jKQ7ePxwraG20p6HFYfjZ2MYGPwACtBcpYcxSLuycbSnedWCzL0koFj7uEKfcP8fdJQq0lNa8QjmFYTnoHpQaZTYdxVpJkJBTTg8Xk5tXUYdcnfImU6kO9CXjAIFxU6KXsftphxrNc9dalLxGEBJxYOOQGhROvsrk6S2ECfFwfSIW9nCaBbnw97OOJm91orncP2F1cAprQngbFzrEnKywYeB2E_dRgPXN4KsIEvhXtivA0_DnsSZq30GlO_U6j2Fkuv4KQUHr--XPxzjjeWwYRco1oet-0zbJQwOfHKfiWD9rNxVIQpHiSCmrV4IloldnKoPPY1s=",
"selected_options": [],
"notes": ""
}
],
"pickup": false,
"driver_tip_cents": 100,
"user_latitude": 37.7786357,
"user_longitude": -122.3918135,
"user_street_num": "188",
"user_street_name": "King Street",
"user_apt_num": "",
"user_city": "San Francisco",
"user_state": "CA",
"user_zipcode": "94107",
"user_time_zone": "America/Los_Angeles",
"user_dropoff_notes": "Leave in lobby",
"user_name": "Steve Jobs",
"user_email": "[email protected]",
"user_phone": 14044442058,
"tracking_link": "https://mealme.cc/tracking?tracking_id=-Mn8_a0-R1ERnHlCQUZp",
"total_with_tip": 3380,
"final_quote": {
"id": "gAAAAABh6hxmfTtGA3vxjN-ZfyO55tnvcrAWVF3tCnWpWuRRcn9PQiE30TvrumkQ01jRJDmtpAGEhXQMEJ8BK_2HAkBB3qzi-K7ScyWikcBKaDWv7qdgO9y1dcV638PTer1ZGIypWDzrO_Q35LmDB5mgby8b1V0T82bFljxyrbjRH48swnM7IBCjEiA6_GC0Aj6PA0IfJ4HqTFY9aEQfI7brM_az3VhLK4IIQ59EWGftEKEpf2-a4R7mvf08M2PEY8MB5Qz8Pjwbvlu926JNvIVpx4Ckj_qJ6CIjbrEMDxqQLTrJFuYGAlU=",
"store": "Seniore's Pizza",
"store_address": "456 Haight St, San Francisco, CA, 94117, US",
"quote": {
"delivery_fee_cents": 0,
"time_max": 30,
"time_min": 20,
"expected_time_of_arrival": "06:57 PM",
"sales_tax_cents": 257,
"service_fee_cents": 0,
"small_order_fee_cents": 0,
"subtotal": 3023,
"total": 3280
}
},
"eta_timestamp": 1650578850.31,
"timestamp": 1650578800.31,
"tracking": {
"driver_latitude": 37.778574400295234,
"driver_longitude": -122.39151731697541,
"course": 225.5277862548828,
"last_update_timestamp": 1646722410.22385,
"completion_timestamp": 1646763375.141831,
"vehicle_type": "car",
"driver_name": "Gustavo",
"driver_phone": 13124719334,
"driver_photo_url": "https://cdn-img.mealme.ai/347fa4c596569c42e6acb0739b9484fdf6b18501/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f67682d70726f642d647269766572732d646174612f647269766572732f31623837346135612d373034622d343638622d626139392d3062656436616439656231642e706e67",
"driver_rating": 0
},
"status": "in_progress",
"favorited": false,
"is_ready": false,
"customer_order_id": "ABC123",
"realtime_tracking_available": false,
"profit": 1000
}
]
}
- The
status
property in the response will describe the current stage the order is in. In the example response abovestatus
takes on the valuein_progress
, which means that the store is either preparing the order, or the delivery driver is en-route to the delivery address. Review the comprehensive list of allstatus
types along with their respective descriptions here.- Note that the
tracking
property in the response will include the driver's location and details for delivery orders.
Updated over 1 year ago