Skip to content

How does it work ​

Store Pickup lets your customers choose to pick up their order at one of your locations instead of having it shipped. The module has no template tags of its own: the locations show up in the normal checkout of Reinos Store, so you use the regular Store tags in your templates. You manage the locations in the CP of the module, see CP Overview.

What changes in Reinos Store ​

When the module is installed:

  • Shipping methods: every pickup location is listed as a shipping method in the shipping_methods tag, with the label and price of the location.
  • Create order: the pickup locations can be chosen as shipping method on the Create order page in the CP of Reinos Store, see Create order.
  • Payment: a location can allow the customer to pay at pickup, see Pay at pickup.
  • Orders: a pickup order gets the label of the location as shipping carrier and starts with the shipping status Not Picked Up.
  • Order detail in the CP: a pickup order gets an Is Picked Up toggle instead of the Is shipped toggle.
  • Global variable: {reinos_store_pickup_module_installed} tells you the module is installed (see global variables).

No settings of Reinos Store are hidden or taken over. The Always select first shipping method setting in the module CP is the same setting as in Reinos Store.

Shipping methods ​

Every location is a shipping method named pickup__ followed by the location ID (e.g. pickup__1). Locations are per site (MSM). Let the customer choose one and post it as shipping_method in the checkout tag, just like any other shipping method:

{exp:reinos_store:shipping_methods}
    <input {if shipping_methods:selected}checked{/if} id="{shipping_methods:name}" type="radio" name="shipping_method" value="{shipping_methods:name}" />
    <label for="{shipping_methods:name}">{shipping_methods:title} ({shipping_methods:price_plus_tax:formatted})</label>
{/exp:reinos_store:shipping_methods}

When Store Pickup is the only shipping add-on, the default shipping option of Reinos Store (the Shipping Label and Shipping Price settings) stays in the list next to your locations (unless Ship orders is off). With Store Shipping or Store MyParcel installed, that default option is removed (see Other add-ons).

Create order ​

On the Create order page in the CP of Reinos Store, the pickup locations of the current site are listed as shipping method as Pickup: <label>, with the price of the location as the default shipping price (you can still change it, and the shipping tax is added by Reinos Store). The order gets the label of the location as shipping carrier and the shipping status Not Picked Up, like an order from the checkout. The pay at pickup option is not used there: an order made by hand always gets the Manual gateway. Available from v2.0.0

Checkout flow ​

  1. The customer sees your pickup locations in the list of shipping methods (next to the methods of other shipping add-ons).
  2. The customer chooses a location. The shipping cost of the cart becomes the price of that location.
  3. On checkout, the order gets the label of the location as shipping carrier, so {order:shipping_method} shows which location, also after the location is deleted (Available from v2.0.0, before that the Gateway Label was stored).
  4. The customer pays online, or pays at pickup when the location allows it (see Pay at pickup).
  5. The order is created with the shipping status Not Picked Up.

Good to know:

  • Tax: the pickup price gets the same shipping tax as the cart: the shipping tax of Store Tax, or without Store Tax the Shipping TAX percentage setting of Reinos Store.
  • Free shipping: when the cart has free shipping (the Free shipping above setting, a free shipping rule of Store Price Rule or the disable_shipping parameter), the pickup price becomes 0 as well.
  • When a location is deleted, it is removed from carts that still had it selected.

Pay at pickup ​

When Allow checkout without payment is on for the selected location, the gateway_list tag shows an extra payment option with the Gateway Label of the location, so the customer can pay at pickup. What happens on checkout:

  • The pay at pickup option chosen, or no payment method posted: the order is placed with the Manual gateway and is not marked as paid. It gets the status of the Status of a new order setting of the Manual gateway (Pending by default). The Manual gateway does not have to be enabled in Reinos Store for this. When that setting is Complete, pay at pickup orders are placed as complete as well, still not marked as paid.
  • Another payment method chosen: the customer pays online as usual.

The order itself does not keep the Gateway Label: {order:gateway} is manual, and {order:gateway_label} shows the label of the Manual gateway in Reinos Store, or its default label Manual when that gateway is not enabled or has no label. Use {if order:is_pickup && order:gateway == "manual"} in your templates and emails to show a "pay at pickup" text.

