Allow your systems to obtain a list of possible time frames (a.k.a delivery slots) in which an order can be fulfilled.
Most common scenario or an integration point:
By the time a client wants to proceed to checkout. They will be interested in knowing the best time to get their selected products. For that purpose you will publish the data related to the origin, destinations and all the items they selected, and according to your capacity you would get the next delivery slots.
Recommendations
- Make sure that your system can convert addresses to latitude and longitude coordinates. You are required to connect to a Geocoding API for this purpose. Google Maps offers one.
- Ensure that the products on your catalog satisfy the required fields for an item.
- We suggest integrating the result of this endpoint at the beginning of the checkout process.
- Consume this from your backend and expose the information through your mobile/web API.
Reject Item Post Delivery
Per item, the client can define 2 main properties:
- max_claim_time_hrs: Maximum amount of hrs after the slot end in which the client can make a claim
- available_claim_actions: The different types of claims that a client can request:
REFUND
SUBSTITUTE
COLLECT_AND_REFUND
COLLECT_AND_SUBSTITUTE
REJECT
REJECTION_NOT_ALLOWED (only after delivery)
If the available_claim_actions are not defined/sent, the flow allows rejection without any action associated.
🛒 Item Picking Multiplier
To increase the time picking to specific item you can use the item picking_time_multiplier param. It will multiply the Picking Time Per Producto defined in the store config. To more details contact Support.
📚 Replacement Modes
Replacement modes let you set up an action for the picker to follow if an item in the order is unavailable. When creating an order, you can specify a replacement action for each item, giving you more control over how your orders are fulfilled.
Note: You should not add more than 5 suggested replacement items per item
NO_REPLACE :
When the buyer doesn't want a replacement for a product.
- "replacement_mode": "NO_REPLACE"
REPLACE_WITHOUT_CONFIRMATION:
When the buyer wants a replacement without contact just an election by the picker.
- "replacement_mode": "REPLACE_WITHOUT_CONFIRMATION"
SUGGESTED:
When a buyer sends a suggested replacement from the e-commerce, the order has the bring to options through BARCODES.
- "replacement_mode": "SUGGESTED"
- "suggested_replacements": ["ean1","ean2]
SUGGESTED_BY_STORE:
When the buyer would like a replacement and the store sends options to guide the picket to replace the item.
- "replacement_mode": "SUGGESTED_BY_STORE"
- "suggested_replacements": ["ean1","ean2]
⚡Scanning
- Check our docs to activate scanning functionality in this link.
👤 Delivery Validations
To have delivery validations in the shopper app you should send the list of types of categories and validations, specifying if a picture is required in each category.
At the moment we accept 3 types of delivery validations:
- Type:
- Age
- Medicine prescription
- Payment
An example of categories:
- Categories:
- Liquors
- Medicine
- Beers
- Wines
For all of these configurations, you should notify our support center through a ticket here.
📦 Cartonization
To use the Catonization feature, you need to include the following parameters in the item information:
- "weight": Specifies the weight of a single item.
- "volume": Defines the volume of a single item.
- "dimensions": Refers to the width, height, and length of a single item.
Consistency in the units used for weight, volume, and dimensions is required across all items. For example, if you specify the weight of one item in kilograms, all other items must also use kilograms. Likewise, if you define dimensions in centimeters, the dimensions of all items must be in centimeters.
Additionally, the package capacity must align with the units you define for the items. For instance, if the item volume is measured in cubic centimeters, the package capacity must also be configured in cubic centimeters.
🛍️ Kits
Kits allow to link several items as a kit. The items are still independent but will have special conditions:
- The item can't be replaced.
- If one item is removed, all the other items linked by the same kit id + kit number will be removed.
Parameters to link items as a Kit:
- "id": "string" --> This is the id of the kit.
- "number": 1 --> This is the number of kits for the same kit id. ex: The client bought 2 x Kits with id: 123, the items of the first kit will have id: "123" and number: 1. and the items of the second kit should have id: "123" and number: 2
- "price": 0 --> The unitary price of the whole kit
⚖️ Units/Su-b-units
Some acceptable units for products measured by weight
- Kilogram:
kg - KG - kG - Kg - Pound:
LB - lB - Lb - Liter:
L - l - Milliliter:
ML - ml - mL - Ml - Gram:
g - G - GR - Gr - gr - Milligram:
mg - MG - Mg - Gallon:
gal - GAL - Gal - Piece:
pz - PZ - Pz
{
"currency_code": "string",
"start": "2019-08-24T14:15:22Z",
"end": "2019-08-24T14:15:22Z",
"slot_size": 15,
"minimum_slot_size": 0,
"operational_models_priority": [
"string"
],
"fallback": true,
"is_big_order": true,
"origin": {
"name": "string",
"address": "string",
"address_two": "string",
"description": "string",
"country": "string",
"city": "string",
"state": "string",
"zip_code": "string",
"latitude": 0,
"longitude": 0
},
"destination": {
"name": "string",
"address": "string",
"address_two": "string",
"description": "string",
"country": "string",
"city": "string",
"state": "string",
"zip_code": "string",
"latitude": 0,
"longitude": 0
},
"job_items": [
{
"id": "string",
"name": "string",
"photo_url": "string",
"unit": "string",
"sub_unit": "string",
"quantity": 0,
"sub_quantity": 0,
"quantity_found_limits":{
"max":5,
"min":2
},
"barcodes": [
"000000000000",
"000000000000"
],
"weight": 0,
"volume": 0,
"dimensions": {
"x": 1,
"y": 2,
"z": 4
},
"price": 0,
"comment": "string",
"picking_time_multiplier": 1,
"replacement": {
"replacement_mode": "SUGGESTED",
"suggested_replacements": [
"1234",
"1963"
]
},
"available_lots":["12345", "98760", "23571"],
"kit_info": {
"id": "string",
"number": 1,
"price": 0
},
"claim_information":{
"max_time_to_claim_in_hours":0,
"available_claim_actions":["REFUND", "SUBSTITUTE", "COLLECT_AND_REFUND", "COLLECT_AND_SUBSTITUTE", "REJECT", "REJECTION_NOT_ALLOWED"]
},
"attributes": {
"category": "string",
"plu": "string",
"ean": "string",
"location": "string",
"picking_index": "string"
}
}
]
}