Catalog, menu, and navigation. We reworked the catalog structure and built a new multi-level category and subcategory menu with the correct item order and images. The catalog here isn't built from simple categories but from sets of filters, so any structural change required careful cross-checking — to make sure, for example, that the "Wedding & Engagement" section didn't start showing chains and bracelets. We added a three-items-per-row grid view, pinned the cart and contact info in the header, and reworked the footer and contact block.
Filtering system. The store filters products by price, gemstones, metal, purity, gender, and item type simultaneously, and in the inherited code this mechanic had bugs: the price filter would pull in items above the selected range, the gemstone filter could return the wrong stone, and sorting would break the sidebar filters. We cleaned these defects up in stages, aligned the filter pricing with what's shown on archive pages, and stabilized the dropdown menu, which used to "stick" when a section was reopened.
Product pages and pricing. We cleaned up the product page layout — spacing, font readability, overlapping buttons and text. We also dug into the price-calculation logic, which factors in discounts and add-on costs for product options, and found a long-standing logic bug that meant discounts weren't applying to products with options, producing zero or incorrect prices on the site. At the client's request, we implemented a "fake" marketing discount mechanic — a struck-through "old" price shown next to the current one, editable by the admin.
Technical SEO. Working alongside the client's SEO specialist, we set up robots.txt, fixed the lang attribute for multilingual pages, implemented schema.org markup for products and pages, added alt attributes to images, and embedded Google Search Console verification. The biggest task was cleaning up broken pages: a scan turned up 518 URLs returning 404s, and by tracing the root causes back to the templates — canonical tags in the head, pagination logic — we brought that number down to zero.
1C integration. The most complex part of the project: products, prices, metals, and images sync from 1C automatically once an hour, and when the sync started failing — new products stopped appearing on the site, the price of gold per gram stopped updating — we had to trace the problem literally line by line through the server's JSON responses. We brought in a dedicated Yii specialist and worked closely with the client's 1C developer to dig into the exchange logic: it turned out the sync was failing because of metals with no matching GUID in the site's database, and required fields coming through empty for steel and ceramic items. We fixed the handling of these cases, sorted out the image upload mechanics over FTP, and added logging for all import errors so future issues would be caught immediately — the mass 404 errors that had been generated by these bad syncs disappeared once the exchange was stabilized.
Cart, orders, and email. We restored delivery of new-order emails — the root cause turned out to be SendGrid repeatedly flagging the store's mailbox as blocked, which we identified and cleared. We implemented phone number validation in the cart with masks for Ukrainian and Russian numbers, so incorrect contact details wouldn't slip through during ad campaigns.
Analytics, hosting, and other fixes. We separated Google Tag Manager and Google Analytics, connected Search Console, installed Facebook Pixel, and removed conflicting tracking scripts. We connected the Replain live chat with Telegram notifications. On the infrastructure side, we fixed a memory overflow issue when displaying all 2,300 products in the admin panel and recommended increasing the server's RAM.
Outcome for the client. From a scattered collection of bugs and unreliable mechanics, the store reached a predictable, manageable state: the catalog and filters work correctly, prices calculate accurately, the 1C sync is stable, and the client can confidently run ads and grow sales without worrying the site will fail at a critical moment.


The product grid, sidebar filtering by price, metal, and gemstones, and the product pages were all adapted for a smooth browsing and buying experience on both desktop and mobile — where most jewelry shoppers actually come from.