After a year of frustration, I finally found a way to create an in-store pickup option by using a 1000 pound item "called In Store Pickup) and creating a free shipping option that appears only when the shipping is over 1000 pounds. Since we do flat-rate shipping rather than weight-based shipping, this works for us.
I thought I had it working well, but I just hit a snag. When requesting in-store pickup, we instruct the customer to enter their billing address as the shipping address on the Information page of checkout. Obviously, we don't need a shipping address, but you can't skip that page, so we figured this was the best option.
We charge tax only in Illinois, where our brick-and-mortar store is based. Normally, people who are picking-up their order live in Chicago, so we're charging them the correct tax rate. But what never occurred to us is that someone from out of state may be visiting and want to pickup an order. Because they use their own address as the shipping address, they are not charged tax, but since they're picking-up the item at our store, they must pay tax.
Is there a way for us to automatically populate the shipping address fields with our store address so it charges the correct tax? Can anyone think of another solution or work-around?
A better solution than using the 1000 lb item might be to create a Local Pickup discount, which is free shipping. I'll deal with the tax issue after detailing the shipping issue. However, there is an app that might be just what you're looking for, which I'll link to towards the bottom of the post.
There are two routes you can go here. You can create a Local Pickup discount for specific customers, or one for any/all customers. For a recent client of mine who had only a few select customers that picked up orders we did something similar to this:
1) Create a discount with a consistent naming convention. LP1234, for Local PIckup, appended with the customer ID last four digits. This helps quickly verify that a discount used matches the ID of the customer it's intended for and that it hasn't been given out or snagged by someone who shouldn't be using it, just by visual scanning of the orders.
So if you had a customer whose ID ends in 5831, use LP5831.
2) Set the discount to type Free Shipping.
3) Set select country to United States
4) DO NOT CHECK the box next to: "Exclude shipping rates over a certain amount"
5) Check the "None" option under "Minimum Requirements"
6) Under "Customer eligibility" check "Specific customers" - use the search box to bring up and add the customer that you want to have this Local Pickup discount code.
7) DO NOT CHECK any boxes under "Usage Limits"
8) Set the date for it to start.
9) Save it. Then from your dash, send a message to the customer (this assumes they have an account already) with the discount code, mentioning it's for their use only.
Now, when they purchase, any default shipping rate will be present as normal but they just enter the "LP5831" discount code, and they get free shipping, and are not charged for it. You will have to manually mark the order fulfilled when they pick up, of course.
To create a Local Pickup discount for any/all customers, the process is similar, except you should use a different naming convention and under Customer eligibility, select "Everyone" as the option. Let's say you use "LPFREE" (Local Pickup Free) as your discount code. You need to notify everyone that it's available for use. One way to do that might be edit your checkout or cart templates and add a notice mentioning that they can enter "LPFREE" as the discount code at checkout if they're going to pick up in-store.
Again, you just have to make sure you're manually marking the orders fulfilled once they do pick up.
For the tax issue. I'm not sure of a good native option other than having customers add a second address to their account, which is the store's address. Since each customer can have multiple shipping addresses, they can just add it, then select the store's address when placing an order they intend to pick-up at the store. This puts the work on the customer, but you will also need to ensure anyone wanting to pickup locally is aware of it--so a prominently displayed link detailing "In-store Pick-up Requirements!" or something similar is in order.
There is an app that pre-populates the ship-to fields with the store's address, Zapiet's Store Pickup + Delivery. It requires a fee, which ranges $29-49 per month, depending on the options/features you make use of.
Their website is: https://www.zapiet.com
You can read their FAQ page here, and see where it mentions this:
If you have just a handful of local pickup customers and the revenue from those sales is low, it might be easy enough and make sense to just issue Discount Codes for those customers and have them add the store's address to their profile. If you want everyone to have the option and your sales that result in in-store pickup is at any kind of decent volume, the app would be worth it. I wanted to put both options here to help others who might only have a handful of local pickup customers.
Lastly, for taxes, you might check out TaxCloud and make use of their app which calculates taxes and manages collections and remittances/reporting so you don't have to set up lots of rates manually. It's accurate and easy to use, and is backed by a coalition of State governments to provide a free service for merchants:
Install instruction for the TaxCloud app can be found here: https://taxcloud.com/faq/shopify/
Thanks for the wonderfully detailed response. Clearly you, like so many of us, have given this a lot of thought.
First, Zapiet: I looked at it, even installed it briefly, and have recommended it to others, but it was just more than we wanted. I want a way for a customer to select pick-up without all the problems we had wherein customers were choosing it because it said FREE, paying no attention to the fact that they had to be in Chicago to do so. We don't want maps or the requirement that they select a store first.
The method I'm using now is simple and so far we've had zero mistakes. (We thought we had one with a customer from Los Angeles, but he actually was visiting Chicago and came in to pick up.)
When the customer lands on the cart page (we've made it mandatory; the cart can't be skipped) he sees a message that his order will be shipped:
If he clicks the button, a script adds the 1000 pound item to his cart (which, in turn, makes the free pickup shipping option accessible) and the above message changes to acknowledge that the customer is going to pickup his order instead:
At this point, he can again click the button to reverse the process. A lot easier than having to post a free shipping code, which can be misused just as easily as the free in-store pickup shipping option was, and it leaves the box open for real discount promotions.
My only problem is that I haven't found a way to pre-populate the shipping address with the store's address, and we're not going to try to instruct the customer how to do it. We figured having them put in their own address made the most sense, but it didn't occur to us until we had the Los Angeles customer to whom I referred before that this would cause the tax issue.
Tax Cloud is far more powerful than we need for this simple issue and I can't justify the expense. I'm also not sure it would work with the limitations of the Shopify checkout process anyway. It may be that we just have to charge the customer the tax when he comes to pickup his item, but I'd really prefer to automate it somehow.
I've been constantly frustrated by the lack of a true in-store pickup option in shopify. The typical recommendation is to create a special free shipping option named In Store Pickup. This has the two problems you identified of abuse by customers, and incorrect sales tax collection. All of the apps on offer have the same problem that the customer can still edit the shipping address (A Shopify limitation), therefore breaking the sales tax collections. Colorado is particularly bad with over 600 different tax districts, so even a customer down the street may be in a different tax district than the store, and collections are based on the point of delivery/pickup. Shopify needs to offer a real omnichannel solution - not rely on apps and bad workarounds. In this day and age, this is a glaring missing capability. My customers expect this feature, and I can't offer without allowing myself to get screwed over it due to shopify limitations.
Totally agree with this being incredibly frustrating. I'd love to direct my local customers to buy online and come pickup in store (creating a second sales opportunity) -- but oh, wait -- I'm going to get stuck holding the bag for their taxes. Or asking them to cough up more to cover the difference, which is one of the worst customer service things I could do.
Seriously Shopify: how is there not a true "In-store pickup" option when this is such a common need for businesses??
Just getting started with shopify (due to COVID19) and am so annoyed there is not a simple way to offer pick up and local delivery. We are seeling the same tax issue where people are in the next city over and want to pick up products.
I am really sorry for the delay in responding - we have only just seen a number of mentions on the form, going forwards we will get a notification for forum posts and respond much quicker.
@bdeaw hopefully you have found a solution by now, but if not maybe you would like to take a look at the Store Pickup + Delivery app, we have a range of new features and the support team is bigger stronger than ever before - we would be glad to welcome you onboard and get you set up.
If you need any more assistance or information you can email us at email@example.com, you can also start a live chat via the Support tab in the Store Pickup + Delivery app or by visiting www.zapiet.com.