The extra option only shows up when the pickup location is already saved in the cart when the payment methods are shown. Use a stepped checkout, or reload the payment methods after the customer changes the shipping method (as the checkout-single-page.html example template does). The option is also shown when no gateway is enabled in Reinos Store, and it replaces the Manual gateway in the list when that one is enabled.

Allow checkout without payment only controls the pay at pickup option. When the Manual gateway is enabled in Reinos Store, a customer can still choose it at a location where this setting is off, and the order is placed unpaid as with any other shipping method. Disable the Manual gateway if every order must be paid online.

Picked up status ​

A new pickup order (from the checkout or made with Create order) gets the shipping status Not Picked Up. When the customer has collected the order, open it in the CP of Reinos Store and turn on Is Picked Up; the status becomes Picked Up. The toggle is shown for every pickup order (also when Manage Shipping Status is off) and can be changed while the order is pending, open or complete.

In your templates you can use the variables of the order tag:

{if order:is_pickup}
    Picked up: {if order:is_picked_up}Yes{if:else}No{/if}
{/if}
  • {order:is_picked_up} is only true for a pickup order that is picked up.
  • {order:is_shipped} is true for a pickup order that is picked up, so the Is Shipped trigger of Store Email also works for pickup orders. Available from v2.0.0
  • {order:shipping_status} returns the label Not Picked Up or Picked Up as plain text for a pickup order. The control panel shows it as a status badge. Other statuses of a pickup order (e.g. of an order placed before 1.2.0) are shown by Reinos Store as usual.

Other add-ons ​

Every shipping add-on adds its own methods to the same list, so they can be combined:

  • Store Shipping and Store MyParcel: their methods are listed next to your pickup locations, and the default Store shipping option is removed. Pickup orders are not exported to MyParcel automatically, but the order detail still offers Create parcel. Don't use it for a pickup order: creating a parcel changes the shipping method to MyParcel, so the order is no longer a pickup order (no Not Picked Up status and no Is Picked Up toggle). The pickup points of MyParcel itself have nothing to do with this module.
  • Store Tax: calculates the tax on the pickup price.
  • Store Price Rule: a free shipping rule also makes the pickup price 0.

Uninstall ​

Uninstalling the module deletes all locations, settings and logs. Existing orders keep their pickup shipping method, carrier and status: Reinos Store still shows the Is Picked Up toggle for them, the status labels Not Picked Up / Picked Up and {order:is_picked_up}, but {order:is_shipped} (and the Is Shipped trigger of Store Email) is no longer true for a picked up order. A cart with a pickup location selected loses it the next time the shipping methods are loaded.

Common pitfalls ​

  • shipping_method_missing for a pickup location: the location was deleted, or belongs to another site, after the customer selected it.
  • No pay at pickup option: Allow checkout without payment is off for the location, or the location was not yet saved in the cart when the payment methods were shown.
  • No locations in the checkout: no locations exist for the current site, or the template does not use the {exp:reinos_store:shipping_methods} tag. The posted field must be named shipping_method.
  • Shipping address still required: choosing a pickup location does not make the shipping address optional; that is controlled by the checkout tag of Reinos Store. With Validate addresses on, the format of the shipping address is not checked for a pickup location, but in a stepped checkout with the shipping address in step 1 and the shipping method in step 2, the pickup location is not known yet in step 1, so the shipping address is still checked there. Ask the shipping address in the same step as the shipping method, or after it, to skip that check for pickup orders.
  • Pickup price without tax: Store Tax is not installed and the Shipping TAX percentage of Reinos Store is 0, or Store Tax returns 0% (e.g. reverse charge).
  • Where to look for errors: checkout errors are the normal checkout tag errors (e.g. shipping_method_missing, gateway_not_exists) and payment errors are logged by Reinos Store. A pickup location that no longer exists is removed from the cart by Reinos Store, so the checkout gives shipping_method_missing; the Logs page of the module shows which location was not found, and with the Everything log setting also the placed pickup orders and checkouts without payment.