Ir al contenido

Add-On Products

Esta página aún no está disponible en tu idioma.

This guide covers how admins manage add-on products — extras (locker rentals, materials packages, equipment certifications, parking passes, expedited processing fees, welcome kits, etc.) that members can purchase alongside a membership or an event registration, or receive as part of their plan.

You’ll need one or more of the following permissions depending on the action:

ActionPermission
Create / edit / archive productsmanage_store
Manage membership add-ons and what a plan includesmanage_memberships
Attach add-ons to an eventedit_events
View member add-on purchases and fulfillmentsview_users
View add-on revenue summarymanage_store

An add-on is a product members get alongside a membership or an event registration:

  • Membership add-ons that members choose to buy (a locker, extra wheel hours) are managed on the Add-ons page under Memberships, with one price, the plans that offer them, and the places they cover. See Membership Add-ons.
  • What a plan includes, gives as a welcome gift, or requires is set on that plan’s Included with this plan page (below).
  • Event add-ons are attached in the event’s settings (below).

The same product can be sold in the store and included with a plan. Add-ons created on the Add-ons page are the exception: they’re sold only with a membership and don’t appear in the store.

Every product has an explicit billing model that determines how it can be sold and attached:

  • One-time — billed once at purchase. Members add these to their cart and check out (a parking pass for a single class, a one-off material kit, a welcome gift). One-time products are eligible for cart checkout, event attachment, and welcome-gift attachment.
  • Recurring — billed on a subscription cadence (a locker rental that renews monthly). Recurring products cannot be added to a cart, cannot be attached to events, and cannot be configured as welcome gifts. They are sold via a dedicated Subscribe flow and can be attached to plans as recurring inclusions.

The billing model is required on every product — there is no longer a “none” / unset option. Existing products that did not have a billing model when this release shipped were automatically set to One-time; a dismissible notice on the admin products page shows the count and the date of the conversion so you can audit and re-classify as needed.

Navigate to Admin > Store > Products and click Add Product.

Clicking Add Product opens the Product setup modal first — before the full create form. This is where you make the three permanent decisions about the product:

  1. Is this a gift card? When toggled on, the billing model and inventory tracking choices are hidden — gift cards are always one-time and never inventory-tracked. The product cannot later be switched between gift-card and regular status.
  2. Billing model. One-time for cart-eligible products or Recurring for subscription-only products.
  3. Inventory tracking. Pick No tracking, Stock (depleting), or Capacity (concurrent slots). Capacity is only available when billing is Recurring — capacity tracking relies on the subscription lifecycle, so a one-time + capacity product would be unpurchasable. Switching billing back to one-time clears any capacity selection.

The modal carries a banner reminding you that these three choices are permanent. After you confirm, the create form opens with those three fields shown as read-only badges in a Product setup card at the top, and the rest of the form is unlocked for editing:

FieldDescription
NameDisplay name shown to members
DescriptionShort explanation; rendered alongside the price in member-facing surfaces
PriceStandard price
Member priceOptional discounted price for members. Leave blank to charge the standard price
Available recurring intervalsShown only when the archetype’s billing model is Recurring. Tick every cadence members may choose at Subscribe time (daily, weekly, monthly, annual).
Max quantity per memberLeave blank for unlimited, or enter a positive integer to cap the number of times one member can purchase this product
Inventory count / CapacityShown only when the archetype selected Stock or Capacity. For stock products, this is how many units exist; for capacity products, the concurrent slot ceiling. The mode itself is fixed by the archetype and shown read-only — see Tracking Inventory below.
Product typeEditable for non-gift-card products (Physical, Digital, Consumable, Service). Forced to Gift Card and hidden when the archetype selected gift card. Product type no longer gates inventory tracking — any non-gift-card product can track inventory once the archetype enables it.

After saving, the product appears in the list with a status of Active. Archiving it hides it from new purchases and Subscribe sessions without breaking existing member subscriptions — those remain billable until each member cancels.

