Click & Collect
Click & Collect
All about Click & CollectOverview
Click & Collect, also known as Call & Collect, is a convenient ordering method that allows customers to order products online and then pick them up at a physical store location. This is initiated by customers who prefer to pick up their goods in person.
Step-by-step guide to click-and-collect on EVA
While Click & collect is relatively straightforward, it comprises various components that influence its behavior within EVA. In this step-by-step guide, we will break down the Click & Collect flow, offering detailed insights into each stage of the process. From initiating the flow to managing reservations, communicating with customers, setting up pickup reminders, and optimizing the entire experience, we will guide you through the entire journey of Click & Collect on EVA.
- Initiating the flow
- Webshop initiation
- (In-store) Reservation task
- (In-store) Informing the customers
- Pickup reminders
- Required reservation time
- (In-store) Clean up reservations
1. Initiating the flow
Click & Collect orders are always initiated by the customer, who decides to pick up their purchase in a specific store. Because we know all of this information, initiating a click-and-collect flow is fairly straightforward. The initiation can occur through one of two places:
2. Webshop initiation
External webshops use PushSalesOrder
to communicate orders to EVA. In order to mark orders as click-and-collect, we need to set a PickupOrganizationUnit. In PushSalesOrder
, this can be achieved by specifying the PickupOrganizationUnitBackendID.
An example order would look like this:
{
"BackendSystemID": "pickup_test",
"BackendID": "externalorderid8",
"CurrencyID": "EUR",
"SoldFromOrganizationUnitBackendID": "nl_webshop",
"PickupOrganizationUnitBackendID": "almere_store",
"Customer": {
"EmailAddress": "johndoe@email.com",
"Gender": "M",
"FirstName": "John",
"LastName": "Doe",
"PhoneNumber": "+31612345678"
},
"BillingAddress": {
"Street": "Grove street",
"HouseNumber": "7",
"ZipCode": "1234AB",
"City": "Amsterdam",
"CountryID": "NL"
},
"Lines": [
{
"BackendID": "linebackendid8",
"ProductID": 33,
"Quantity": 1,
"Amount": 49.95,
"TaxRate": 0.21
}
],
"Payments": [
{
"BackendID": "paymentbackendid8",
"Method": "PIN",
"Amount": 49.95
}
]
}
{
"ID": 153,
"CustomerID": 5,
"AlreadyExists": false
}
When RequiredData:RequireOrderTransferForNonPaidPickup
is set to true (otherwise, it defaults to false), and an unpaid order of type Reserve has a pickup point different from the order creation point, the SoldFromOU is updated to the pickup point. This ensures that SoldFromOU reflects the location where the payment is made.
In addition to the pickup organization, we also need a customer with a billing address. A shipping address not needed, obviously.
The request will provide you with the new order's OrderID.
3. (In-store) Reservation task
The 'Reserve in store' functionality can be enabled by setting Orders:Reservations:ClickAndCollectEnabled
to true.
Additionally, you must configure it as a checkout option. This is makes it appear as a selectable tile during the checkout process, both on POS and the Checkout App. This specific checkout option is known as PickupPoint.
To ensure that a store is deemed suitable for click-and-collect orders (especially when there is a limited number of the required products in stock), you can use Orders:Reservations:ClickAndCollectMinQuantityAvailable
to customize the minimum quantity of products that stores must have in inventory before they become visible as options for pick up.
Once a click-and-collect order is created, the specified store will receive the order as a reservation task under 'Click & Collect Tasks' in the Tasks App. Selecting the task will open an overview of all the items that require picking for this order. These items can be gathered either by scanning them or by manually inputting their barcode.
Printing a receipt
Once all the items have been picked, we can complete the reservation task. When completing the task, there is an option to print a reservation receipt. You can configure the receipt using the OrderReservationReceipt stencil template.
You might consider printing a reservation receipt as it offers a tangible, itemized list for ensuring order accuracy and serves as a useful reference for customers when they come to collect their order.
You can adjust the default reservation strategy using the InsufficientStockForReservationStrategy
setting. By default, this setting is configured as ORDER, which means that even if a product is out of stock, the sales order is still sent to the designated organization unit as a click-and-collect order, initiating the reservation flow.
Alternatively, you can set it to CANCEL. With this, any order line with no stock will be automatically canceled, eliminating the possibility of initiating a reservation flow when there's no available stock.
Useful link(s)
- Settings.
- How to configure Stencils.
- Checkout options.
- Click & Collect Tasks.
- Picking.
4. (In-store) Informing the customer
How can I let the customer know their order is ready?
Once the task has been completed, EVA will send an email and/or SMS to notify the customer that their order is now ready for pick up.
Email
To establish this email flow, you must configure two settings: Mail:StockReservationCreated:Enabled
and VerifyPaidPickupOrders:Enabled
, both set to true. The latter is essential for displaying a QR code in the email. You can configure the email using the StockReservation stencil template.
Once set up correctly, the customer will receive an email with a unique QR code, which only they can access. To release the (paid) pickup order, the customer can simply show this QR code to the employee. If, for any reason, the employee needs to release the order without the customer's QR code, their role must have the ReleasePaidPickupOrders permission.
SMS
Additionally, you can set an SMS message to be sent to the customer to inform them. This requires the following three steps:
- Set up SMS configuration with MessageBird
- Set up a StockReservation template with destination SMS
- Set
Sms:StockReservation:Send
to true
Useful link(s)
- How to configure Stencils.
- Stencil template.
- Roles and rights.
5. Pickup reminders
How can I set up pickup reminders? How frequent will they be sent out?
To remind customers to pick up their reserved order, we can configure the PickupReminder:ReminderDays
setting. If we set this to 4,2,1, EVA will automatically send a reminder email when there are four days left for the customer to pick up their order. It will then send another reminder when there are only two days left and yet another when there's just one day left. You can customize the reminder email using the PickupReminder stencil template.
To support these reminders, we need to set up the EVA.UserTasks.Tasks.PickupReminders
task in the Scheduled tasks chapter in Admin Suite's Control room module. If we configure it to run at 24-hour intervals, it will periodically check if any reservation orders match the number of days that corresponds with the PickupReminder:ReminderDays
setting and trigger the e-mails.
When completing a cleanup task, you can instruct EVA to automatically refund the order by setting RefundAfterReservationOrderLineCancelled
to true.
Useful link(s)
6. Required reservation time
Why do you need a required reservation time?
You might want to set a required reservation time to manage the flow of customers and ensure that items are prepared for pickup when customers arrive.
To set a specific time for a store to prepare a click-and-collect order, you can use the Orders:Reservation:RequiredReservationTime
setting. This setting allows you to specify the amount of time the store needs to prepare a click-and-collect order before it becomes available for pick up.
The calculation will also consider opening hours. If this setting pushes the click-and-collect order past the end of the day, it will automatically roll over to the following day.
Useful link(s)
7. (In-store) Clean up reservations
What happens when customers don't pick up their orders?
It's not ideal, but it happens. At some point, some people are going to forget to pick up their reserved orders, or simply just had a change of mind. To prevent these reserved orders to hang around indefinitely, we've implemented reservation cleanup tasks. These tasks allow us to set a maximum reservation duration. Once this duration is exceeded, a reservation cleanup task is triggered.
This is made possible by setting ReservationCleanupTasks:Enabled
to true. The previously mentioned scheduled task PickupReminder
is responsible for generating these cleanup tasks at 30-minute intervals.
To configure the maximum amount of days, we use MaxReservationTime
. By default, this is set to 7 days.