Glossary¶
Every term we use in the system, in one place. Search the page (Ctrl-F) for what you're looking for, or use the site search above.
- Abandoned cart
- A cart that a customer added items to but didn't check out. After 24h (configurable), we automatically email the customer a recovery link. See Orders & invoices.
- Add-on
- A related product variant shown as a suggestion on a product page or in the cart. Curated per product in KCMS. Different from a bundle - add-ons are individual upsells, not pre-packaged kits.
- AI badge (Sparkles icon)
- Marker on a translated field or locale tab indicating the value was written by the auto-translate job. Saving the field by hand strips the badge and locks that row from future overwrites by the nightly cron.
- Admin user
- Someone with a KCMS login. Has a role that grants permissions. Distinct from a Customer.
- Audit log
- Append-only record of every admin write. Who did what, when, on
which resource. Kept forever. Browsable in Settings → Audit log
(needs
audit_log:readpermission). - Auto-translate job
- Backend cron that fires nightly at 03:00 server time. Walks every product, brand, campaign, CMS page, and event; finds rows that are missing a translation or whose source has changed since the last run; sends the text to DeepL; writes the result back with the AI badge. Status, history, and a "Run now" button live at Settings → Translations. See Mass email for the email-side equivalent.
- Banner
- The strip across the top of every storefront page. One at a time, dismissable for the session. See Campaigns & banners.
- Block (CMS page)
- The unit of content on a CMS page. Each block is one tab in the page editor: a slideshow, a section, or a free-form text panel. Pages stack blocks in order. Each block type has its own visual editor. Brand and device pages are the same as generic pages, they just default to a slideshow + several sections.
- Block: Feature section
- A page block with a heading, rich-text body, optional image (positioned left or right), and optional call-to-action button. Add as many as you want; the editor alternates image sides automatically.
- Block: Rich text
- A page block with free-form HTML. Use it for inline copy that doesn't fit the feature-section template.
- Block: Slideshow
- A page block with N auto-rotating images. Configure the rotation interval and per-image alt text. Sits at the top of brand and device pages by convention.
- Brand pages (dynamic header)
- The storefront header reads the BRANDS and DEVICES dropdowns
directly from the CMS pages API. Any new page with
page_type=brandorpage_type=deviceandstatus=publishedappears in the menu on the next storefront render. No deploy required. - Bundle
- A multi-item package. Two types: Mandatory (sold as a unit, "Starter kit") or Recommended (suggested cross-sell when the main product is added to cart). See Products & catalog.
- Campaign
- A time-bound offer with coupon code, discount, optional free
shipping, region scoping. May have a dedicated landing page at
/campaigns/<handle>. See Campaigns & banners. - Caddy
- The reverse proxy that fronts every public URL with HTTPS. Handles LE certs automatically. You won't touch it day-to-day.
- Categories
- Doesn't exist anymore - we dropped categories in V28 and replaced them with Collections + Brands + Devices.
- Cart
- A customer's open shopping basket. Persists across visits when the customer is logged in.
- Collection
- A theme-based grouping of products (e.g. "ASCE+", "Skin Boosters").
Has a landing page at
/collections/<handle>and an entry in the storefront's PRODUKTER menu (ifshow_in_navis on). - Coupon
- A discount code attached to a campaign. Case-insensitive.
- Credit invoice (kreditfaktura)
- A negative-amount invoice issued to reverse an original invoice (full or partial). Creates an audit trail; the original isn't edited. See Orders & invoices.
- CSV export
- Flat data dump for spreadsheets. Available for orders, customers, invoices, abandoned carts.
- Customer
- Someone with a storefront account who can place orders. Distinct from an Admin user. Has a signup region, professions, etc.
- DeepL
- The translation provider we use for the auto-translate job. Free
tier covers ~500K characters/month, which is plenty for the
catalog. Configure the API key at Settings → Translations →
DeepL configuration. Free-tier keys end in
:fxand hit api-free.deepl.com automatically. - DeepL quota gauge
- The big counter at the top of the Translations page showing "characters left this period". Goes green / amber / rose past 70% / 90% usage. Quota resets monthly on DeepL's billing date.
- Dev site
cms-dev.rmsnordic.se+dev.rmsnordic.se. A safe parallel copy of the production system with real product data but masked customer emails. Test anything risky here first.- Developer (flag)
- A boolean on a customer record. When true, the storefront shows them the region picker (so they can switch markets). Not for real customers.
- Featured product
- A product appearing in the homepage's "featured" row. Curated by admins.
- Flyway
- The database migration tool the backend uses. Forward-only; we never edit applied migrations. Devs talk about this when something fails to start up after a new release.
- Handle
- The URL-safe slug for a product / collection / brand / page. Once set, don't change - old links break.
- Internal order
- An order created by an admin on behalf of a customer (phone order, walk-in). Skips the storefront / Nets entirely. See Orders & invoices.
- Internal price list
- Per-customer variant price overrides. Used for B2B partners with negotiated pricing. See Customers & pricing.
- Invoice
- The PDF document we send for every order, regardless of payment method (card-paid orders get one too, flagged as already paid). Has a sequential number, OCR reference, due date.
- Invoice eligibility
- Whether a customer can pay by invoice. Requires BOTH the
customer-level
invoice_enabledflag AND the cart total exceeding the shop-wide invoice threshold. Settings → Settings → Invoice threshold. - JWT (JSON Web Token)
- The signed login token. Lives in an HttpOnly cookie. You don't see it; the system uses it to know who you are.
- KCMS
- The admin website you're using right now - cms.rmsnordic.se. Stands for Kavel CMS.
- Locale
- A language code (
sv,nb,da,fi,en). Supported set is locked to Swedish + the four Nordic + English. The Swedish locale is the source; the others are targets filled by the auto-translate job. Adding a sixth locale is a developer task. - Locale tab strip
- The horizontal row of language tabs at the top of the product
editor and the CMS page editor:
[ SV source | NB | DA | FI | EN ]. Switching tabs swaps every translatable field on the form to that locale's translation row. The AI badge marks any tab whose values were auto-generated. - Machine-translated
- Synonym for AI badge. A row that the auto-translate job wrote. The badge is stored as a boolean on every translation row; the cron only overwrites rows where it's still true. Saving any field by hand flips it to false.
- Mass email
- A one-off promotional email to a filtered subset of customers. Respects marketing opt-in. See Mass email.
- Membership tier
- A grouping of customers with shared pricing/perks. Out-of-the-box we have Partner and Platinum.
- MinIO
- Where uploaded files (product images, page covers, invoice PDFs)
live. You don't interact with it directly - KCMS handles uploads
and serves files via
api.rmsnordic.se/media/.... - Nets
- The card payment processor. Customers paying by card are redirected to a Nets-hosted page; we get a webhook when payment succeeds.
- OCR reference
- The 8-12 digit number with a checksum that customers type when paying an invoice via bankgiro. Generated automatically per invoice. Required by Swedish banks.
- Opt-in
- The customer's permission to receive marketing email. Recorded at signup; honoured on every mass-email send.
- Org-number lookup
- At signup, when a customer types their company's organization number, the system queries the national registry (Bolagsverket, Brønnøysund, Virk, PRH) and autofills company name + VAT number.
- Page editor
- The full-screen form at Pages → (any page) that edits one CMS page. Has a master tab for page-level metadata (handle, status, page_type, SEO) and one tab per Block. A locale tab strip at the top swaps every translatable field on every tab between the SV source and a target-locale translation.
- Per-region price
- A variant can have explicit prices for each region (SE/NO/DK/FI), in that region's currency. If a region has no explicit price, we fall back to the default price FX-converted - but we usually set explicit prices.
- Permission
- A token of the form
<resource>:<action>- e.g.products:edit,accounting:read. Roles bundle permissions. Endpoints require specific permissions. - Profession
- A self-declared customer attribute (doctor, skin therapist, nurse, dentist, clinic owner). Multi-select. Drives mass-email targeting.
- Pro-forma invoice
- A historic invoice imported from a legacy system via CSV. Doesn't generate a new PDF, doesn't send email. For accounting completeness only.
- Region
- A market - Sweden (SE), Norge (NO), Danmark (DK), Suomi (FI). Each has its own currency, locale, VAT rate, shipping rate.
- Region lock
- Once a customer signs up under a region, they can't change it (except by a developer). All their prices, shipping, currency follow that region forever.
- Resend
- The transactional email service we send through. You won't see it directly - KCMS just shows "email sent" or "email failed".
- Role
- A bundle of permissions. Each admin user has one role. Roles are configurable at Settings → Roles. The "Administrator" role is not editable (escape hatch).
- Run history (translation)
- The audit table at Settings → Translations showing one row per auto-translate run: when, what triggered it (scheduled / manual / disabled / crashed), per-entity counters (products / brands / campaigns / pages / events), characters consumed, target locales, and the DeepL quota snapshot at the end of the run. Kept forever.
- SIE-4
- The Swedish accounting interchange format. We export invoice data in this format for import into Fortnox / Visma / etc. See Accounting.
- Signup region
- The region a customer chose at signup. Locks them to that market.
- Source locale
- Swedish (
sv). The locale humans write content in. Every translatable field stores its canonical value here. The auto- translate job reads the source row and writes target-locale rows from it; the four target locales (NB / DA / FI / EN) are never sources themselves. - SKU
- Stock Keeping Unit - a unique ID per product variant. Used in accounting exports and inventory tracking.
- Stock keep
- A toggle on a variant: when on, we track its inventory level; when off, it's "always in stock" (digital goods, services).
- Target locale
- Any of
nb,da,fi,en. A locale whose rows are filled by the auto-translate job from the SV source. Saving any target- locale field by hand strips the AI badge and locks that row against future overwrites. - Token (free event)
- Credit a customer can spend to register for a paid event for free. Granted by admins.
- Translation
- A per-locale version of a piece of content (SV / NB / DA / FI / EN). Stored separately from the master record, one row per locale per resource. Empty target-locale rows fall back to the SV source on the storefront.
- Translation run
- One execution of the auto-translate job. Either the nightly cron
(
trigger=scheduled), an admin clicking "Run now" (trigger=manual), a no-op when the feature is off (trigger=disabled), or a crash record (trigger=crashed). Each run writes one row into Run history. - Variant
- A specific SKU of a product - e.g. "ASCE+ 5ml, single" vs. "ASCE+ 5ml, 6-pack". Each has its own price + stock level.
- VAT
- Value-Added Tax. 25% in Sweden, varies by region. Calculated on goods + shipping separately and shown to the customer in checkout.
- Webhook
- A backend-to-backend HTTP call we make when something happens (order created, payment received). Used to integrate with external systems. Manage subscriptions at Settings → Webhooks.
- Wishlist
- A customer's saved products (heart icon on product cards). They can convert wishlist items into cart additions on their account page.