Scanning & Fulfillment
These settings control how Scanpacker handles scanning and fulfillment. You’ll find them in Settings > Scanning & Fulfillment in the Scanpacker app.
Auto-submit on full check
When enabled, checking finishes automatically after a short delay once all items have been scanned. Turn this off if you want to manually confirm before submitting — useful when you need a moment to double-check the order before moving on.
Enabled by default.
Mark as ready for pickup
Sets whether a store pickup order is marked as ready for pickup in Shopify as soon as checking finishes.
Marking an order ready is what sends the customer Shopify’s “Ready for pickup” email — the two can’t be separated, so an order is never marked ready without the customer hearing about it.
This setting is the starting position for the Mark as ready for pickup checkbox on the checking page, which packers can tick or clear per order. Leaving it clear finishes the check with no email, and the order can be marked ready afterwards from the page shown once checking is done.
Disabled by default, so checking a pickup order doesn’t email anyone until someone chooses to. Turn it on if you’d rather each pickup order go out as soon as it’s checked.
Split fulfillment orders on partial ship
When you ship a partial pick, Scanpacker can split the fulfillment order first so that the items you’re shipping form a complete fulfillment order. The remaining items stay on a separate fulfillment order for future shipments.
This is useful if you want each fulfillment in Shopify to represent exactly what was packed and shipped, rather than having partially fulfilled orders.
Disabled by default.
Custom barcode expression
By default, the scannable barcode for each order line item is the barcode set on the product variant in your product catalog. If the barcode you scan during fulfillment is different from the product variant barcode (or SKU), you can substitute the desired barcode using a custom barcode expression.
A barcode expression is a Liquid code snippet that evaluates to a string. It is not necessary to fully understand Liquid to use this feature, but you can use Liquid to create more complex expressions if needed. You can always contact us for help with creating a custom barcode expression.
You may need to use this feature if:
- You are generating a barcode value for ordered products during checkout (e.g. stored in a line item property).
- You want to use barcode data stored in a metafield on the product variant.
- You are producing and selling customised products that have a barcode assigned at some point during production.
- You have products labelled with a barcode that is different from the SKU or Barcode but is stored elsewhere in your product database (e.g. in a metafield) or can be derived from other product or line item data.
Liquid variables available to you in the custom barcode expression:
line_item.properties- any custom line item properties stored during checkoutline_item.variant.barcode- the variant barcodeline_item.variant.sku- the variant SKUline_item.sku- the variant SKU at order timeorder.name- the order object
Please get in touch if you need to access other order or line item attributes in your custom barcode expression. We are happy to add more variables as needed.
Example 1: Using a line item property
Lets assume you sell highly customised products, and you generate a barcode for each product during checkout. If you have an automatically generate line item property called BARCODE that stores the barcode you want to scan during fulfillment, you can use the following expression:
{{ line_item.properties.BARCODE }}
If there is no property present, then the barcode will be empty and Scanpacker will show a “barcode missing” message during scanning. If you want to fall back on the product variant barcode if the line item property is not set, you can use the following expression:
{% if line_item.properties.BARCODE %}
{{ line_item.properties.BARCODE }}
{% else %}
{{ line_item.variant.barcode }}
{% endif %}
Example 2: Using a barcode value derived from other data
Lets assume you have a workflow with a custom barcode label that is derived from the product variant SKU and the order number. You can use the following expression:
{{ line_item.variant.sku | append: "-" | append: order.name }}
Example 3: Using a product variant metafield
If you want to store the barcode in a metafield on the product variant, you can use the following expression:
{{ line_item.variant.metafields.scanpacker.my_barcode }}