• Online Stores

Online cosmetics store: brands, composition, shades

The development of the online cosmetics store rests not on design, but on variability: one product lives in three volumes and eight shades. We put together such a store on OpenCart - shades and volumes as card options, brand pages in a separate section, filter by skin type and purpose. On July 31, 2026, we took technical indicators from three live beauty shops: from 81 product pages to 5,561 items, the first server response from 126.3 to 801.2 ms. We name the amount after the price audit — it is a guess.
See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
Beauty shops were measured
3 live catalogs, measurement 07/31/2026
after a free audit
Price
30
Guarantee

days after project sign-off

3
Beauty shops were measured

live catalogs, measurement 07/31/2026

from 81 product pages to 5,561 items
Distribution of catalogs in the sample
126.3-801.2
The first response from the server

ms on the same engine

166
Brands as a second entry into the catalog

brand pages for 3,947 products

271
What we find inside

sitemap records for 116 unique addresses

28–48
Term

working days from the approval of the TK

Who it's for

Situations where this service delivers results

Scenario 1 of 4

Price lives in Excel, and orders live in direct messages

The manager forwards the file every time, specifies the shade and branch address. The store transfers this to the checkout: the buyer chooses the shade on the card and the Nova Poshta branch from the list. Immediately about the border: integration with the carrier does not make delivery cheaper and does not save from the buyer who chose the wrong branch. It removes manual work - and turns into money only when the freed time of the manager is really redistributed somewhere.

We'll review your situation in a free audit
Cases

Tasks and results in numbers — all metrics measured by us

online store of professional cosmetics, catalog of over 5,000 items

Task
Consolidate a large assortment of professional cosmetics into one catalog with navigation by brands and types of products and with terms of payment and delivery that are understandable to the retail buyer.
Solution
Store on OpenCart: catalog by brands and types of means, free shipping from a specified amount, full prepayment on account or postpaid with a deposit, micromarking Organization and PostalAddress.
Result
5,561 products in the live catalog — counted by regular OpenCart search: 55 pages of 100 items plus 61 for the last one. TTFB 801.2ms, full load 930.7ms with 153.8KB markup, measured 07/31/2026. Found: sitemap.xml and product feed return HTTP 200 with empty body, no analytics counter on site and no carrier listed on shipping page.

wholesale store of cosmetics for the beauty industry, catalog of about 4,000 items

Task
Give professional buyers navigation by brands and categories — make-up, hair care, manicures, waxing — and quick checkout.
Solution
OpenCart with canonical sitemap declared in robots.txt. WayForPay, cash on delivery and bank account, Nova Poshta and Ukrposhta. Six JSON-LD types on main, two language versions with hreflang and switch.
Result
The canonical site map: 3,947 products, 166 brands, 47 categories, 6 information pages and the main one — a total of 4,167 addresses. TTFB 576.8 ms at 192.4 KB HTML, measured on 07/31/2026. Found: the old site map lives in parallel — 7,782 entries for 2,755 unique addresses, 2,454 of which are repeated three times, and there is not a single address of the second language version in it.

manufacturer of natural cosmetics based on beekeeping products

Task
Keep the story about the production next to the product card and do not bloat the page.
Solution
OpenCart, two language versions, LiqPay and PrivatBank card, cash on delivery, delivery by Nova Poshta, Store, Organization, ContactPoint and SearchAction markings.
Result
Fastest sampled first response 126.3ms, full load 172.4ms at 196.3KB HTML. The catalog is small: 91 pages, of which 10 are informative, i.e. 81 are product pages. Measured on 07/31/2026. Found: 271 records for 116 unique addresses in the site map, some products are duplicated 2-4 times; analytics stopped at Universal Analytics, GA4 is not in the code.
What's included

