[Explainer] Shopping Complete Webhooks
DASHER_COMPLETED_SHOPPING​
The DASHER_COMPLETED_SHOPPING webhook is sent when a Dasher completes in-store shopping for an order, before checking-out. No webhooks are sent while the Dasher is actively shopping. This webhook delivers detailed information about the shopping event, including Dasher details, pickup and dropoff information, and a comprehensive list of items that were shopped.
The shopped_items section will indicate each item that was shopped, and the associated quantity. This section will also indicate if the item was a substitution.
Field Name (Shopped Items Section) | Description |
---|---|
name | The name of the item |
description | Description of the item |
quantity | The number of units of the item shopped |
weight | The weight of the item, if applicable (may be null). |
weight_components | An array detailing the components of the weight, if applicable. |
weight_unit | The unit of weight measurement, if applicable (may be null). |
external_id | Merchant's unique item identifier. |
requested_item_external_id | Merchant's unique item identifier of the original item ordered. |
external_instance_id | A unique instance identifier for the item. |
price | The price of the item in cents. |
substitution_source | Source of substitution, if applicable (may be null). Enum ["dasher","customer","merchant"] |
scanned_code | The barcode or scanned code of the item. |
scanned_data_list: | A list of ScannedData objects, each representing a possible deconstruction of the scanned barcode. Barcodes can conform to different formats (e.g., UPC-A, EAN-13), and this list captures the parsed components for each possible format. scanned_data_list[0] contains the components for the most likely barcode format (e.g., UPC-A). scanned_data_list[1], scanned_data_list[2], etc., represent the same barcode interpreted under other formats (e.g., EAN-13). The list is ordered by likelihood, with the most probable format appearing first |
format | Format of barcode. Enum ["upc-a","upc-e","ean-13","ean-8","plu","gtin-14","unknown"] |
is_variable_measure | Indicates whether the barcode represents a variable measure product with price or weight |
indicator_digit | used in Gtin14 barcodes to classify the type of item |
product_code | product code identifies an item within a given system, used in most barcode formats. |
check_digit | check digit if applicable. Typically the last digit of scanned UPC and EAN |
country_code | identify the country where the manufacturer is registered, used in EAN-13 and EAN-8 |
manufacturer_code | identifies the company that produced the product, used in UPC-A, EAN-13, UPC-E |
number_system | the type of barcode and its categorization, used in UPC-A, UPC-E |
plu_check_digit | price check digit used in variable measure barcodes |
company_prefix | part of Gtin14 barcode, identifying the brand owner or manufacturer |
item_reference | identifies a product within a company’s, used in Gtin14 barcodes |
scanned_code_sans_check_digit | Barcode without check digit |
addition_source | Source of addition, if applicable (may be null). Enum ["dasher","customer","merchant"] |
requested_item_external_instance_id | The external instance ID of the requested item, if applicable (may be null). |
fulfilled_substitution_type | Type of substitution fulfilled, if applicable (may be null). Enum ["no_substitution","pre_selected","customer_contacted","dasher_override" |
is_unknown | Boolean indicating if the item is unknown (may be null). Will be TRUE if the item is not found in the inventory |
Scenario 1: Item shopped as ordered
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 258147369 | Merchant's item identifier |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | UUID of the merchant's identifier |
price | 499 | Price provided by merchant in inventory feed |
scanned_code | 41303002001 | Barcode scanned by Dasher |
scanned_data_list | see json below | see explanation below |
fulfilled_substitution_type | no_substitution | original item picked |
is_unknown | FALSE | this item exists in inventory |
scanned_data_list:
[
{
"format": "upc-a",
"is_variable_measure": false,
"product_code": "00200",
"check_digit": "1",
"manufacturer_code": "41303",
"number_system": "0",
"scanned_code_sans_check_digit": "04130300200"
},
{
"format": "ean-13",
"is_variable_measure": false,
"product_code": "00200",
"check_digit": "1",
"country_code": "004",
"manufacturer_code": "1303",
"scanned_code_sans_check_digit": "004130300200"
}
]
The barcode scanned by the mobile device is a UPC-A barcode. However, for 13-digit barcodes that start with a leading zero, mobile devices may automatically omit the first zero during scanning. As a result, the scanned_data_list contains two items: scanned_data_list
- [0] represents the components of the barcode interpreted as a UPC-A code, which is the most likely format; scanned_data_list
- [1] represents the components of the same barcode interpreted as an EAN-13 code, which is also a valid possibility
Scenario 2: Weighted Item shopped as ordered
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Banana | Name of ordered item |
description | Chiquita Bananas | Description of the ordered item |
quantity | 8 | Quantity ordered |
weight | 3.25 | Total weight of the item |
weight_components | 3.25 | Array of individually weighted items (if applicable) |
weight_unit | oz | Weight unit of measure |
external_id | 4011 | Merchant's item identifier |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | UUID of the merchant's identifier |
price | 191 | Price provided by merchant in inventory feed. If the item is a weighted item, this value will be total weight multiplied by the weighted price |
scanned_code | 4011 | Barcode scanned by Dasher |
scanned_data_list | see json below | components of the barcode interpreted as a PLU code |
fulfilled_substitution_type | no_substitution | original item picked |
is_unknown | FALSE | this item exists in inventory |
scanned_data_list:
[
{
"format": "plu",
"is_variable_measure": false,
"product_code": "4011"
}
]
Scenario 3: Item substituted when the preference is set to contact customer
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 987456321 | Merchant's item identifier of the substitute item |
requested_item_external_id | 258147369 | Merchant's item identifier of the original ordered item |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | UUID of the merchant's identifier of the substitute item |
price | 499 | Price provided by merchant in inventory feed |
substitution_source | DASHER | item substituted by dasher |
scanned_code | 04904403 | Barcode scanned by Dasher |
requested_item_external_instance_id | d4621a56-208b-4d03-b6dd-6dc5c1eea47f | UUID of the merchant's identifier of the original ordered item |
scanned_data_list | see json below | components of the barcode interpreted as a EAN-8 code |
fulfilled_substitution_type | CONTACT | The item is picked as substitution after contacting consumer |
is_unknown | FALSE | this item exists in inventory |
scanned_data_list:
[
{
"format": "ean-8",
"is_variable_measure": false,
"product_code": "90440",
"check_digit": "3",
"country_code": "04",
"scanned_code_sans_check_digit": "0490440"
}
]
Scenario 4: Item substituted using a customer pre-selected substitute
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 258147369 | Merchant's item identifier of the orginal ordered item |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | Merchant's item identifier of the original ordered item |
price | 499 | Price provided by merchant in inventory feed |
substitution_source | DASHER | item substituted by dasher |
scanned_code | 10019320008266 | Barcode of substitute item scanned by Dasher |
scanned_data_list | see json below | components of the barcode interpreted as a GTIN-14 code |
fulfilled_substitution_type | override | dasher assert they picked the correct item |
is_unknown | TRUE | this item missing in inventory |
scanned_data_list:
[
{
"format": "upc-e",
"is_variable_measure": false,
"product_code": "12",
"check_digit": "8",
"manufacturer_code": "654",
"number_system": "0",
"scanned_code_sans_check_digit": "0654123"
}
]
Scenario 5: Item substituted using a merchant recommended substitute
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 987456321 | Merchant's item identifier of the substitute item |
requested_item_external_id | 258147369 | Merchant's item identifier of the original ordered item |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | UUID of the merchant's identifier of the substitute item |
price | 499 | Price provided by merchant in inventory feed |
substitution_source | MERCHANT | item substitution pre-selected by merchant |
scanned_code | 219408516284 | Barcode scanned by Dasher |
requested_item_external_instance_id | d4621a56-208b-4d03-b6dd-6dc5c1eea47f | UUID of the merchant's identifier of the original ordered item |
scanned_data_list | see json below | see explanation below |
fulfilled_substitution_type | PRE-SELECTED | The item is pre-selected by merchant as substitution |
is_unknown | FALSE | this item exists in inventory |
scanned_data_list:
[
{
"format": "upc-a",
"is_variable_measure": true,
"product_code": "19408",
"check_digit": "4",
"number_system": "2",
"plu_check_digit": "5",
"scanned_code_sans_check_digit": "21940851628"
},
{
"format": "ean-13",
"is_variable_measure": true,
"product_code": "9408",
"check_digit": "4",
"country_code": "021",
"plu_check_digit": "5",
"scanned_code_sans_check_digit": "021940851628"
}
]
The barcode scanned by the mobile device is a UPC-A barcode starting with 2, which indicate it’s a weighted item:
- scanned_data_list[0] represents the components of the barcode interpreted as a UPC-A code, which is the most likely format.
- scanned_data_list[1] represents the components of the same barcode interpreted as an EAN-13 code, which is also a valid possibility"
Scenario 6: Dasher Item Override (When Override As Subs is not enabled)
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 258147369 | Merchant's item identifier of the orginal ordered item |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | Merchant's item identifier of the original ordered item |
price | 499 | Price provided by merchant in inventory feed |
substitution_source | DASHER | item substituted by dasher |
scanned_code | 10019320008266 | Barcode of substitute item scanned by Dasher |
scanned_data_list | see json below | components of the barcode interpreted as a GTIN-14 code |
fulfilled_substitution_type | override | dasher assert they picked the correct item |
is_unknown | TRUE | this item missing in inventory |
scanned_data_list:
[
{
"format": "gtin-14",
"indicator_digit": "1",
"product_code": "001932001351",
"check_digit": "2",
"scanned_code_sans_check_digit": "1001932001351"
}
]
Scenario 7: Dasher Item Override when item is found in the catalog (When Override As Subs is enabled)
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 258147369 | Merchant's item identifier of the original ordered item |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | Merchant's item identifier of the original ordered item |
price | 499 | Price provided by merchant in inventory feed |
substitution_source | DASHER | substituted by dasher |
scanned_code | 8901042957517 | Barcode of substitute item scanned by Dasher |
scanned_data_list | see json below | components of the barcode interpreted as a EAN-13 code |
fulfilled_substitution_type | OVERRIDE | dasher assert they picked the correct item |
is_unknown | FALSE | this item exists in inventory |
scanned_data_list:
[
{
"format": "ean-13",
"is_variable_measure": false,
"product_code": "95751",
"check_digit": "7",
"country_code": "890",
"manufacturer_code": "1042",
"scanned_code_sans_check_digit": "890104295751"
}
]
Scenario 8: Dasher Item Override when item is not found in the catalog (When Override As Subs is enabled)
Field Name (Shopped Items Section) | Value | Description |
---|---|---|
name | Cereal | Name of ordered item |
description | 25oz cereal box | Description of the ordered item |
quantity | 2 | Quantity ordered |
weight | 2.5 | Total weight of the item |
weight_unit | oz | Weight unit of measure |
external_id | 258147369 | Merchant's item identifier of the original ordered item |
external_instance_id | 861555aa-6875-4b02-b5f2-58ee14f323a9 | Merchant's item identifier of the original ordered item |
price | 499 | Price provided by merchant in inventory feed |
substitution_source | DASHER | substituted by dasher |
scanned_code | 10019320013512 | Barcode of substitute item scanned by Dasher |
scanned_data_list | see json below | components of the barcode interpreted as a GTIN-14 code |
fulfilled_substitution_type | OVERRIDE | dasher assert they picked the correct item |
is_unknown | FALSE | this item exists in inventory |
scanned_data_list:
[
{
"format": "gtin-14",
"indicator_digit": "1",
"product_code": "001932001351",
"check_digit": "2",
"scanned_code_sans_check_digit": "1001932001351"
}
]
DASHER_COMPLETED_STAGING​
In Dasher Shop and Stage Orders, following the DASHER_COMPLETED_SHOPPING, a DASHER_COMPLETED_STAGING webhook will be sent to confirm the location where the Dasher has staged the order.
"staged_containers" : [
{
"external_id": "id1",
"external_location_id": "A1",
"external_zone_id": "Ambient"
},
{
"external_id": "id2",
"external_location_id": "A1",
"external_zone_id": "Ambient"
},
{
"external_id": "id3",
"external_location_id": "A1",
"external_zone_id": "Ambient"
}
]