Packtier

Merchant guide

Packtier Help Center

Everything about building packs, pricing them, and keeping them honest at checkout. Search above, or browse the sections on the left. No sign-in needed to read this - if something here doesn’t match what you see in your admin, email support@modulehub.dev.

1

What Packtier does

Packtier adds one block to a product page that offers the product in packs: 1 unit at the normal price, 2 units cheaper, 3 units cheaper still, and so on. The shopper picks a size and colour for every unit, sees a running list of what the pack contains, and adds the whole pack with one button.

A tier can be a plain volume break, a buy X, get Y free deal, or a tier that adds a free gift, and any tier can earn real free shipping. You can also A/B test two or three versions of an offer against each other.

The widget comes in four styles - Cards, Rows, Table and List - that you choose and tune in the theme editor, with no code (section 5.1).

2

Before you start

You need:

  • A Shopify store on a plan that supports Shopify Functions and theme app extensions (Online Store 2.0 theme).
  • At least one product to put an offer on. Variants are supported but not required.
  • Permission to edit your theme in the theme editor, to place the block.

Packtier requests read access to products, inventory, orders, markets, and your theme, plus read and write access to translations (so it can save the offer text you translate). It registers one automatic discount that it owns, a checkout validation function, a web pixel, and a metaobject definition to store your offers. It does not create discount codes and does not ask for write access to your theme, products, or orders.

3

Install

  1. Open Packtier from the Shopify App Store and choose Add app.
  2. Review the permission screen and approve it. You land in the Packtier admin inside your Shopify admin.
  3. On first open the free plan is already active - build and test an offer before choosing a paid plan.
4

Add the block to your product page

  1. In Shopify admin go to Online Store → Themes → Customize.
  2. Switch the template to Products → Default product (or a specific product template).
  3. Under the product information area, choose Add block → Packtier quantity tiers.
  4. Drag the block to where you want it - usually just above or below the theme's Add to cart button.
  5. Click Save.

If you ever remove the block or it fails to load, the product stays buyable through the theme's own Add to cart button, and Packtier sends you an alert. The Health check screen tells you if the block is missing from the template.

5

Create an offer

Choose Create offer to land on a gallery of six starting points: Volume discount (a 1/2/3 ladder that gets cheaper per unit), Buy X, get Y free, Free gift ladder, Free shipping threshold, Fixed bundle (a set of different products - section 5.2), and Start from scratch. Picking a template doesn't create anything yet - it opens the editor with a banner reading “This offer isn't saved yet”. The offer is created only when you press Save (as a draft) or Activate (live).

The editor is one page with a sticky live preview on the right and five collapsible sections: What you sell, Discount (tiers, rounding and discount base), Appearance, Texts, and Schedule and who sees it. Only the first two are required - everything else has sensible defaults. Under each tier Packtier shows a worked example with the real numbers before you save.

Free shipping on a tier applies to the whole order's delivery, not just the pack - that is how Shopify shipping discounts work. If a shopper's cart has the pack plus other products, the whole cart ships free. If that's not what you want, use a plain reward label instead.

5.1

Pick a widget style and tune its look

The widget comes in four layouts, set in either the offer's Appearance section or the theme-editor block settings - they work together:

  • Cards - each tier is a bordered card with a radio button. The default, and the safest fit for most themes.
  • Rows - a borderless, hairline-ruled list. Tighter and quieter; good when the page is already busy.
  • Table - a side-by-side comparison grid, one column per pack. Best on a roughly white or roughly dark section background.
  • List - bordered rows, each with a radio button, the pack name, the price per item and the total. Reads well at any width.