Complete list of work and what you get as a result

  • A catalog with two entrances — by type of product and by brand: the buyer for "tonic" and the buyer for a specific brand enter through different doors
  • Shades and volumes as options of one card with canonical to the main address - one page instead of a dozen almost identical
  • Filter by skin or hair type, purpose, brand and volume — by product characteristics, not by words in the description
  • Price import from CSV or XML with field mapping and price and balance update schedule: the manager does not kill the price with his hands
  • Payment: LiqPay, WayForPay, Privat24, monobank, post-payment with a deposit, cashless account for salons
  • Delivery: Nova Poshta with the choice of branch right at the checkout, Ukrposhta, courier, self-delivery - the address is no longer specified by calling
  • Technical SEO: CNC, canonical on variations, unique title, site map without repetitions
  • JSON-LD micro-markup: Store, Organization, Product, BreadcrumbList — so that the output includes price and availability if Google chooses to show them
  • Analytics: GTM, GA4, card viewing events, cart and purchases, product ID in advertising systems - otherwise there is nothing to optimize campaigns
  • Transfer: access, written instructions, passing the administration with your manager on a live order
  • Terms: 50% down payment, two rounds of edits at the design stage, warranty period of 30 calendar days
When this service isn't right

What's not included — so there are no surprises at delivery

  • Description of the composition and properties of the means — the invoice is provided by the brand or your technologist
  • Photography and retouching of swatches of shades
  • Post-launch advertising, influencer marketing and mailings
  • Filling the catalog manually beyond the agreed volume
  • Hosting, domain, acquiring
Process steps

Transparent stages with approval at every step

Total duration:28–48 days

  1. Price audit and technical task

    3-5 working days

    We count variability: how many items have shades, volumes or sets and how many pages it unfolds. Here we analyze the current site, if there is one. The output is a TK, based on which the estimate is calculated and the work is accepted.

  2. Catalog structure: types, brands, variations

    4-6 working days

    A tree of categories, a set of characteristics for the filter, the rule "option or a separate card" for each type of product, a list of filter combinations that we open in the index. We agree to the design.

  3. Design

    5-9 working days

    Home, category, shade and volume selection card, brand page, cart, checkout. Here we fix the target weight of the page: in the measured beauty stores, the layout of the main page weighs from 153.8 to 196.3 KB.

  4. Assembly of the store

    8-13 working days

    Theme layout, product catalog and options, shopping cart and checkout, admin roles, payment, delivery and return pages.

  5. Catalog import and layout of variations

    5-9 working days

    Mapping of price fields, analysis of shades and volumes into attributes, test filling, reconciliation of the number of cards using two methods, schedule of updating prices and balances.

  6. Integrations, analytics, transmission

    3-6 working days

    Payment and shipping, GTM and GA4 with cart and purchase events, JSON-LD, sitemap without duplicates, end-to-end order flow from cart to TTN, admin pass with your manager.

Free audit: we count how many pages your price will unfold

In the beauty catalog, the most expensive thing is not design, but variability. One tool lives in three volumes and eight shades — and the estimate and subsequent indexing depend on how you start it. The audit gives this figure before the start of work.

What we measure

  • Variability of the assortmentHow many items have shades, volumes or sets and how many pages they will give when expanded. In the professional cosmetics store we measured, the catalog includes 5,561 items, in the wholesale beauty store — 3,947 products and 166 brands.
  • Navigation by brandsAre there separate brand pages and do they fit into the sitemap? In the wholesale beauty catalog from our selection, 166 brand pages are a separate and working entry to the catalog.
  • Directory speedFirst server response and HTML weight. In a professional cosmetics store, we measured 801.2 ms first response with 153.8 KB of markup — the markup is light and the response is slow, and the reason is not in the design.
  • Site map and duplicatesHow many entries per unique address. In the store of natural cosmetics, we found 271 records at 116 addresses — individual products were duplicated 2-4 times.
  • Payment and post-payment rulesWhat is connected now and what are the terms of the deposit. In a niche with a high percentage of package rejections, this has a direct impact on money: in one of the measured stores, post-payment is only allowed with a deposit.
  • Analytics and advertisingAre the counters alive and are the basket events being transmitted? Cosmetics is an advertising niche, without correct events there is nothing to optimize campaigns.

What you get

  • The figure of how many pages your price will unfold, taking into account shades and volumes.
  • Document on the current site: addresses in the site map and duplicate, speed, HTML weight, payment and delivery.
  • A list of findings that should be closed before launch.
  • Conversation for 30–40 minutes on the document.

