In-Store Pickup enables merchants with brick-and-mortar stores to offer an alternative to shipping for their shoppers. Shoppers can choose from a list of stores nearest them instead of having to pay (and wait) for delivery.
Enablement
Adobe Commerce (M2)
- Follow the official Adobe Commerce (M2) In-Store Delivery setup guide.
- Deploy the Bolt plugin with the In-store Pickup feature on your site.
- Select products eligible for In-store Pickup using one of the following methods:
In-Store Pickup Only Enablement
- Log in to the Adobe Commerce (M2) dashboard.
- Navigate to Stores > Configuration > Sales > Payment Methods > Bolt Pay > Third Party Modules Support.
- Add the attribute name
Hard Goods
to the field Exclude item groups from product page checkout. - Save.
Any products marked as Hard Goods
are now eligible for ship to store.
Category Enablement
- Log in to the Adobe Commerce (M2) dashboard.
- Navigate to Catalog > Categories.
- Choose a category.
- Find Bolt Pay Options.
- Set the value of Shipment Type to
Pick in Store
. - Save.
Any products in the updated category are now eligible for ship to store.
Product-Level Enablement
- Log in to the Adobe Commerce (M2) dashboard.
- Navigate to Catalog > Categories.
- Choose a category.
- Find Bolt Pay Options.
- Select a product.
- Set the value of Shipment Type to
Pick in Store
. - Save.
Direct API
In-Store Pickup requires responding to Bolt’s POST request for an order’s shipping details from your Merchant Callback API. In addition to listing delivery options, the response can also contain pickup options.ย
- Ensure you have set up theย Split Shipping and Tax endpoints for your Merchant Callback API.
- Update your order.shipping (
/order_create
) response to include the objectpickup_options
with an array of stores available, based on the shopper’s address.ย
NOTE
Stores that are within 50 miles of the shopper are presented as pickup options. If no store is within 50 miles, the In-Store Pickup option is not displayed.
Request Example
The following request is sent to your order.shipping (/order_create
) Merchant Callback API endpoint from Bolt when a user selects the In-Store Pickup option. This request contains an order_token
, shipping_address
, cart
and request_source
.
{
"event": "order.shipping",
"data": {
"order_token": "a2b3dDc4cA5e6fg78Bg9hj0kl",
"shipping_address": {
"street_address1": "42 Wallaby Way",
"street_address2": "42 Wallaby Way",
"street_address3": "42 Wallaby Way",
"street_address4": "42 Wallaby Way",
"locality": "Wayne County",
"region": "Quebec",
"postal_code": "11209",
"country_code": "US",
"country": "Canada",
"name": "Charlotte Charles",
"first_name": "Charlotte",
"last_name": "Charles",
"company": "ACME Corp.",
"phone": "867-5309",
"email": "my.email@gmail.com"
},
"cart": {
"total_amount": 9900,
"items": [
{
"reference": "1123",
"name": "Blue Hat",
"options": null,
"total_amount": 9900,
"unit_price": 500,
"tax_amount": 230,
"quantity": 3,
"uom": null,
"upc": null,
"sku": "SKU-11021",
"isbn": "12-345-678-90123",
"brand": "Bolt Swagstore",
"manufacturer": "Bolt Factory",
"category": "hats",
"tags": [
"red"
],
"properties": {
"property1": "metallic",
"property2": "rust-resistant"
},
"color": "Red",
"size": "XXL",
"weight": 22,
"weight_unit": "kg",
"image_url": "https://boltswagstore.com/inventory/hats/red-hat.png",
"details_url": "https://boltswagstore.com/inventory/hats/red-hat.png",
"taxable": true,
"tax_code": "tax-12345",
"type": "physical",
"item_group": "Ships Immediately",
"has_dynamic_price": true
}
],
"tax_amount": 230,
"billing_address_id": "address-1",
"billing_address": {
"street_address1": "42 Wallaby Way",
"street_address2": "42 Wallaby Way",
"street_address3": "42 Wallaby Way",
"street_address4": "42 Wallaby Way",
"locality": "Wayne County",
"region": "Quebec",
"postal_code": "11209",
"country_code": "US",
"country": "Canada",
"name": "Charlotte Charles",
"first_name": "Charlotte",
"last_name": "Charles",
"company": "ACME Corp.",
"phone": "867-5309",
"email": "my.email@gmail.com"
}
},
"request_source": "checkout"
}
}
Response Example
The following response returns only one in-store pickup option that is 2 miles away.
{
"event": "order.shipping",
"status": "success",
"data": {
"shipping_options": [
{
"service": "Option 1",
"description": "The <span id=\"1\">most</span> popular choice",
"cost": 770,
"tax_amount": 230,
"reference": "1123",
"signature": "a1B2s3dC4f5g5D6hj6E7k8F9l0",
"estimated_delivery_date": "08-30-2022",
"tax_code": "tax-12345",
"discount_by_membership": false,
"default": true,
"description_tooltips": [
{
"target": 1,
"html_content": "Timeline may vary depending on <b>location</b>."
}
]
}
],
"pickup_options": [
{
"reference": "1123",
"signature": "a1B2s3dC4f5g5D6hj6E7k8F9l0",
"cost": 770,
"tax_amount": 230,
"store_name": "Bolt Swag Store #47",
"pickup_window_open": 1578904185,
"pickup_window_close": 1578904185,
"address": {
"street_address1": "42 Wallaby Way",
"street_address2": "42 Wallaby Way",
"street_address3": "42 Wallaby Way",
"street_address4": "42 Wallaby Way",
"locality": "Wayne County",
"region": "Quebec",
"postal_code": "11209",
"country_code": "US",
"country": "Canada"
},
"distance": 2,
"distance_unit": "miles"
}
]
}
}