axyglobal.com is a single-page lead-generation site, so it was audited as one: the funnel is Hero → Services → Cases → Reviews → Team → Audit CTA → Contact form. The 15 blocks below map to that funnel rather than to an ecommerce catalogue. The good news first: the strategic foundation here is genuinely strong. The positioning (“We are active sellers, so we know every step”) is sharp, the case studies carry real numbers, the team is named and shown, and the analytics stack (GTM, GA4, Meta Pixel, Clarity, UTM + country capture) is better instrumented than most agency sites.
The problem is that almost every one of those strengths is undermined by a small technical defect —
and the defects cluster exactly where money is made. Three findings stand out. First, the hero video is encoded in
H.265/HEVC, a codec Chrome and Firefox cannot decode on Windows or Linux; we verified in-browser that
an H.264 control video plays while this one reports a zero-pixel video track. With no poster fallback, a
large share of desktop visitors land on a blank rectangle occupying half of the first screen.
Second, the case-study “Learn More” buttons are styled opacity:0 and revealed only on
:hover — which does not exist on touch devices, so the site’s single best sales asset (detailed
Challenge / What-Was-Done breakdowns with their own CTA) is unreachable for every mobile
visitor. Third, all six legal links across the EN and RU sites return 404, including the
privacy-policy link inside the consent checkbox users must tick to submit the form.
The lead form itself is the biggest single conversion lever. It opens from a button that promises a “Free Audit” but is titled “Contact Us”, then asks — as its very first required field — how much money the visitor is ready to invest. It requires both a phone number and a messenger handle, and it never collects an email address, which means there is no nurture list, no way to deliver the promised audit document, and no email retargeting for the ~97 % who don’t convert on the first visit. On success the user gets a 1.5-second button flash and the modal closes — no confirmation, no expectations set, and no thank-you URL to use as a conversion goal.
Performance compounds all of it. Measured cold with caching disabled, the desktop page transfers 10.6 MB — including that 5.2 MB undecodable video and two team avatars shipped as 848×1000 PNGs (952 KB and 1.1 MB) to be displayed at 80×80 px. On a throttled mobile connection LCP lands at 12.3 seconds, and mobile still downloads a 1.6 MB hero image that is hidden on mobile and never rendered. Not one image on the site uses WebP or AVIF.
None of this requires a redesign. The layout, copy and proof assets are already good — they are being let down by a broken codec, an invisible button, six dead links, a mis-ordered form and an unoptimised image pipeline. Everything in this report is a fix, not a rebuild: 84 development hours in total, with the 11 Critical items — the ones standing directly between traffic and booked calls — accounting for 37 of them.
1. Re-encode the hero video to H.264 + add a poster image. Half of the first screen is currently blank for Chrome/Firefox desktop users — the single most expensive pixel-area on the site. 2. Make the case-study “Learn More” buttons always visible. One CSS rule unlocks your strongest proof content for 100 % of mobile traffic. 3. Rebuild the lead form: add an email field, move the budget question to last (or make it optional), retitle it to match the “Free Audit” promise, and add a real thank-you state. Combined, these are roughly 16 hours of work and they sit directly on the revenue path.

The header offers only “Book a Consultation”. For a B2B agency asking visitors to commit budgets of
$5k–$50k+, there is no phone number anywhere on the site (tel: links = 0) and no indication of how
fast anyone replies.
Fix: add a clickable phone or a “We reply in <2h” micro-label next to the header CTA. Prospects who want to talk now currently have no fast path.
⏱ Estimated: 1 dev hour
Verified across scroll positions: the header sits at top:12px at rest, retracts while scrolling
down, and returns instantly on scroll-up — reclaiming screen space without ever losing the CTA.
This is the correct pattern, implemented properly.
“Book a Consultation” is pinned in the header on desktop and inside the mobile menu, and 6 separate
CTAs across the page all open the same lead form with a tracked source value.
Six items, no mega-menu, no clutter. Platform links (Amazon / TikTok Shop / Shopify) jump to the Cases section and switch the relevant tab — a smart way to serve three audiences from one page.
Language toggle is visible in the header, and hreflang tags for en, ru
and x-default are correctly declared in the markup.