In the theme editor you can also set accent colour (default Packtier violet #A73AFD), corner radius, density, dark-theme handling, and which display toggles show. Priority, highest to lowest: a running A/B test variant → the offer's own colour/radius → an explicit theme-editor value → the offer's Appearance section → Packtier's built-in default.

Intensity (Appearance, Cards style only - hidden for Rows, Table and List) sets how strongly the selected tier stands out from the others: Calm gives it a thin border and a light, barely-there wash of the Selected card colour; Balanced (the default) is a normal border and shadow; Bold gives it a thicker border and a pronounced shadow that visibly lifts it off the page, and gives the other, unselected cards a slightly darker border too for contrast. The colour itself never changes - only how strongly it shows - so it works with whatever Selected card colour is already set.

5.2

Fixed bundles: sell a set of different products

A fixed bundle sells a set of 2 to 6 different products with one button and one bundle price - for example a snowboard, bindings and gloves. It is a separate offer type from the volume packs above: choose Create offer → Fixed bundle to start.

The editor has the same five sections as other offers. These are the parts that are specific to bundles:

  • What's in the set - add 2 to 6 products with Add products, set 1 to 10 units of each, and reorder or remove them. The field under each product (Show "…" as…) replaces its name in the widget with your own wording. Pin variant fixes one variant of a product; without a pin the shopper chooses the variant on the page.
  • Show the bundle on (also in What's in the set) - by default the bundle appears on the page of every product in the set. Untick a product to hide the bundle on its page; at least one stays ticked. This only changes where the block shows: the discount at checkout still covers every product in the set.
  • Bundle price - No discount, % off the bundle, $ off the bundle, $ off each item or Fixed bundle price. Free shipping on this bundle works like free shipping on a tier: it applies to the whole order's delivery. With a fixed price, pin a variant on any product whose variants are priced differently - the editor asks you to, because otherwise a shopper could pick the priciest variant and still pay the bundle price.
  • Appearance - the variant picker style (dropdowns, text pills, colour swatches or image swatches), density, whether the “was” price shows, and where the block sits relative to the theme's Add to cart button. A bundle has one layout, so the Cards, Rows and Table choice does not apply to it. The heading and button text are in Texts.
  • Fine-tune the bundle look (inside Appearance) - all optional. Choose your theme's font or a system font (sans-serif, serif or monospace - nothing is downloaded). Set the size (8 to 40 px) and the weight or italic style of the bundle title, product name, product price, tag, footer, total price and button. Set colours for the total price, the product rows, the total bar, the tag border and the button (text, background, border), plus the button's border width (0 to 10 px) and corner radius (0 to 42 px). Leave a field empty to keep the default. Reset to the default look clears them all.
  • Discount - rounding and the discount base work as in section 6. Hide the bundle when a product in it is unavailable and After adding the bundle (stay on the page, open the cart, or go to checkout) are in Appearance.

The live preview shows each product's real options - for example a dropdown reading “Ice / Black” - the way the storefront does, and nothing for a product that has a single variant.

What shoppers see. One row per product with its image, name, quantity and price, and a picker wherever the shopper has to choose a variant. The bundle button stays disabled until every choice is made. One click adds every product to the cart, and the bundle price is applied as an automatic discount at checkout (section 14 describes the cart). With No discount the products are added as ordinary cart lines, so the button is only a shortcut.

If a product is sold out, the bundle stays visible by default: the affected row is marked and the button is disabled with the reason. Packtier never adds part of a bundle and never swaps in a different variant. Turn on Hide the bundle when a product in it is unavailable to hide the whole block instead.

5.3

Layout, fonts, colours and the other look options

Volume offers have more ways to shape the widget than the palette and corner radius in Appearance. Open Fine-tune the look (inside Appearance); every field is optional, and a field you leave empty keeps the default look. Nothing here changes the price, so an offer that sets none of it looks exactly as before.

  • Layout and spacing - Card layout (one or two cards per row) sits right under Widget style in Appearance. Set the space between cards (0 to 24 px) and the card border width (0 to 6 px). The corner radius field goes up to 50. Untick Show the heading above the tiers to drop the heading above the tiers.
  • Fonts - your theme's font, or a system font (sans-serif, serif or monospace - nothing is downloaded). Set the size (8 to 40 px) and the weight or italic style of the heading, tier title, sub-line, badge, price, old price, free shipping / gift text and footer.
  • Colours - every colour except the accent (which stays in Appearance), in three groups: the card, the badge, and text and prices. Leave a colour empty to inherit the theme.
  • More colours - card background, sub-line, sold-out text, and for the free shipping and free gift bands the text and background colour on the selected card and on the other cards. Colours are hex values.
  • Free shipping and free gift bands - pick one of eight built-in icons for each. The words on a band are set on the tier itself (below its picture link); leave them empty for the built-in wording.
  • Picture for this tier - a tier can show its own picture in place of the product photo. Press Upload image to upload an image (it is saved in your Shopify Files). The same upload works for option pictures and for your own free shipping / gift band icons.
  • Colours and pictures for options - choose how each product option is picked (dropdown, text pills, colour swatches or picture swatches), and map each value to a colour or a picture link. Options and values come from your offer's products. Set the swatch shape (rounded square, circle or square) and size (small, medium, large).
  • Hide sold-out options removes sold-out options from the pickers instead of greying them out. One choice for every item in a pack removes the “choose separately” checkbox so every item in a pack gets the same options.
  • Sticky add-to-cart bar - besides the button text you can set the title line (the variable {productTitle} works there), the photo size and corner radius, the button's padding and corner radius, and the title and button colours.
  • Reset to the default look clears all of the above.

The live preview shows all of this. When the offer targets more than one product, Preview with product switches the preview between them, using that product's real photo, price and options.

5.4

Tier controls, amounts per item, rounding per tier and duplicating an offer

These controls sit on each tier (section 2 of the editor) and in the offers list:

  • On / off switch - switch a tier off to keep it in the editor without showing it. A tier that is off is not on the storefront and cannot be bought or discounted. At least one tier stays on.
  • Drag to reorder - drag the handle on the left of a tier to move it (the Up and Down buttons still work).
  • Type the amount per item, not for the whole pack - for an amount-off tier you can type the amount per item instead of for the whole pack. Packtier stores the pack total, so nothing changes at checkout.
  • Price ending for this tier - give one tier its own rounding (for example to end in .99) instead of the offer's. Leave it on the offer's setting to use the rounding chosen under Discount. An exact pack price is never rounded.
  • Duplicate - copies an offer, with its tiers, look and targeting, into a new draft. It is in the offers list menu and in the editor's More actions.
  • All products - in What you sell you can apply an offer to every product instead of picking products or collections. It then shows on every product page, including products you add later.
5.5

Subscribe & Save

Volume/Quantity Break offers only. Turn on Subscribe & Save option (in Appearance) to let shoppers choose a subscription for a product that already has a selling plan set up in a subscriptions app - Packtier doesn't create the plan or set its price, it only offers the choice next to the tiers.

The tier discount applies on top of whatever the subscription already discounted: Shopify hands Packtier the subscription price, so a percent or amount tier stacks on it automatically. A tier priced as an exact pack price can't combine with a subscription discount, so it's hidden from the tier list the moment a shopper picks Subscribe & Save, and reappears on One-time purchase.

You can set your own wording for the one-time and subscribe labels, and choose whether to show the subscription's own discount label next to the option. Leave a field blank to use the built-in wording - which can also be changed store-wide, in your own language, on Settings → Translations (look for "One-time purchase" and "Subscribe & Save"). Text typed directly into this offer always wins over the Translations page.

When a product has more than one selling plan, a dropdown lets the shopper pick which one - but it only appears once Subscribe & Save is the selected option, since picking a plan has no effect on a one-time purchase. One-time purchase and Subscribe & Save themselves render as a pair of side-by-side buttons highlighted in your tier cards' own accent colour - there's no separate colour setting for this, it always matches your existing tiers. This pass doesn't hide a theme's own native subscription selector if the product page already shows one.

6

Tier types, price modes, rounding, and the discount base

A standard rung buys a set number of units at a tier price. A buy-X-get-Y-free rung is a distinct tier type: you enter how many units the shopper pays for (X) and how many are free (Y); Packtier makes the Y lowest-priced units in the pack free, based on the shopper's live variant choices. Buy-X-get-Y is available on every plan, including Free.

Price modeYou enterExample
Percent off the packa percentage10% off $59.98 → $53.98
Fixed amount off the packan amount in your currency$6.00 off $59.98 → $53.98
Fixed price for the packthe final pack priceyou enter $53.98

Rounding - since a percentage rarely lands on a clean number, choose None (exact math), Down, Up, Nearest, or a Charm ending (.95 / .99).

Discount base - the discount is calculated from the compare-at price, the current selling price, or the price after an active Shopify discount. Pick this deliberately: it's the difference between “25% off the list price” and “25% off the already-discounted price”.

Combine discount across selected products (in Discount, next to rounding and discount base) sums the quantities of every targeted product together toward one tier ladder, instead of pricing each product on its own - so 1 unit of product A plus 1 unit of product B can together reach a 2-unit tier. Only percent and amount-off tiers work with this on; an exact pack price, a buy-X-get-Y tier, a free gift, and free shipping can't be reached this way, so none of those can be turned on for a tier while it's active - the buttons for them are greyed out.

A gift or free shipping a tier already had before you turned Combine on keeps working when a shopper buys exactly that tier's own quantity from that one product - Combine doesn't clear the setting. It just never adds that tier's quantity into a combined total from other products, and is never the tier a combined total resolves to.

The storefront still shows each product's own tier price - the combined discount is confirmed in the cart, not promised early on the page. Because of that, Combine also shows shoppers a short line under the tier header ("Combines with other items for extra savings" by default, editable right under the Combine checkbox, blank = built-in wording) so they at least know combining is possible, even though the widget can't say how many items they still need.

A tier can also add a free gift (every plan, including Free): pick a product and variant, and a quantity. The Discount Function zeros it and the checkout validation function confirms the gift in the order matches the tier you configured - a mismatched or duplicated gift is rejected before checkout.

7

How the pack price works with other discounts

By default the pack discount combines with every discount class - order, product, and shipping - so Shopify's own combination rules decide what else can stack on the pack. You can turn any of the three off yourself under Settings → Discount combination: a single, store-wide switch (it applies to every offer, not one at a time). Most stores should leave all three on.

Even with product discounts left on, a product-level discount code often still won't stack on the pack lines: Shopify generally allows only one product-class discount per cart line, no matter what either discount declares itself willing to combine with - so a product code on a bundle line can still be rejected at checkout, or a product automatic discount silently skipped on those lines. That part is a Shopify platform limit, not something the Settings toggle changes.

Order-level and shipping discount codes don't have that same-class limit, so - as long as you've left those two switched on - they stack on top of the pack price (they apply in a later phase).

8

Targeting: products or collections

Target exact products, or a whole collection so the offer applies to everything in it, now and in the future, without re-editing. A unit the shopper picks must belong to the offer's target - the validation function rejects a pack whose contents don't (a tier gift is exempt from this check).

9

Display rules: who sees the offer

Every plan, including Free. In Schedule and who sees it:

  • Show only to customers tagged - visible only to logged-in customers with one of these tags.
  • Hide from customers tagged - e.g. wholesale, to keep B2B buyers out of a retail offer.
  • Exclude B2B customers - never show or discount the offer for a buyer purchasing on behalf of a Shopify B2B company, checked automatically - not by customer tags.
  • Markets - restrict the offer to specific markets.
  • Per tier, a minimum and maximum unit count.

All of this is evaluated in the theme before the widget renders - no call to an external service on page load.

10

Schedule

Every plan, including Free. Set a start and end date and the offer switches itself on and off - no manual watching. A countdown appears only when a real end date is set: a static “Offer ends {date}” beyond 7 days out, a live ticker inside 72 hours, and the accent colour in the final hour.

11

Translations and currency

  • Offer text (labels, subtitles, badges) is a Shopify translatable resource - translate it under Settings → Languages → Translate & Adapt, the same place as the rest of your store.
  • Fixed widget text ships translated for all 11 languages the app supports - English, German, French, Spanish, Brazilian Portuguese, Dutch, Swedish, Italian, Japanese, Korean, and Simplified Chinese - and follows the storefront language automatically; a language beyond these falls back to English.
  • Prices render in the active market's currency, using Shopify's own formatting.

Packtier's storefront cache is keyed by market and locale, so switching language or market never makes the widget disappear or show the wrong currency.

12

Checking an offer before and after launch

  • Live preview - always visible in the editor, with Desktop/Mobile and Cards/Rows/Table toggles.
  • Health check - verifies the block is in the template, the offer is active, targeted products are in stock, the bundle discount and validation function are active, and names the specific reason if a widget isn't rendering.
13

A/B testing your offers

Starter plan and up. Pick a base offer and add 1 or 2 more variants (up to 3 total). A variant can override only appearance, the block heading, and per-tier text and price - it cannot change targeting, a free gift, or a free-shipping tier, which always come from the base offer.

Traffic splits evenly and stays sticky per visitor, worked out in the shopper's browser - no extra network call, nothing stored per visitor. Below 25 pack orders per variant the dashboard shows “Small sample” and withholds a leader; there is no statistical-significance percentage, only a plain-language comparison. Declare the winner copies that variant's configuration into the base offer for every shopper; the test then closes for good.

14

How a pack appears in the cart

A pack lives in the cart as ordinary, editable line items - one per component, plus a gift line if the tier includes one. The bundle price is an automatic discount, so each line shows its normal price and the saving appears as an order discount at checkout; the shopper can edit or remove any line with your theme's own cart controls. If you change an offer's pricing while a shopper already has that pack in their cart, it stays at full price and checkout asks them to remove and re-add it from the product page.

15

Analytics

The last 30 days against the 30 before: widget visits, pack orders, conversion to a pack, and added revenue computed from real order lines - plus a daily chart, a pack-size distribution, and a count of progressive gifts handed out. Every number reconciles against your own Shopify order list; nothing here is self-attributed.

16

Plans and billing

A flat monthly subscription billed through Shopify - no usage-based “percent of extra revenue” charge. The plan metric is the number of orders containing a pack in the billing period, and you can recount it yourself in your order list. Change plan up or down, or cancel, from the Plans screen - no support ticket.

PlanPrice / monthAnnualPack orders / 30 daysActive offers
Free$0—502
Starter$9.99$99.90200Unlimited
Growth$19.99$199.90600Unlimited
Scale$49.99$499.90UnlimitedUnlimited

Paid plans include a 14-day free trial. Free and up already gets every core quantity-break feature, buy-X-get-Y, a free gift, real free-shipping tiers, scheduling, display rules, explicit rounding, the discount-base control, multi-market/language storefront text, analytics, and Health check. Starter and up adds A/B testing - the only feature this plan gates.

17

When you reach a plan limit

Reaching a limit never turns off a live offer. Approaching it, you get an in-admin notice ahead of time; at the limit, the admin goes read-only for new offers while everything already running keeps working; if a charge fails, a 7-day grace window keeps the admin fully editable before it goes read-only. At no point does an unpaid or over-limit account lose sales silently - the degradation is always admin-only.

18

Safe degradation and alerts

If the widget block can't mount on a page, the theme's own Add to cart button remains and Packtier alerts you. Before any update that changes storefront behaviour, you get an in-admin banner in advance. The Health check screen is the first place to look if a merchant or a customer reports the pack options aren't showing.

19

Uninstalling

Shopify cancels the subscription automatically and background jobs stop. After Shopify's grace period, Packtier deletes the store's data - offers, experiments, analytics, plan counters, health/alert logs - keeping only an audit record of the deletion itself (store domain and timestamps, no shopper data). Packtier implements all three required Shopify privacy webhooks; because it stores no shopper contact data, IP, or location, a data request returns a plain statement of that plus any billing records referencing the requested order IDs.

20

Support and privacy

Support: support@modulehub.dev - email only, online 12 hours a day, every day (12/7), answering every message during that window. The same inbox handles privacy and GDPR requests. See the privacy policy for details, or the support page for what to check before you write.