The three archetype choices are the only permanent fields. On the edit screen they’re rendered as read-only badges:

Permanent (set once at creation)Freely editable later
Gift card statusName, description
Billing model (one-time / recurring)Price, member price
Inventory mode (none / stock / capacity)Available recurring intervals, max quantity per member
Inventory count / capacity ceiling (the value, not the mode)
Product type (within non-gift-card types — e.g., physical → digital)
Status (active / archived)

Most products don’t need inventory tracking — a service fee, a digital download, or a one-off processing charge has no physical scarcity. When a product does have scarcity, MakerVera tracks it in one of two modes. You pick the mode when you create the product, and it cannot be changed afterward — like single-session vs multi-session on events, the choice is a structural fact about the product.

StockCapacity
What it countsHow many units you haveHow many concurrent slots are filled
ExampleBags of filament, materials kits, welcome giftsLockers, parking passes, 24/7 door fobs
What happens at purchaseThe counter goes down by oneThe counter doesn’t move — a new active subscription fills a slot
What happens at cancellationNothing (you’ve already used the unit)The slot frees up automatically when the subscription ends
What happens at renewalOne unit is deducted each billing cycle (for plan-included add-ons)Nothing — the slot is already held by the active subscription
Can be sold in the cart?YesNo — capacity products are subscribe-only
Counter label on the edit screenInventory countCapacity
Adjustment labelAdjust stockAdjust capacity
  • A locker rental is capacity. You have 50 lockers; 47 are rented. When a member cancels, locker #14 is now available for someone else. Renewals don’t consume anything — the member already has the locker.
  • A monthly filament box is stock. Each month the member is shipped a new box. The box is gone when delivered; the next month’s box comes from your fresh inventory.
  • A 24/7 access fob is capacity. You issue 100 fobs; 92 are out. A cancelled fob is recovered and re-issued.
  • A welcome kit is stock. Each new member receives one; the kit is consumed; you replenish.

When in doubt: if you have to physically take something off a shelf to fulfill it, it’s stock. If the member is holding a reservation against a fixed pool, it’s capacity.

Capacity utilization on the product detail page

Section titled “Capacity utilization on the product detail page”

Capacity products show a live Slots in use row on the Inventory card — for example, 47 of 50. A coloured badge surfaces utilisation pressure:

  • Green below 80% utilisation
  • Yellow warning at 80% – 89%
  • Orange warning at 90% – 94%
  • Red warning at 95% and above

Use the badge as a planning signal — at 90% it’s time to think about adding capacity, raising the price, or opening a waitlist.

The products list also tags capacity-mode rows with a small Capacity badge in the inventory column so you can scan the catalogue at a glance.

You can lower the capacity below the number of currently-active subscriptions (for example, retiring a row of lockers without evicting members). Existing subscriptions continue to run until each member cancels naturally — MakerVera never evicts a paying member. New subscriptions are blocked until the active count drops below the new ceiling.

When the last slot is taken while a member pays

Section titled “When the last slot is taken while a member pays”

Two members can start subscribing to the last free slot at the same moment. Only the first payment to complete gets the slot. For the other member, MakerVera cancels the subscription before it renews and refunds their first payment in full, on your makerspace’s payment account. That member gets an email, in their language, saying the product filled up while they were paying and that they have been refunded. Everyone in your makerspace who can manage billing gets an email too. Both the payment and its refund appear on Transactions.

If the email to your billing managers says Manual refund needed, MakerVera could not refund the payment by itself. Refund it from Transactions or from your payment provider’s dashboard. If the email also asks you to cancel the subscription, cancel it in your payment provider so the member is not charged again.

When inventory mode shipped, every product that was already tracking inventory was migrated automatically:

  • Recurring products that were tracking inventory were migrated to Capacity, with the capacity ceiling set to the current number of active subscriptions. This is a conservative floor — review and adjust as needed.
  • All other tracking products were migrated to Stock.