Timeline: 2-4 working days

Why is it free

Because without this number, the fork would be a fiction: the difference between a catalog with two and six thousand pages is different import terms, a different structure of filters, and different work with duplicates. Calculating is cheaper than guessing. The document is yours in any case.

What's next

After the audit - the amount and term by stages with dates, the contract, the bill and the report.

Short form: your contact and site URL

  • Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • European clients

    Among our work — projects for Norway, Bulgaria, Moldova and Spain.

  • Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

Did not find your case?

Describe how it works on your side — we will tell you whether “Development of an online cosmetics store” fits and what it means in your situation. No brief and no call: one question, one answer.

What affects the price

Why two seemingly identical tasks are priced differently

  • Variability of the assortmentThe main driver. A price for two thousand items after the deployment of shades and volumes becomes a catalog for several thousand addresses - this is a different import period, a different structure of filters and a different work with duplicates.
  • Price statusSeparate columns "brand", "volume", "shade", "article" - import is automatic. All in one text field like "Tone 03 beige, 50 ml" - the analysis is semi-automatic, and on several thousand items it is a separate line of the estimate.
  • Number of brandsEach brand is a page, a logo, a short text and a place in the sitemap. One hundred brands and six hundred is a different volume of handwork, although in the price it is one column.
  • Photos and swatchesShots on a uniform background and swatches of shades save weeks of assembly. There are no swatches - the buyer chooses at random, and there are more returns; At the same time, we do not do filming, this is a separate contractor.
  • Retail plus salonsTwo pricing logics on one catalog are buyer groups, separate multiplicity rules, and checking each combination on a live order, not a checkbox in the settings.
  • TempoThe accelerated queue comes at a premium and makes sense only when the content is ready at the start and approvals are invested in one business day. Otherwise, it doesn't get faster - it gets more expensive.
Technologies & integrations

What we build on and what it connects to

Stack

  • OpenCart 4.x is set by default, this is a branch that is being developed
  • OpenCart 3.x — when you need a module without assembly under 4.x; limit: the branch lives out its life, we update it manually
  • PHP and MySQL are the limit: variations live in product options, and for several thousand combinations, requests to the database have to be cached separately
  • nginx, HTTP/2, HTTPS + HSTS is the limit: the certificate encrypts the channel and does not make the store secure by itself
  • OCFilter or similar — filter by characteristics; border: generates combinatorial addresses that must be closed with canonicals and robots
  • Cloudflare is the limit: the cache covers page returns, but does not speed up administration and imports

Integrations

  • LiqPay
  • WayForPay
  • Privat24
  • monobank
  • postpaid with deposit
  • non-cash settlement
  • Nova Poshta
  • Ukrposhta
  • Google Tag Manager
  • GA4
  • Google Ads
  • Meta Pixel
  • Instagram Shopping
  • TikTok
  • eSputnik
  • Telegram
Your makeup store vs. Instagram showcase and marketplace trading

How this option differs from the alternative

Shades and volumesoptions in the card plus a filter by purpose and skin type
Who owns the catalogfiles and database at your disposal, download at any time
Prices for salonsgroups of buyers, the wholesale column opens after logging in
Sales commissionno, only hosting, domain and acquiring
Where does the demand come from?search, advertising and direct measures - and you have to build this stream yourself
What we need from you

We can't start without this — best to prepare in advance

  1. Price in CSV or XML with fields: brand, name, volume, shade, article number, price, balance. It shows how many pages the catalog will expand into.
  2. Photos of the means and, if available, swatches of the shades - in this niche, the swatch sells more than the description.
  3. List of characteristics for the filter: skin or hair type, purpose, volume.
  4. Your post-payment and deposit rules, if they have already been formulated.
  5. Access to hosting and domain — or consent to have hosting selected by us.
  6. One person with the right to approve the catalog structure and layouts without additional agreements.

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

Are shades and volumes separate items or options on the same card?