banner.mp4 should play — renders as an empty area.banner.mp4 is encoded as HEVC (H.265), 1920×1080, 7.8s, 5.2 MB. HEVC in MP4 is
not decodable by Chrome on Windows/Linux without an OS-level HEVC extension, and is unsupported in Firefox.
Verified directly in-browser: canPlayType('hvc1') returns empty (unsupported), the
hero video reports videoWidth: 0, while a control H.264 clip loaded on the same page decodes
normally at 320×176. The video element is therefore rendering nothing.
Net effect: roughly half of the most valuable screen area on the entire site is blank for a large share of desktop visitors — while still costing them a 5.2 MB download.
Fix: re-encode to H.264/AVC (universal) with a WebM/VP9 alternate source, target ~1.5 Mbps — roughly 1.5 MB instead of 5.2 MB.
⏱ Estimated: 4 dev hours
poster image on the hero videoThe <video> has no poster attribute. There is no fallback frame while the file
downloads, if autoplay is blocked, if the user has data-saver or reduced-motion enabled — or, as here, if the
codec cannot be decoded. A poster would have masked this bug entirely.
Fix: add poster="hero-frame.webp" so the area always shows a
meaningful image.
⏱ Estimated: 1 dev hour
The hero copy explains three visitor scenarios (don’t sell yet / already sell / Shopify audit) in one block of small text. The UVP should be readable in ~3 seconds; this needs closer to ten.
Fix: lead with one benefit line, then show the three scenarios as three short bullets or icon chips.
⏱ Estimated: 3 dev hours
“Launch & Scale Your Brand on Amazon, TikTok Shop & Shopify” names the service and all three platforms — a visitor knows what this company does instantly. Exactly one H1 on the page.
“Get Free Audit” is visible without scrolling on desktop and on mobile (measured at 489px from top in a 844px viewport). Large, high-contrast, unmistakable.
“10+ years in e-commerce · 1000+ sellers helped” sits exactly where hesitation happens — immediately below the button.
A single static hero with one message and one CTA, rather than a rotating slideshow. This is the higher-converting choice and it loads faster.


All ten cards are visually identical, so nothing signals what AXY is best at or what most clients buy. A cold visitor facing ten equal options tends to choose none — and the page gives no guidance.
Fix: promote 3 flagship services to larger cards with a “Most popular” badge, and collapse the remaining seven into a secondary row.
⏱ Estimated: 5 dev hours
Each card shows an icon and a title. There is no one-line outcome (“typically +30–40% organic traffic in 90 days”) and no “from $X” anchor, so the visitor must open a modal to learn anything — and has no way to self-qualify on budget before the form demands it.
Fix: add a result line and a starting price (or “custom quote”) to each card, plus an inline CTA inside the section.
⏱ Estimated: included above
“We Impact Specific Metrics and Increase Your Net Profit in Your Pocket” talks about the client’s money rather than the agency’s services — the right framing.
Each service opens a modal with a “What’s Included” list, a 💡 Result summary and its own CTA (“I want registration”). This is well-built, persuasive content.
Ten services spanning company registration, sourcing, PPC, creative and SMM credibly support the “full marketing cycle” claim made in the sub-headline.


The stylesheet contains:
.portfolio-case .case-details-btn { opacity: 0 } with the button revealed only by
.portfolio-case:hover.
Verified on desktop: all four Amazon case buttons measure 240×40 px at
opacity: 0 after a full scroll and settle. Verified on an emulated iPhone: the same
buttons are 292×40 at opacity: 0 with pointer-events: auto.
Touch devices have no hover state, so on mobile these buttons are permanently invisible yet still tappable — users can trigger a modal by accident, and nobody can find it on purpose. The case modals are the most persuasive content on the site (Challenge / What Was Done / “I want the same project” CTA) and they are effectively hidden from all mobile traffic — which, for TikTok and Meta ad traffic, is the majority.
Fix: show the button by default; if a hover flourish is wanted, gate it behind
@media (hover: hover) so touch devices always get the visible state.
⏱ Estimated: 2 dev hours
Cases are labelled by category — “Beauty Brand”, “Fashion Apparel”, “Kids Furniture”. With bold claims like “$100k+ in 2 days” and “ROAS 5.2x” and no brand name, logo, or client quote attached, a sceptical buyer has nothing to verify.
Fix: name the brands you have permission to name, add logos, or attach a screenshot of the Seller Central / Shopify dashboard behind each number.
⏱ Estimated: 3 dev hours
Amazon (4), TikTok Shop (3) and Shopify (3) in a clean tab system, so each traffic segment sees relevant proof. Tabs are also reachable straight from the header nav.
“Sales +400% in 6 months, ACoS 18%”, “ACoS reduced 35%, organic traffic +80%”, “1,500 sales in 4–5 months”. Real KPIs in the language sellers actually use — far stronger than generic “we grow your brand” claims.
The headline metric is overlaid on the photo, so the outcome is readable at a glance without reading body copy.
Each modal ends with a pinned “I want the same project” button that opens the lead form — the right way to turn proof into a lead. This asset just needs to be discoverable.


