Practice, not advice
Breakdowns of things we measured ourselves on live sites: technical SEO, development, integrations and ads. No promises of rankings or percentages.
Breakdowns of things we measured ourselves on live sites: technical SEO, development, integrations and ads. No promises of rankings or percentages.
Found 51 articles
On 21 September 2026, a type check on our site reported 154 errors, even though the build had been green every time: the check's result was simply thrown away. Inside, we found zeros in link statistics and in the analytics export, sorting that didn't sort, and tests that never ran. Here is how we worked through them, what we changed, and how to check your own project.
On 22 September 2026 we checked the HTTPS certificates on 116 sites we had already measured for market studies, and for 104 of them we compared the state with August. All 116 passed verification, 108 run on 89- and 90-day free certificates, and only one site's certificate has still not renewed, even though with typical settings it should have by now. We walk through the measurements and the limits of the method, and show how to check your own site with a single command.
On 21 September 2026, the first day of per-route request tracking, the internal /api/health endpoint received 13,666 requests, 60% of application traffic, and every one of them hit the shared database. Here are the two settings that fixed it, what they cost us, and how to check your own healthcheck.
On 5 September 2026 we opened Grafana to check four alert rules our documentation had promised since 17 January. There were zero rules there, the metrics beneath them were empty, and the delivery channel was a placeholder. Here is what we put in their place, and how to check your own monitoring in half an hour.
On 5 September 2026 we took our own site's response apart line by line and found five things that shipped to every visitor's browser although nobody used them. On 13 September a sixth turned up. Here are the bytes before and after, a lesson about characters versus bytes, and five checks for your own site.
On 17 September 2026 we recounted in the web archive what losing our own store along with its domain looked like from the outside: 2,378 captures of the home page in March 2022, the first 301 on the first of April, the last capture of our content on 18 May. We show what the archive restores and what it does not.
On 15 September 2026 we externally measured 43 stores on Prom, Horoshop and OpenCart. Along the way we found two measurement traps: a HEAD request that made Prom look the fastest, and a check page that 21 of 22 Horoshop stores serve to a client without a browser.
On 16 August 2026 our site responded in 3.05 s, while neighbors on the same server responded in 0.2–0.3 s. The culprit was a mega menu query that pulled 4.3 MB of translations on every page. We break it down along with three similar cases, and show how to find the same thing on your own site.
On 21 July 2026 we added to kvednace.com.ua a table of verdicts on “can this KVED code be used under the single tax”, compiled by AI agents. 57 minutes later we committed fixes from an independent audit: seven codes were missing from the table, and the service showed them as allowed. Why a gap looked like a verified answer.
On 7–8 August 2026 we externally measured Ukrainian websites in 19 niches. Russian appears in hreflang on 60 of the 97 homepages we could read, and on 24 of 34 among stores. We break down the codes, the spread across niches, what a second language does to the sitemap, and how to check your own site.
From 2 August to 3 September 2026, our IndexNow script submitted six sitemap file URLs to Bing instead of pages, and every submission came back “successful”. We break down why the 200 code proved nothing and how to check in 15 minutes what exactly your module submits.
The old KVED 47.91 for Internet retail has 32 counterparts in NACE 2.1-UA, and the new code with the same number means intermediation. We break down the codes by product group and show how to match your assortment against the descriptions.
On 17 August 2026 we went through every form on our own website to the end and found two subsystems that were not working: webhooks failed on every submission, and the confirmation email was not being sent. We break down why nobody saw it and how to check your own form in 15 minutes.
On 17.08.2026 an audit showed a CLS of 0.2283 on our website’s desktop homepage. The cause turned out to be the font: the ch unit in a paragraph and a skewed decorative band. We break down which tips measurably did not help, what got us to 0.0056 and how to check your own site.
The sitemap is either empty, bloated with duplicates 3–4 times over, or points to only one of two language versions. We checked dozens of Ukrainian online stores and collected the typical defects with concrete numbers — from a 0-byte file to 33% of URLs leading to the wrong product.
The site has two language versions, the switcher works, hreflang is declared — and yet the search engine sees only one language. We break down five real configurations where the language markup is formally there but works against the site.
On 7–8 August 2026 we externally measured 102 Ukrainian websites in 19 niches, from fitness to jewelry stores, and repeated the measurement on 17 September 2026. 80% have no breadcrumb markup on the homepage, 54% have none anywhere, and 34% have no structured data at all. We break down the figures by niche.
Meta Pixel is present on 40% of the sites that answered, the Google Ads tag on 15%, and 8% have no counter at all on the homepage. We break down what this means for an owner who pays for advertising.
Restaurants, clinics, beauty salons and fitness clubs live on people nearby finding them in search. We measured 99 sites in 19 niches — 77% have no markup with address and opening hours. In service niches, where it is needed most, the picture is even worse.
On 17 August 2026 we loaded LEO Chat with 300 requests per second and forcibly killed the engine, the message queue and the cache in the middle of the test. Here is what we checked, why it is not the same as production traffic, and what the result showed.
A typical store engine keeps a product's price as a single number. The moment a second warehouse with its own purchase price appears, or a wholesale tier for a regular client, that model breaks. Here is why, and what we had to compute inside the core of our own LiteShop engine.
Four ways to fill catalogue descriptions — and none is best in general. What each does well, where its limit sits, and how to choose for your catalogue size.
A measurement of 21 public feeds on 8 September 2026, 89,718 products: 19,674 of them (22%) carry a description identical, word for word, to another product in the same feed. How to check your own.
A measurement of 21 public feeds on 8 September 2026: name_ua and description_ua appear in five feeds out of 21, keywords in one. What these fields are and how to fill them at scale.
ChatGPT, Perplexity and AI Overviews return an answer as running text, not a list of links. Here is what makes a product description fit to be quoted — and what that does not guarantee.
How the LEO Chat bot finds a city and a branch in the Nova Poshta directory, creates the waybill and returns statuses to the same conversation. The mechanism, requirements and limits.
Thousands of products carrying the supplier's description, and the same text sitting in dozens of competitors. Here is how a bulk AI rewrite works and what it does not do.
We built LEO Chat as a bot that not only answers but also shows which scenario a paid order came after. Here is the mechanism, its limit and our own measurements.
The seller's cabinet says «N of M uploaded», the validator awards a hundred points, and it is unclear what is wrong. A run of 21 third-party feeds and 88,991 products on 5 September 2026: the structure is almost always intact, yet one feed breaks none of Rozetka's mandatory elements.
Our daily impressions in August swung from 55 to 579, while the weekly totals rose steadily: 421 → 858 → 2,127 → 2,250. A breakdown of our own data and the five-step method we use to separate movement in search from a fault on the site.
A checkout with a free-text address field works as long as the manager phones every buyer and creates the waybill in the carrier's cabinet himself. A breakdown of what a working integration looks like through the buyer's eyes and the manager's, what breaks most often, and how to check your own checkout in two minutes.
A wholesale store looks like a retail one with different prices, yet it diverges in six places: customer groups, pack multiplicity, list ordering, invoices, exchange with the accounting system and catalogue picking. Plus what measuring seven wholesale catalogues on 31 July 2026 showed.
«How long does it take» is a separate question on 162 of our service pages. The public ranges in working days: an OpenCart store 25–45, a landing page 7–18, wholesale 30–55. Seven stages of a store project, why the lower bound is rarely reached, and what stretches the timeline.
The question «how much does a store cost» is a question about scope. On 31 July 2026 we took technical readings from 24 live shops on a single engine: catalogues from 76 cards to 116,841 URLs, first server response from 126 ms to a second and a half. A breakdown of the five cost multipliers on those numbers.
On 8 August 2026 we opened the product pages of thirty live online stores and looked at them not as a shopper but as a crawler. Product markup was present in ten of them, specifications in four. A breakdown of what follows from that.
On 7 and 8 August 2026 we measured live online stores and service sites from the outside, and on 17 September 2026 we repeated the measurement: canonicals, sitemaps, structured data, first response time, PHP version. This is not a bad market — it is the baseline every new store competes against.
Search Console reports 5,226 external links and, right beside it, the five sites that produce them. A breakdown of our own profile: why link count is the worst metric, what to read instead, and how to pull the same data for free.
Our site has been in search for exactly one month. On 2 September 2026 we ran it through our own audit checklist: 5,656 impressions, 41 clicks, 562 URLs walked. A breakdown of all twelve checks, with commands you can repeat on your own site.
The crawler diligently walked hundreds of addresses the site itself had marked «do not index», and never once visited two pages from the main menu. A breakdown of our own indexing report and the checks worth running on your site.
The server supports brotli, everything is enabled in the settings, and the check reports «compression is on». Meanwhile the user's browser receives a page twice as heavy, every single time. A breakdown of our own case with before and after measurements.
Language versions can exist, carry hreflang and have a switcher — and still every internal link returns the reader to the default language. A breakdown of our own mistake, with before and after figures and a way to check your own site.
Headless is a decision about where content lives and who is responsible for displaying it. What does separation provide, what new task does it add, and when a monolithic CMS remains a smarter choice.
Three different projects are hidden behind the word "AI". We analyze the mechanisms that really work in the shop, their limits and checks that are done without a contractor - with examples from our technical measurements.
Where code generation saves time, where it fails imperceptibly, and analysis of a defect that we found in our own project during technical measurement.
TTFB, LCP, and INP are different numbers and are treated differently. Our external measurements of live sites 31/07-01/08/2026, reasons for lost seconds and commands to repeat the test yourself.
A PWA is a manifest, service worker, and HTTPS on top of your site. What's changing technically, where the bottom line is, iOS limitations, and why a non-prerendered SPA can cost you search traffic.
Tokens, components, composition — and commands in the terminal, which show whether the system is really used, or if it exists only in mockups.
Where did the figure "50% of voice searches" come from and why it will not be here. As assistant agents read the site, what our measurements showed and what checks you will do yourself in the evening.
What is the delay, what is removed from it by the distributed network, and what remains in place. Our TTFB measurements on live sites and checks done in half an hour at the terminal.
Sitemap, duplicates, speed, markup, hreflang, HTTPS, analytics. Each test comes with an example of a real defect from our measurements and a command for the terminal.
Turbopack, default fetch caching, async params, and what actually gets to the visitor. Plus four commands for checking your own project.
Where code generation saves time, where it fails imperceptibly, and analysis of a defect that we found in our own project during technical measurement.
Tokens, components, composition — and commands in the terminal, which show whether the system is really used, or if it exists only in mockups.
Turbopack, default fetch caching, async params, and what actually gets to the visitor. Plus four commands for checking your own project.