Let's see how the buyer is looking. The shade is chosen inside the card - we make options, one address, canonical on it. A specific shade is searched for by a separate request, and it has its article number — a separate card, but then a separate title and a separate text must be written under it. How the opposite decision without rules ends is clearly visible in the measurement of a retail underwear store: there each size and color has a separate address, the catalog has grown to 115,456 items, and out of a sample of 150 addresses on the site map, 50 have been redirected to another item - another size or another color. In cosmetics, the shade replaces the size, the mechanism is the same. Our recommendation: variations inside the card by default, separate pages - only for requests that you see in your own statistics.

We have several hundred brands - how to submit them?

Separate pages that are located in the site map and are linked from the product cards. In the wholesale beauty catalog from our perspective, the canonical card holds 3,947 products, 166 brands, 47 categories and 6 information pages — a total of 4,167 addresses. The brand there works as a second full catalog entry, not a list of logos in the footer. Fair margin: the presence of a page in the sitemap does not mean either indexing or traffic. Google writes it directly, and a brand page without its own text and without demand may well be indexed and not receive a single visit.

Will the store be fast with several thousand items?

Speed ​​depends on the setting, not the number of cards. In a 5,561-item professional cosmetics store, the main markup weighs 153.8KB — that's easy — and the first server response is 801.2ms. Nearby, in a natural cosmetics store, the page is heavier (196.3 KB), and the response is 126.3 ms. Slows down the server part and requests to the database, not the layout, and it is treated without redesign. What speed doesn't do: It doesn't make the offer more attractive. If the price is higher than the market or the item is not available, a fast site will simply give the buyer a reason to leave faster.

How not to get thousands of identical pages from filters?

Filtering by skin type, purpose, and volume generates a combinatorial number of addresses: each pair of ticks is technically a separate page. Therefore, the work includes a list of combinations that we open consciously - usually it is "brand + category" and "category + destination" - and the rest is closed by a canonical for the category and a rule in robots. Without it, you'll end up with thousands of nearly identical pages in the index, and that's a degradation, not an improvement. Separately: on a catalog with up to several hundred items, complex filtering gives little, there a clear category tree works better.

We need separate prices for salons - is that possible?

Yes, through groups of buyers: after entering, the salon sees its prices and multiples, the retail buyer - an ordinary shop window. The border here is not technical. An account on the website does not make you a supplier for a legal entity: the purchase is also based on a contract, payment deferment, availability of a personal manager according to the volume - the website closes only the first step. If your wholesale is the main volume, the frame should be built around it, and not completed on the side; then see the wholesale shop page.

What to do with postpaid and parcel rejections?

This is a commercial setting and should be fixed before launch, not after the first unclaimed parcels. In the measured store of professional cosmetics, post-payment is allowed only with a deposit, and free delivery begins with a certain amount of the order. We display such rules both in the checkout and on the payment page, so that the manager does not have to repeat them in every call. There is also a typical hole: in the same store, not a single carrier is named on the delivery page - neither Nova Poshta, nor Ukrposhta. At this stage, the buyer simply does not understand how the parcel will arrive.

How long will development take and what is stretching it?

28–48 working days from the approval of the TK. Layout: Price and TOR audit 3-5 days, catalog structure 4-6, design 5-9, assembly 8-13, import with variation layout 5-9, integration with testing and transfer 3-6. The longest stage is not assembly, but import. If the shades in the price list are in one text field, such as "Tone 03 beige, 50 ml", they have to be sorted into attributes semi-automatically, and it takes weeks for several thousand items. That is why the work begins with the analysis of the price, and not with layouts.

Analytics is just a counter, why talk about it separately?

Because traffic in cosmetics is almost always paid, and without cart and purchase events, there is nothing to optimize the campaign. Of the three measured beauty stores, one has no meter at all, the other has Universal Analytics, which has not collected data since July 2023, and GA4 is not in the code. What the meter doesn't do: It doesn't improve anything by itself, it just gives you an opportunity to see. Plus blockers, consent mode, and browser restrictions on cookies — GA4 shows a trend, not an accounting truth, and you need to consciously compare its numbers with the cash register.

Send the price - we will calculate how many pages it will expand.

In response - a figure from the catalog taking into account shades and volumes, a document on the current site and a work plan by stages with dates. If you don't need the store now, you will hear about it in the first email.

From measured cases5,561 products in the live catalog

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.