Review your existing tracked products after upgrading; the migration’s heuristic is correct for the common case but cannot read your intent. The mode is locked once set, so if a product was migrated to the wrong mode, archive it and create a new product with the correct mode.

Navigate to People → Memberships and click Included items on a plan’s card. The plan’s Included with this plan page lists what the plan includes every cycle, gives once as a welcome gift, or requires. Click Add item, pick a product from the searchable list, and choose What the plan does with it.

There are three choices:

The product is bundled into the member’s plan subscription and delivered every billing cycle at no additional cost. For stock products, one unit is deducted from inventory per cycle when the plan renews; failed deliveries (zero inventory at renewal) are recorded as failed fulfillments visible on the plan’s page and never block the member’s plan renewal. For capacity products, the slot is checked once on first activation and held by the active subscription thereafter — renewals do not deduct.

  • Eligible billing models: Recurring only. A one-time product in this mode is rejected.
  • Quantity per cycle: Required — how many units the member receives each billing period.
  • Price: None — the inclusion is at no additional cost on top of the plan price.

The product is granted once, on the member’s first activation of this plan. If the member cancels and re-activates the same plan the gift is not re-fulfilled. If they switch to a different plan with its own welcome gifts, those new gifts are fulfilled.

  • Eligible billing models: One-time only. A recurring product can’t be a welcome gift.
  • Inventory impact: One unit deducted at first activation. Failed grants (inventory at zero) are recorded and surfaced on the plan’s page; they do not block plan activation.

Members buy the product with the plan and can’t remove it at signup.

  • Price on this plan: Optional — leave it blank to charge the product’s own price, or enter a price for this plan only.
  • Billing interval: If the product is also an add-on on the Add-ons page, its Renews setting must match the billing the member chooses: a plan that requires a Yearly add-on can only be signed up for with annual billing, and one that requires a Monthly add-on only with monthly billing. Members are asked to pick the matching option. MakerVera also checks it when you set the plan up: requiring an add-on on a plan priced for the other billing, adding the other price to a plan that requires it, or changing a required add-on’s Renews is refused with a message naming the add-on, and nothing is saved. See Monthly and yearly don’t mix.

Removing an item from a plan does not cancel any existing subscriptions or revoke any already-granted gifts — members who have it keep it until they cancel; new members don’t get it.

If a plan has a Required purchase (or an event has a required add-on), MakerVera blocks new sign-ups for that plan or event whenever the underlying product cannot be delivered — for example, when it has been archived or suspended, or when a stock/capacity product has run out. The member sees a friendly “this signup can’t proceed because a required add-on is unavailable” message that names the affected product and the parent plan or event series; no checkout is opened with your payment provider and no payment is taken.

Included add-ons follow the same blocking rule. Because an Included product is part of the value the member pays for every billing cycle, a membership cannot be started while one of its Included products is unavailable. On the signup page the unavailable inclusion carries a Sold out badge, the Subscribe button is disabled, and a notice lists the affected product names. Restocking or resuming the product clears the block and sign-ups proceed normally. Members who are already enrolled are unaffected — a renewal cycle where inventory is at zero is recorded as a failed fulfillment and the member’s plan keeps renewing.

Welcome gifts are the exception. A welcome gift is a one-time bonus rather than core plan value, so an unavailable welcome gift does not block signup. The gift shows a Sold out badge on the signup page for transparency, the member still completes their signup, and the gift is skipped at fulfillment (recorded as a failed grant on the plan panel).

On the member-facing plan browser, unavailable add-on chips carry a reason so members can tell archived from suspended at a glance: No longer offered for archived products (permanent), Temporarily unavailable for suspended ones (may return). Newer reasons fall back to a generic Unavailable label. The reason is purely informational — the rules above for required, included, optional, and welcome-gift add-ons still apply.