The social-proof section is a grid of raw Telegram chat screenshots, and the large majority are in Russian —
on the /en/ page, which targets English-speaking Amazon, TikTok Shop and Shopify sellers.
The lightbox we captured reads “Приветствую! Ещё вчера команда зап… / Супер! Отличные новости!! Спасибо!”. An English-speaking prospect gets zero persuasive value, and the mismatch signals that the page was not really built for them.
Fix: rebuild this as structured English testimonials — name, company, platform,
result and photo — using the chat screenshots only as a secondary “verified” thumbnail. Keep the
Russian originals on /ru/.
⏱ Estimated: 8 dev hours
The lightbox image is only 716×166 px at natural size, displayed centred in a 1440×900 viewport surrounded by empty black space. Even at full attention the chat text is barely legible, and several cards in the grid are clipped by the container edges.
Fix: export the source screenshots at 2× and scale them to fit the lightbox, or replace with rendered testimonial cards that stay sharp at any size.
⏱ Estimated: included above
There is no star rating, no review count, no reviewer name, company or role, and no aggregate
AggregateRating schema. Chat screenshots alone can’t carry the trust load at this stage of
the funnel.
Fix: add a headline metric (“4.9/5 from 120+ sellers”) and attribute every testimonial.
⏱ Estimated: 2 dev hours
Unedited client chats are inherently more credible than polished quote cards — “Real reviews from our working chats” is a strong, honest angle. The asset is right; only the language and presentation need fixing, which is why this is a rebuild of the section and not new proof-gathering.

Each team photo renders at 80×80 px. At that size faces are barely readable, which wastes the strongest trust asset on the page. (The same images are also the site’s worst performance offender — see Block 13.)
Fix: enlarge to 120–160 px, and make the founder’s card visually dominant.
⏱ Estimated: 3 dev hours
One node in the orbit is a generic handshake icon labelled “Partner”. Team members show a first name and role only — no LinkedIn links (except the founder’s, which is hidden, see Block 9), no certifications, no “ex-Amazon” style credibility markers.
Fix: replace the placeholder with a real partner logo and add a LinkedIn link per person.
⏱ Estimated: included above
“We Are Active Sellers, So We Know Every Step” separates AXY from consultants who have never sold anything. This differentiator deserves to be repeated in the hero.
“Founder Azat Shakurov — CEO Axy Company” with a photo. A real name attached to the promise is a meaningful trust signal in a market full of anonymous agencies.
10+ years, 1000+ sellers, and a named platform list (Amazon, Shopify, TikTok Shop, AliExpress, Ozon, Wildberries, Yandex Market) — specific rather than vague.
The count-up effect on 10+ and 1000+ makes the credibility stats the focal point of the section.

