Getting started
Install Snaptare, point it at your catalog, ring up your first sale. Under ten minutes if your Shopify products are already populated.
On this page
- Install Snaptare from the Shopify App Store
- Tag the products you sell at the till
- Pick which variant to expose at the till
- Set the price unit per variant
- How Snaptare computes the per-unit price
- Fix a product's unit from the till
- Ring up your first sale
- Set up the tablet for daily use
- Reference (for humans and AI assistants)
1. Install Snaptare from the Shopify App Store
Search "Snaptare" on the Shopify App Store, click Add app, and approve the requested permissions in your Shopify admin. The app needs the following scopes to work:
read_products,write_products— read your catalog and update tags during setup.read_draft_orders,write_draft_orders— create and finalize the at-the-till draft orders.read_customers— search customers to attach a regular to a sale (results never cached on our side; see privacy §3).read_locations,read_inventory,write_inventory— multi-location support and inventory drawdown.
Approval flips the app on. Snaptare immediately fetches your catalog (in the background) and starts indexing it on the tablet. You'll see a progress bar in the tablet app.
2. Tag the products you sell at the till
Snaptare only shows products with the snaptare tag at the till. This keeps online-only products out.
- Go to Shopify Admin → Products.
- Filter to the products you sell at the counter (your bulk grains, spices, oils, soaps, whatever).
- Select all → Bulk edit → add tag
snaptare.
The tablet picks up new tags within a few seconds via Shopify's products/update webhook. Pull-to-refresh in the catalog if you don't want to wait.
Settings → Catalog → Product tag to bulk-pos, vrac, or anything else.3. Pick which variant to expose at the till
If you have multi-variant bulk products (Adzuki Beans 100 g / 250 g / 500 g / 1 kg), you don't want all four cluttering the grid — just the one used as your bulk reference (typically the smallest, e.g. 100 g).
- Open a product → click into the variant you want exposed.
- Scroll to Metafields → add metafield with namespace
snaptare, keycanonical, type Boolean, valuetrue. - Save.
If you don't mark anything: every variant shows up. That's fine for products with a single variant — common for one-off pre-packaged items like jars of honey.
4. Set the price unit per variant
Snaptare needs to know, for each variant, what unit the shelf price is quoted in. The default is kg (set shop-wide under Settings → Catalog → Default price unit). To override per variant, add a Shopify variant metafield:
- Namespace:
snaptare - Key:
price_unit - Type: Single line text
- Value: one of the identifiers listed below (lowercase, no space)
| Dimension | Allowed price_unit values | Typical products |
|---|---|---|
| Weight | kg · g · lb · oz | Grains, nuts, spices, cheese |
| Length | m · cm · mm · in · ft · yd | Fabric, rope, cable, trim |
| Volume | l · ml · gal · floz | Oils, vinegars, liquid soap, refills |
| Area | m2 · cm2 · ft2 | Carpet, leather, panels |
| Count | each | Jars, bars of soap, one bunch of herbs |
Any value not in that table is ignored — Snaptare falls back to the shop default. The identifiers are case-sensitive; use lowercase.
5. How Snaptare computes the per-unit price
This is the part that trips up most new merchants. The price shown on the till is per price_unit (per kg, per metre, per litre, etc.), but what you type into Shopify's variant price field is the total price of that package.
For example: a 100 g bag of walnuts priced at €2.40 in Shopify becomes €24.00 / kg on the till. Snaptare does the math using the formula:
price_per_unit = variant.price ÷ convert(variant.weight, variant.weight_unit → price_unit)
Two consequences:
- Every weighed variant must have its Weight field set in Shopify (the one next to Weight unit). Without a weight, Snaptare treats the raw variant price as already-per-unit, which is almost always wrong for bulk shops (the symptom is "€2.40 / kg" instead of "€24 / kg").
- Shopify's "Weight unit" is only used for the division above — it is not the display unit on the till. The till always shows prices per
snaptare.price_unit(or the shop default). This decoupling means a merchant can keep shipping weights in grams while displaying prices per kg.
For each variants, Snaptare skips the division entirely: variant.price is treated as the per-item price and the till shows a quantity stepper instead of a scale/measurement input.
2.40 as the variant price and set weight = 100 g; or set weight = 1 kg so the raw €24 matches the per-kg display.6. Fix a product's unit from the till
You don't need to go into Shopify Admin to flip a product between units — press and hold a product tile on the Snaptare till (≈550 ms) and a Sell as menu opens with the common units (each, kg, g, lb, oz). Tapping one writes the snaptare.price_unit metafield in Shopify for you.
This is the right tool for "I just realised these jars are each, not weighed" moments mid-service.
7. Ring up your first sale
Open Snaptare on your tablet. Three steps to a sale:
- Find the product. Tap, type, or hold the mic and say it (e.g. "almonds, six hundred grams").
- Read the weight. Either let the connected scale push it, or type it in grams on the number pad.
- Take payment. Tap Take payment → cash or manual card. Snaptare creates a Shopify draft order with a custom line item, finalizes it, drains inventory, and prints a receipt.
Multiple customers? Tap + New cart and start a second one. Swipe to switch between them. The active cart glows.
8. Set up the tablet for daily use
- Add to home screen. Visit app.snaptare.app in Safari (iPad) or Chrome (Android) → "Add to Home Screen". The app then opens in full-screen with no browser chrome.
- Sign in. Connect to your Shopify store from Snaptare's first-run screen. The token is stored on the device and refreshed automatically.
- Big-font mode. If your team finds text small, toggle Settings → Bigger text for a bumped base size on every screen.
- Pin the orientation. Lock the tablet to landscape (iPad) or portrait (your call) so the layout doesn't flip when staff move it around.
- Disable auto-lock. Set the screen to never sleep while plugged in. Snaptare's offline mode handles wifi drops; you don't want the screen turning off mid-customer.
9. Reference (for humans and AI assistants)
If you are using an AI assistant (Claude, ChatGPT, Shopify Magic) to bulk-fix a catalog, hand it this section. It is the complete, authoritative contract that Snaptare's till reads from Shopify.
Where Snaptare looks
- Product tag (configurable; default
snaptare): only tagged, active products appear at the till. Draft and archived products are skipped even if tagged. Change the tag under Settings → Catalog → Product tag. - Variant metafield
snaptare.price_unit(single_line_text_field): the pricing unit for this variant. See table in §4 for allowed values. When unset, Snaptare uses the shop'scatalog.default_price_unitsetting (defaultkg). - Variant metafield
snaptare.canonical(boolean, string"true"): when any variant on a product has this, only variants marked canonical are exposed at the till. When no variant has it: see rules below. - Variant
price: the total price of the packaged variant. Snaptare divides byweight(converted toprice_unit) to get the per-unit price. Foreachvariants, this is used as-is. - Variant
weightandweightUnit(now atinventoryItem.measurement.weight.{value,unit}in Admin GraphQL): required for weight/length/volume/area pricing. Missing weight = wrong per-unit price. - Shop setting
catalog.default_price_unit: fallback when no variant metafield is set.
Variant-exposure rules
Snaptare chooses which variants of a product to show at the till in this order:
- If any variant has
snaptare.canonical = true→ show only canonical variants. - Else, if every variant has
snaptare.price_unitset → show all of them (lets you expose 100 g + "1 bunch each" on the same product). - Else, if the product has one variant → show it.
- Else, show the smallest-weight variant (typical bulk-shop reference preset).
Pricing formula
// weight/length/volume/area
price_per_unit = variant.price ÷ convert(variant.weight,
variant.weight_unit,
variant.price_unit)
// count ('each')
price_per_item = variant.price
Setting a metafield from Shopify Admin GraphQL
The exact mutation Snaptare itself uses when writing the price_unit metafield (e.g. from the till's long-press menu). An AI assistant can batch this across many variants:
mutation SetPriceUnit($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
userErrors { field message }
}
}
# variables
{
"metafields": [
{
"ownerId": "gid://shopify/ProductVariant/42424242",
"namespace": "snaptare",
"key": "price_unit",
"type": "single_line_text_field",
"value": "kg"
}
]
}
Same shape for snaptare.canonical — use "type": "boolean" and "value": "true".
Bulk fix recipe
A catalog with wrong units/prices is almost always one of these four cases. Walk them in order:
- Missing variant weight → set
weightin Shopify Admin (grams for bulk, usually 1000 if your prices are already per-kg, or the actual package weight if your prices are per-package). - Wrong
price_unit→ writesnaptare.price_unitmetafield per variant. Pick from the table in §4. - All variants show on grid → mark the one you want with
snaptare.canonical = true, or mark every one with its ownprice_unit. - Product doesn't appear at all → check tag (
snaptareby default) and product status (must be active, not draft/archived).
After a bulk edit, the tablet picks changes up within a few seconds via Shopify's products/update webhook — no action needed on the till.