Members who already enrolled before the add-on became unavailable are not affected — their existing subscriptions and registrations continue uninterrupted.

An add-on priced in a different currency than your makerspace sells in is also unavailable: it isn’t offered at signup or event registration, and a paid required one blocks new sign-ups until it can be sold. See Items that can’t be sold in your currency.

Optional add-ons (the ones a member chooses, not a plan’s required purchase) follow a different rule: if the product is unavailable at signup, the optional add-on is simply omitted from the order with a soft warning. The member’s signup still completes.

Availability is server-authoritative and re-checked at the moment of payment. If an included or required product sells out in the brief window between the member opening the signup page and confirming payment, the signup is rejected with a notice naming the products that became unavailable, and the member is asked to go back and retry rather than being charged.

The plan’s Included with this plan page shows a row per item with what the plan does with it (Included every cycle, Welcome gift, Required purchase) and, for included items and welcome gifts, a small delivery status showing how many fulfillments succeeded, failed, or are pending for the current period. Use the row’s buttons to edit, reorder or remove an item.

Open an event in the admin, switch to the Settings & Configuration tab, and scroll to the Attached add-ons section.

Only one-time products are eligible. The product picker filters out recurring products automatically; if the picker is empty after a search, double-check that the products you expect are marked One-time. Attempting to attach a recurring product to an event is also rejected at the API layer.

The configuration fields (override price, required vs optional) are unchanged. Event-level add-ons are scoped to that event only — they do not bleed across to other events the member registers for.

Members see different controls in the store depending on the product’s billing model:

Billing modelControls shownWhere the purchase happens
One-timeAdd to Cart button on the product card and product detail pageStandard cart and checkout flow
RecurringSubscribe button on the product detail page, plus an interval picker if multiple cadences are offeredA dedicated Subscribe flow that opens the subscription checkout of your makerspace’s payment provider directly — no cart step

Recurring products are not cartable. If a member somehow ends up with a recurring product in their cart (for example, from stale state after a billing-model change), the cart shows an alert explaining the situation and the checkout button is disabled until the row is removed.

Members can review their active and past recurring purchases on the Subscriptions page — see the Member Subscriptions section below.

Selecting Add-Ons During Signup and Event Registration

Section titled “Selecting Add-Ons During Signup and Event Registration”

Members can choose optional add-ons at the moment they sign up for a plan or register for an event, without a separate trip to the store:

  • During membership signup, the checkout page shows an add-on step listing the add-ons offered on the plan (on every plan, or on this plan in particular) that renew on the billing the member chose — monthly add-ons with monthly billing, yearly add-ons with annual billing — each at its own price and with tax when the add-on is taxable. Switching between monthly and annual unticks add-ons that no longer match. Archived add-ons aren’t listed. The member can toggle each on, set a quantity (capped at whatever the product’s per-member limit and remaining availability allow), and the order total updates to reflect add-ons × quantity. The same step also previews what the plan includes at no extra charge and any welcome gifts that arrive on activation. Add-ons the admin marked required are pre-selected and cannot be removed.
  • During event registration, the registration page shows an add-on step listing the event’s optional (one-time) add-ons, with the same quantity control and live total.

Each add-on shows its availability before the member commits: a “X remaining” hint when stock is running low, and a Sold out state that disables selection when none are left. Availability is always computed by the server, so two members racing for the last slot can’t both grab it. If an add-on sells out in the brief window between selection and payment, it is dropped from the order with a clear notice and the rest of the signup or registration still completes — the member is never charged for something that became unavailable.

On the member’s membership page, a what’s included section summarises the value of their current plan: products included each billing cycle, welcome gifts they’ve received, and any required add-ons on the plan with their price. This summary is read-only. Members add, remove and undo the removal of optional add-ons from the add-on list on the same page (see Adding or removing an add-on later).