Field order is: budget → name → phone → messenger, and the budget dropdown is
required. The first thing a cold visitor is asked — right after being promised something
free — is “How much are you ready to invest in business development right now?”
This inverts the trust sequence. Visitors who don't yet know their budget, or who aren't ready to declare it, simply close the modal. Qualification is a sales-call job, not a first-touch job.
Fix: move budget to the last position and make it optional, or replace it with a softer qualifier (“What stage are you at?”). Ask for money after you've given value, not before.
⏱ Estimated: 6 dev hours (covers the full form restructure below)
The submitted payload is budget, name, phone, telegram, source, country, page, utm, language —
there is no email field anywhere on the site.
Three consequences: (1) the promised “free audit” has no natural delivery channel; (2) there is no list to nurture, so every non-converting visitor is lost permanently; (3) no email means no email-based retargeting or lookalike seeding for the Meta campaigns already running.
Fix: add email as a required field — it is the single highest-value data point you are currently discarding.
⏱ Estimated: included above
Every hero and mid-page CTA promises a Free Audit. The modal that opens is headed “Contact Us” with the sub-line “Fill out the form and we will contact you shortly”. The offer the visitor clicked for disappears at the exact moment they decide whether to complete the form.
Fix: retitle to “Get Your Free Store Audit” and list what they'll receive (e.g. “listing review + PPC check + 3 growth actions, within 48h”).
⏱ Estimated: included above
On success the submit button reads “✓ Sent!” for 1.5 seconds, then the modal closes and the user is returned to the page. There is no confirmation screen, no “we'll reply within X hours”, no next step, and no thank-you URL.
That last point also breaks measurement: with no destination page, GA4 and Google Ads have no URL-based conversion to optimise toward, and users who miss the 1.5-second flash may submit twice.
Fix: replace with a persistent success panel (or /thank-you route)
stating response time and offering an immediate next step — book a slot, or join the Telegram channel.
⏱ Estimated: 3 dev hours
phone and telegram are each marked required, so the visitor must hand
over two separate contact channels before anyone has spoken to them. For US and EU buyers especially, a
mandatory phone number is a known drop-off point.
Fix: require one contact method; offer the second as optional.
⏱ Estimated: included above
The markup is <input type="checkbox" name="privacy" required checked>. Under
GDPR, pre-ticked boxes do not constitute valid consent (CJEU Planet49, C-673/17) — and the policy it
references returns a 404 (Block 9). Since AXY collects name, phone and messenger from EU visitors, this is a
live compliance exposure and a risk flag for ad-platform review.
Fix: ship it unchecked and point the link at a working policy page.
⏱ Estimated: 1 dev hour
alert()No field declares autocomplete, so browsers cannot autofill name or phone — measurable friction,
especially on mobile. Consent validation fires a native alert('Please confirm…'), which looks
like a system error rather than part of the brand.
Fix: add autocomplete="name|tel|email" and replace the alert with
inline field-level messaging.
⏱ Estimated: 2 dev hours
Each submission captures source (which CTA was clicked), full UTM parameters and
the visitor's country via IP lookup. That's better attribution than most agency sites achieve
and makes channel ROI measurable.
Submissions are sent in parallel to Google Sheets, a Telegram notification and a webhook, with each failure caught independently — so a single outage can't silently lose a lead.
Measured on desktop (submit at 666px in a 900px viewport) and on iPhone (submit at 653px in 844px): the button is reachable without any internal scrolling, and the modal never scrolls inside itself. Six CTAs across the page all open it.

This is where the page asks for the conversion, and it contains a headline, two sentences and a button — no risk reversal, no “no obligation / no credit card”, no response-time promise, no testimonial, no face, no counter. Visitors who scrolled this far are the warmest on the site and are given the least support.
Fix: add a short reassurance row under the button (“Free · No obligation · Reply within 24h”), one client quote, and the 1000+ sellers stat.
⏱ Estimated: 4 dev hours
The central offer is repeated in six places but never itemised. A visitor cannot tell whether they'll get a 10-minute call, a PDF, or a Loom video — which makes the value impossible to weigh against handing over a phone number.
Fix: list 3–4 concrete deliverables and a turnaround time next to the CTA.
⏱ Estimated: included above
“We'll review and tell you how you can solve it yourself or with our team's help” removes the fear of a hard sell — a genuinely effective piece of copy for a cold audience.
One button, one job, no competing links to dilute the decision at the point of conversion.

