HomeGuidesAPI Reference
Log In
Guides

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 to true when creating the order using the Create Order API.

Email Updates

Here's an example order confirmation email sent upon placing an order.

📘

Here's an example order cancelation email sent upon an order being canceled by the store or delivery service.

📘

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:
    1. Provide MealMe with a 16x16 pixels favicon image.
    2. 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 above status takes on the value in_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 all status 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.