Members reach their subscriptions from the store navigation: Store > Subscriptions, or directly at /store/subscriptions. The page lists:

  • Active subscriptions — currently billing. Each card shows the product name, recurring price and interval, next billing date, and a Cancel button. If the latest payment didn’t go through, the card shows Payment past due and a note that the payment will be retried automatically; the member keeps access while it’s retried and can still cancel.
  • Past subscriptions — previously cancelled or ended. Each card shows the cancellation date and final status.

Renewals, failed payments and cancellations that happen at your payment provider show up here on their own: a renewal moves the next billing date forward, a successful retry clears Payment past due, and a subscription the provider ends (for example after its retries run out) moves to the past list.

Cancellation is a single dialog with a confirmation step. After confirming, the subscription stops at the end of the current billing period (no proration) — the member retains access through the period they’ve already paid for, then the subscription enters the past list. Refunds, if any, are handled out-of-band through Admin > Orders.

Navigate to Admin > Add-on purchases (gated by view_users).

The page lists every member add-on subscription across your makerspace. Each row shows:

  • Member name and email
  • Add-on name
  • Status (Active, Past due, Cancelling, Cancelled, Expired)
  • Purchase date
  • Billing model

You can also reach a per-member view from any user’s profile — useful when reconciling a billing question.

StatusMeaning
ActiveThe subscription is currently in effect; recurring add-ons will continue to bill
Past dueThe latest payment for a standalone subscription failed. Your payment provider retries it automatically; the member keeps access meanwhile. A successful retry makes it Active again; if the retries run out, it becomes Expired. You can filter the list by this status
CancellingThe member cancelled a standalone add-on that still has paid time left; it ends at the end of the paid period and isn’t billed again
CancelledThe member or an admin cancelled. The record is preserved (not deleted) for audit and revenue history
ExpiredA time-bounded purchase that has reached its end date, or a subscription your payment provider ended (for example after failed payment retries or a cancellation made in the provider’s dashboard)

Cancellation never deletes the record — preserving it is what lets historical revenue reporting stay accurate.

Plan-included recurring inventory and welcome gifts are tracked individually. On the plan’s Included with this plan page, each Included every cycle or Welcome gift row exposes a per-cycle (or one-shot) fulfillment list:

  • Succeeded — inventory was deducted and the member received the unit(s)
  • Failed — inventory was at zero at renewal / activation; the unit was not granted. The member’s plan renewal or activation still completed; this row is the audit trail
  • Pending — the cycle has not yet hit its renewal hook (visible briefly on first attachment)

Failed fulfillments are the signal to top up inventory before the next billing cycle.

Navigate to Admin > Store > Add-on revenue (gated by manage_store).

Pick a date range and click Apply. The page shows:

  • One-time revenue — sum of revenue from one-time add-on transactions in the range
  • Recurring revenue — sum of revenue from recurring add-on renewals in the range
  • Total purchases — number of add-on transactions in the range
  • A per-add-on table with revenue, purchase count, and billing model

Revenue is sourced from the transactions ledger, not from subscription records. That means:

  • A cancelled subscription still contributes its historical revenue
  • A failed payment doesn’t count as revenue
  • A refund (when implemented) would net out

The maximum supported date range is 366 days. The page mirrors this constraint client-side, so the Apply button disables and explains the limit if you pick a wider range. End date must be on or after start date.

Currency in the report is USD by default; per-makerspace currency handling is on the roadmap.

PermissionWhat it gates
manage_storeCreate / edit / archive products; view revenue summary; dismiss the backfill notice
manage_membershipsThe Add-ons page (create, edit, archive and restore membership add-ons) and each plan’s included items
edit_eventsAttach one-time products to events
view_usersView the cross-makerspace member add-on purchases page, the per-member purchases tab, and plan fulfillment detail

Most makerspace admins should have all four. Staff with view_users only can audit purchases and fulfillments without being able to change pricing or attachments.