The policy files exist at the domain root, but the links are written as relative paths, so from
/en/ and /ru/ they resolve to sub-paths that don't exist. Verified:
/en/privacy-policy.html → 404
/en/refund-policy-en.html → 404
/en/privacy-policy-en.html (consent-checkbox link) → 404
/ru/privacy-policy.html → 404
/ru/refund-policy.html → 404
/privacy-policy.html (actual file) → 200
Users are required to tick “I have read the privacy policy” to submit the form — and the policy is unreachable. Beyond the trust damage, Meta and Google both require an accessible privacy policy on lead-gen landing pages; broken links here put ad accounts at review risk.
Fix: change the four hrefs to root-absolute
(/privacy-policy.html). This is a ~15-minute fix and the highest trust-per-hour item in the
report.
⏱ Estimated: 1 dev hour
The footer shows © 2024 AXY Marketing — two years stale. It's a small detail that reads as
“this business may not be active any more”, directly above the contact buttons.
Fix: render the year dynamically so it never goes stale again.
⏱ Estimated: 1 dev hour
LinkedIn, Instagram and Facebook links exist in the footer markup but render at 0×0 px.
They use Lucide placeholders (<i data-lucide="instagram">) that were never converted to SVG —
window.lucide is loaded and other icons render, but these three were missed by the
createIcons() pass.
Result: an agency selling SMM and content services displays no reachable link to its own social channels — they're in the HTML but nobody can see or click them.
Fix: re-run lucide.createIcons() after all sections render, or inline
the three SVGs.
⏱ Estimated: 2 dev hours
No legal entity name, registration number or address appears anywhere, and there are zero tel:
links. For a company that sells US Company Registration as a service and asks for $10k–$50k budgets,
omitting its own corporate identity is a conspicuous trust gap for international B2B buyers.
Fix: add entity name, registered address and a phone number to the footer.
⏱ Estimated: included above
Prominent WhatsApp and Telegram buttons in the footer, plus persistent floating buttons on every scroll position. For international e-commerce buyers this is often a better fit than a web chat widget — and it means the site does have a live-contact path.
Services / Cases / Team / Audit links plus a visible account@axyglobal.com address give users a
second route to every section.
Having a refund policy at all is a positive signal for a services business — the document is written, it simply isn't linked correctly.

“$100k+ in 2 days”, “5M views”, “25,000 kits/mo”, “ROAS 5.2x”. The numbers are excellent — but nothing on the page substantiates them: no dashboard screenshots, no client names, no dates, no third-party profile (Clutch, Trustpilot, Upwork, Amazon SPN listing).
Fix: attach one piece of evidence per flagship case and link one external review profile. Strong claims without proof read as weaker than modest claims with proof.
⏱ Estimated: 2 dev hours
There is no money-back guarantee, no trial scope, no “no obligation” statement and no SLA next to any of the six CTAs — even though a refund policy document exists.
Fix: surface the refund policy as a short guarantee line near the CTAs.
⏱ Estimated: included above
The hero shows Amazon, TikTok and Shopify logos under the heading “OFFICIAL PARTNERS”. Platform logos presented as partnerships are a claim ad reviewers scrutinise; there is no partner ID, badge or directory link to back it.
Fix: link to the official partner directory listing, or relabel to “Platforms we work with”.
⏱ Estimated: included above
Named founder, photographed team, genuine client conversations and authentic product photography. The substance of trust is present — the gap is packaging and verification, not honesty.
Email, WhatsApp and Telegram let a cautious buyer start a conversation without filling in a form at all — a sensible pressure valve for high-ticket B2B.


Measured on a 390×844 viewport: 13 of 21 visible interactive elements fall under the guideline. Footer links (Services, Cases, Team, Audit, the email address, Privacy, Refund) are only ~20 px tall, and case “Learn More” buttons are 40 px.
Fix: raise link line-height/padding to a 44 px hit area. Footer links are the most-missed taps on mobile.
⏱ Estimated: 2 dev hours
Both hero media elements sit inside a hidden lg:block wrapper, so mobile visitors get a
text-only hero — no product shot, no team, no result visual — even though the assets are downloaded anyway
(see Block 12).
Fix: serve a lightweight, mobile-cropped hero image to fill the gap.
⏱ Estimated: included in Block 2
Document scroll width measures exactly 390 px against a 390 px viewport — zero sideways scroll, a common mobile defect that this site avoids.
Body text renders at 16 px with no sub-14 px paragraph text detected, so nothing requires pinch-zoom and iOS won't auto-zoom on input focus.
Full navigation, the language switcher and “Book a Consultation” are all available inside the mobile menu.
No entry interstitial or full-screen overlay interrupts the mobile visit — the floating messenger buttons stay small and unobtrusive.

Measured cold, cache disabled, on a throttled mobile connection (~1.6 Mbps / 150 ms RTT): FCP 2.3 s, LCP 12.3 s, full load 35.9 s, ~5.0 MB transferred.
Google's “good” threshold for LCP is 2.5 s. At 12 s, a large share of paid mobile clicks bounce before the page is usable — meaning ad spend is being paid for visitors who never see the offer.
Fix: the image pipeline in Block 13 is the cure — compressing and converting images alone should bring LCP under ~3 s.
⏱ Estimated: see Block 13
Network capture on an emulated iPhone shows image.png downloading in full
(1,649,432 bytes, HTTP 200) and banner.mp4 also being requested — despite both
living inside a hidden lg:block wrapper that hides them on mobile. A hidden
<img src> is still fetched by the browser.
So the slowest-connected users pay the largest bandwidth penalty for assets they are never shown.
Fix: swap the desktop-only markup for a <picture> with
media sources (or load via JS above the lg breakpoint) so mobile never requests
them.
⏱ Estimated: 2 dev hours
The phone field correctly uses type="tel", but no field sets inputmode or
autocomplete, so name and messenger fields miss autofill and optimal keyboards.
Fix: add autocomplete to every field (covered in Block 7).
⏱ Estimated: included in Block 7
Modal height 844 px in an 844 px viewport with the submit button at 653 px — fully visible with no scrolling inside the modal. Many lead forms fail exactly here; this one doesn't.
Fields use p-4 padding, giving comfortable ~60 px tap heights — well above the touch
minimum.
Cumulative Layout Shift measured 0.000 on both desktop and mobile — nothing jumps under the user's thumb while loading.
| Metric | Desktop (1440px) | Mobile (throttled) | Verdict |
|---|---|---|---|
| Time to First Byte | 401 ms | 316 ms | ✅ Good |
| First Contentful Paint | 964 ms | 2,296 ms | ⚠️ Mobile slow |
| Largest Contentful Paint | 964 ms | 12,260 ms | 🔴 Mobile critical |
| Cumulative Layout Shift | 0.000 | 0.000 | ✅ Excellent |
| Full page load | 2.4 s | 35.9 s | 🔴 Mobile critical |
| Total transferred | 10,895 KB | 5,171 KB | 🔴 Very heavy |
| Requests | 44 | 41 | ✅ Lean |
| JavaScript | 243 KB / 9 files | 243 KB / 9 files | ✅ Light |
| CSS | 19 KB | 19 KB | ✅ Light |
| Images | 5,286 KB / 25 | 4,772 KB / 22 | 🔴 Dominant cost |
The heaviest assets on a cold desktop load:
banner.mp4 — 5,211 KB (the HEVC video that can't even play)
image.png — 1,611 KB
max.png — 1,119 KB
azat.png — 952 KB
Those four files are ~8.9 MB of the 10.6 MB total. The site's HTML, CSS and JavaScript are genuinely lean — this is purely an asset-pipeline problem.
Fix: re-encode the video (Block 2) and run every image through a resize + WebP/AVIF step.
⏱ Estimated: 6 dev hours
Verified natural vs. displayed dimensions in the team section:
azat.png — natural 848×1000, displayed 80×80 (952 KB)
max.png — natural 848×1000, displayed 80×80 (1,119 KB)
ivan.jpg — natural 853×1280, displayed 80×80
Review and case images repeat the pattern — 1280 px sources rendered at 288–350 px. Correctly sized 160×160 WebP avatars would be roughly 10–15 KB each: a ~98% reduction.
Fix: generate 2× responsive variants per image and serve WebP with
srcset.
⏱ Estimated: included above
Format audit across all 51 images: 20 PNG, 29 JPG, 0 WebP, 0 AVIF. Modern formats typically cut 25–40% at identical quality before any resizing gains.
Fix: convert to WebP with JPG/PNG fallbacks.
⏱ Estimated: included above
Only 10 images use loading="lazy". Separately, all sections use
content-visibility: auto without contain-intrinsic-size — so document height grows
from 3,896 px to 5,617 px as the user scrolls, making the scrollbar jump and shrink under
them.
Fix: lazy-load everything below the fold, and declare
contain-intrinsic-size per section.
⏱ Estimated: 1 dev hour
No layout shift on either breakpoint — impressive given that 41 images ship without width/height attributes. Nothing moves under the user's cursor.
243 KB of JS across 9 files and 19 KB of CSS. No framework bloat, no tag-manager sprawl — rare and valuable. The weight problem is entirely in media, which is the easier thing to fix.
TTFB 401 ms and desktop FCP/LCP under 1 second. Hosting and delivery are not the bottleneck.
Exactly one H1, six H2s, a sensible H3 hierarchy, and only one image missing an alt attribute
across the whole page.
| Signal | Found | Verdict |
|---|---|---|
Canonical on /en/ | https://axyglobal.com/ | 🔴 Points away from itself |
Canonical on /ru/ | https://axyglobal.com/ru/ | ✅ Correct |
| hreflang | en · ru · x-default | ✅ Complete |
| Open Graph / Twitter | 7 OG + 5 Twitter tags | ✅ Complete |
| Structured data | 1 JSON-LD block | ✅ Present |
| Meta description | 141 characters | ✅ Optimal |
| robots.txt | — | ⚠️ 404 |
| sitemap.xml | — | ⚠️ 404 |
/en/ declares <link rel="canonical" href="https://axyglobal.com/"> — pointing at
the root splash page (title: “AXY Marketing”), not at itself. The Russian page gets this right and
self-canonicals correctly.
This sends Google a contradiction: hreflang nominates /en/ as the English version,
while the canonical says /en/ is a duplicate of a different URL. The usual outcome is that the
full English landing page loses ranking authority to a thin root page — suppressing exactly the organic
traffic this site is built to capture.
Fix: set the canonical to https://axyglobal.com/en/ (one line, mirrors
what /ru/ already does correctly).
⏱ Estimated: 1 dev hour
Both return 404. With only a handful of URLs this isn't fatal, but a sitemap declaring the EN and RU pages would help Google resolve the language pair correctly — especially while the canonical conflict is being fixed.
Fix: publish a minimal robots.txt plus a sitemap listing both
language versions and the policy pages.
⏱ Estimated: 1 dev hour
en, ru and x-default are all declared — the part most bilingual sites
get wrong is already right here.
7 Open Graph tags and 5 Twitter Card tags, so links shared in Telegram, WhatsApp, LinkedIn or Slack render with a proper preview — meaningful for an agency whose leads arrive via DMs.
A keyword-rich title naming all three platforms, and a 141-character description that fits the SERP snippet without truncation.
The full 149 KB page — cases, team, reviews — is present in the raw HTML for crawlers; nothing critical depends on JavaScript execution to be indexed.
A JSON-LD block ships on the page, giving search engines an explicit organisation entity to work with.
| Tool | Status | Notes |
|---|---|---|
| Google Tag Manager | ✅ Live | GTM-WR5634BL |
| Google Analytics 4 | ✅ Live | G-5CBQT3ZJFR — but receives no lead event |
| Meta Pixel | ✅ Live | 1285343753046437 + Lead event |
| Microsoft Clarity | ⚠️ Duplicated | Two projects: wqhxb45k2d + vtlc6avxzj |
| TikTok Pixel | 🔴 Missing | Not present despite TikTok Shop being a core service |
| Email platform | 🔴 None | No email is ever collected |
| UTM + country capture | ✅ Live | Stored with every submission |
On a successful submission the code fires fbq('track','Lead') and nothing else; the source
comment states the intent explicitly: “Fire conversion event to Meta Pixel only”.
So GA4 records sessions but never a lead, GTM gets no dataLayer conversion event, and Google Ads
has no conversion signal to optimise bidding against. Any Google spend is effectively flying blind, and
channel comparison in GA4 is impossible — even though UTM data is being captured perfectly at the form level.
Fix: push a generate_lead event to dataLayer alongside
the Meta call, and map it to a GA4 key event plus a Google Ads conversion.
⏱ Estimated: 3 dev hours
With no email field anywhere (Block 7), there is no list, no welcome sequence, no nurture for visitors who aren't ready today, and no audience file for email-matched retargeting or lookalikes.
Typically only ~2–3% of first-time visitors to a high-ticket B2B site convert. Right now the other ~97% leave no trace that can be marketed to again — every future touch has to be re-bought as paid traffic.
Fix: add email to the form, connect a platform (Klaviyo/Brevo/Mailchimp), and build a 3-email follow-up for anyone who requests the audit.
⏱ Estimated: 6 dev hours
Both clarity.ms/tag/wqhxb45k2d and clarity.ms/tag/vtlc6avxzj are on the page, so
every session is recorded twice into two separate dashboards — splitting heatmap data, doubling the script
cost, and making it unclear which project holds the truth.
Fix: keep one project ID and remove the other.
⏱ Estimated: 1 dev hour
TikTok Shop management is a headline service and a full tab of case studies, yet there is no TikTok pixel — so TikTok traffic can't be retargeted or optimised. There is also no exit-intent offer or lead magnet for visitors who leave without converting.
Fix: install the TikTok pixel, and add a soft exit offer (e.g. a downloadable “Amazon listing checklist”) to capture emails from non-converters.
⏱ Estimated: 5 dev hours
fbq('track','Lead', {content_name:'Main Site EN'}) fires only on confirmed success, and is
labelled per language version — clean, accurate Meta optimisation data.
Campaign parameters, the originating CTA and the visitor's country are attached to each submission, so lead quality can be traced back to campaign and geography.
Clarity gives heatmaps and recordings — the ideal tool to verify the fixes in this report. (Deduplicate the projects first.)
Google Sheets for records, Telegram for instant notification and a webhook for CRM — with independent error handling, so a single failure can't lose the lead.
The container is live, so adding GA4 and Google Ads conversion tracking is configuration work rather than a new integration.
Average dev hours and a fixed price at $40/hour. Suggested order: Critical → Medium → Low.
| Block | Task | Hours (avg) | Fixed Price |
|---|---|---|---|
| 9 | Fix 6 broken legal links (EN + RU) — relative → absolute paths | 1 | $40 |
| 2 | Re-encode hero video to H.264 + WebM, compress 5.2 MB → ~1.5 MB | 4 | $160 |
| 2 | Add hero video poster fallback image | 1 | $40 |
| 4 | Make case "Learn More" buttons always visible (touch-device fix) | 2 | $80 |
| 5 | Rebuild reviews as structured English testimonials + fix lightbox scaling | 8 | $320 |
| 7 | Form restructure: add email, reorder budget, single contact channel, retitle to match offer | 6 | $240 |
| 7 | Thank-you state + response-time expectations + conversion URL | 3 | $120 |
| 7 | Uncheck consent box by default (GDPR compliance) | 1 | $40 |
| 13 | Image pipeline: resize, WebP/AVIF conversion + srcset across 51 images | 6 | $240 |
| 12 | Stop loading desktop-only hero media on mobile (saves 1.6 MB+) | 2 | $80 |
| 15 | Send conversion events to GA4 / GTM / Google Ads | 3 | $120 |
| Subtotal — Critical | 37 hrs | $1,480 | |
| Block | Task | Hours (avg) | Fixed Price |
|---|---|---|---|
| 15 | Email platform setup + 3-email follow-up sequence | 6 | $240 |
| 3 | Service hierarchy: flagship cards, outcome lines, price anchors, inline CTA | 5 | $200 |
| 8 | Rebuild final CTA block: deliverables, risk reversal, response time, proof | 4 | $160 |
| 2 | Tighten hero sub-copy + add mobile hero visual | 3 | $120 |
| 9 | Fix invisible footer social icons + add company identity details | 2 | $80 |
| 11 | Raise 13 undersized tap targets to 44×44 px minimum | 2 | $80 |
| 7 | Add autocomplete/inputmode + replace alert() with inline validation | 2 | $80 |
| 10 | Add guarantee / risk-reversal line and evidence to flagship cases | 2 | $80 |
| 13 | Lazy-load below-fold images + contain-intrinsic-size on sections | 1 | $40 |
| 14 | Fix /en/ canonical to self-reference | 1 | $40 |
| 14 | Publish robots.txt + bilingual sitemap.xml | 1 | $40 |
| 15 | Remove duplicate Microsoft Clarity project | 1 | $40 |
| 9 | Dynamic copyright year (© 2024 → current) | 1 | $40 |
| Subtotal — Medium | 31 hrs | $1,240 | |
| Block | Task | Hours (avg) | Fixed Price |
|---|---|---|---|
| 15 | Exit-intent lead magnet to capture non-converting visitors | 4 | $160 |
| 6 | Team section: larger photos, per-member LinkedIn, replace "Partner" placeholder | 3 | $120 |
| 4 | Add client names / logos / dashboard proof to case cards | 3 | $120 |
| 7 | Modal accessibility: Escape-to-close and focus trapping | 2 | $80 |
| 5 | Aggregate rating + review count with schema markup | 2 | $80 |
| 15 | Install TikTok pixel | 1 | $40 |
| 1 | Add phone number / response-time badge to header | 1 | $40 |
| Subtotal — Low | 16 hrs | $640 | |
* Hours are averages and the price is fixed at $40/hour, for development implementation only. Content creation (testimonial translation and re-shooting, video re-cut source files, photography) and third-party subscription costs (email platform, pixels) are not included. Suggested order: Critical → Medium → Low.
The fixes in this report aren't theory — they're the same conversion levers we implement for the stores we work with. Here's the Total Sales curve from a store running our approach versus the previous period:
Total Sales over the period: $168,636 — +19% vs the prior period. Solid line = current (our approach), dotted = before.