DEV Community

Cover image for 30 CVR Improvement Checks for EC Sites — Where to Start When Sales Don't Move
toshihiro shishido
toshihiro shishido

Posted on • Originally published at revenuescope.jp

30 CVR Improvement Checks for EC Sites — Where to Start When Sales Don't Move

"Ad sessions keep coming in, but purchases are not growing." "Add-to-cart looks fine, but checkout drops off." Every EC operator hits this wall, and the answer is almost always the same one — a CVR (Conversion Rate) leak somewhere in the funnel.

CVR is a simple formula — purchasing sessions ÷ all sessions — but the levers that move it are scattered across 30+ tactics, and the order you fix them in matters more than the list itself. If you start from the bottom of the impact curve, you spend three weeks on a banner test that moves nothing.

This post organizes the most common CVR improvement levers into 6 areas × 5 items = 30 checks, sorted by impact range and engineering effort. Fix them top to bottom and you fix the ones that move revenue first.

TL;DR

  • CVR improvement levers fit into 6 areas: Tech, UX, Trust, Pricing, Cart & Checkout, Personalization. Each area has a different impact range and effort cost.
  • The order to fix them in is the top-left of an Impact × Effort 4-quadrant map: LCP, cart save, shipping disclosure, form minimization — 8 items in the high-impact × low-effort quadrant move roughly half of the available revenue.
  • Chasing CVR alone is a trap: aggressive couponing lifts CVR but drops AOV and gross margin. Watching CVR, AOV, and RPS (Revenue Per Session) together is the safer view.

The big picture — where in the funnel does CVR actually leak

CVR is one of the three components of the revenue decomposition formula:

Revenue = Sessions × CVR × AOV

If sessions stay flat and CVR moves from 1.5% to 2.0%, revenue grows by roughly 33% with zero extra ad spend. That is why CVR improvement is one of the highest-ROI levers in EC operations.

CVR itself is not a single number — it is the product of pass-through rates at each funnel stage:

  • Product Detail Page (PDP) view rate
  • Add-to-cart rate
  • Checkout initiation rate
  • Purchase completion rate

Identifying which stage is leaking — using GA4 funnel reports, or a real-time visitor feed — narrows the candidate fixes dramatically before you spend any engineering time.

Here is the full 6-area × 5-item map at a glance.

30 CVR checks across 6 areas

Tech area — speed and errors quietly bleed CVR

The Tech area is the foundation. If Core Web Vitals are broken, every UX and pricing improvement on top of it leaks into the void.

  1. LCP (Largest Contentful Paint) under 2.5s — the largest above-the-fold element (usually the hero image or product image) needs to paint fast.
  2. CLS (Cumulative Layout Shift) under 0.1 — buttons that shift during load cause misclicks and silent abandonment.
  3. 404 monitoring — old SKUs and retired URLs hit from newsletters and ad creatives drop into 404 land.
  4. Mobile layout regressions — weekly QA across iOS Safari, Android Chrome on the form and the buy button.
  5. HTTPS and mixed content — leftover http:// references in images or iframes break the lock icon.

Out of these five, the highest-leverage one is LCP improvement. The rough field heuristic among EC operators is that moving LCP from 4s to 2s lifts CVR by about 5–15%.

UX area — forms and navigation are the real abandonment drivers

If product intent is high but purchases are not landing, the leak is almost always in the UX area.

  1. Checkout form fields ≤ 8 — strip to address, name, phone, card.
  2. Guest checkout available — forcing account creation kills CVR by 20–30%.
  3. CTA button color and label — clear contrast and unambiguous labels (Add to Cart, Checkout).
  4. Search bar accuracy — handle typos and product name variants.
  5. Mobile scroll depth on PDP — the add-to-cart button needs to be visible without long scrolling.

The standout here is opening guest checkout. Effort is small, CVR impact is large. According to Baymard Institute's cart abandonment research, "had to create an account" sits in the top reasons for cart abandonment year after year.

Trust × Pricing × Cart — 15 checks that hold the "just about to buy" moment

Users with intent get pushed back at the last step by three areas — trust, pricing, and the cart/checkout flow itself.

Trust area (5 checks)

  1. Shipping cost and ETA shown up-front — discovering shipping cost only at the cart is the single most cited cart abandonment cause.
  2. Returns and refund policy reachable in 1 click from PDP.
  3. Review count and star rating displayed at the top of PDP.
  4. SSL mark and payment logos — Visa, Mastercard, PayPay, Amazon Pay logos signal accepted methods.
  5. Contact path — chat or phone number in both the footer and PDP.

Pricing & promotion area (5 checks)

  1. Compare-at price — show MSRP vs sale price, or a one-line market reference.
  2. Free-shipping threshold hint — "¥X away from free shipping" on the cart.
  3. Coupon clarity — never spring a coupon field at the last checkout step.
  4. Out-of-stock alternatives — recommend same-category items when stock is zero.
  5. Restraint on flash-sale urgency — overdone urgency actually drops CVR.

Cart & checkout area (5 checks)

  1. Persistent cart — hold cart contents for 7+ days without login.
  2. Multiple payment methods — at least 3 of card, conbini, PayPay, Amazon Pay, BNPL.
  3. Postal code auto-fill for address input.
  4. Numeric keyboard invoked for card number on mobile.
  5. Specific error messagesPlease check the card number length beats Card number is invalid.

Out of these 15, the three with the strongest cost-to-impact ratio are persistent cart × shipping disclosure × free-shipping threshold. The effort is roughly one engineering day combined, and the CVR lift typically clears single-digit percent.

Personalization — the last nudge, built into the system

The final push toward conversion comes from showing each visitor something different based on their context.

  1. PDP recommendations based on browsing history.
  2. Cart abandonment recovery email within 24 hours, one message.
  3. Exit-intent popup — trigger free-shipping messaging when the mouse moves toward the browser chrome.
  4. Loyalty perks surfaced to returning visitors.
  5. Live chat triggered right before exit.

Now that all 30 items are on the table, the impact range × effort 4-quadrant map below shows where to start. The 8 items in the top-left (high impact × low effort) move roughly half of the available revenue first.

CVR improvement: Impact × Effort 4-quadrant map (1-30 numbered)

After all 30 checks are addressed, the CVR ceiling on the site itself starts to show.

The "CVR-only" trap, and watching revenue instead

Going through all 30 checks will lift CVR — but the revenue lift tends to come in smaller than expected. The reason is that some CVR-lifting moves quietly drop AOV.

A "20% off site-wide coupon" lifts CVR in the moment, but AOV and gross margin drop in parallel. Plugging it back into Revenue = Sessions × CVR × AOV, revenue moves up slightly while gross profit goes down. CVR is a great metric to chase, but only when watched alongside AOV.

I'm building a tool called RevenueScope that watches CVR, AOV, and RPS (Revenue Per Session) on one screen, broken down by channel. GA4 measures the traffic side beautifully but requires hopping across reports to get to CVR — RevenueScope approaches it from the revenue side first and reads back to the channel, so the impact of each of these 30 checks shows up as "which channel moved how much in revenue" instead of "which page moved in CVR alone".

"Fix all 30 CVR checks" is step one. Step two — verifying that the fixes moved revenue, not just CVR — is the part that protects you from the coupon trap.


Related posts on the same series:

References

  1. Google Web.dev — Core Web Vitals (May 2026)
  2. Baymard Institute — 46 Cart Abandonment Rate Statistics 2024 (2024)

What is the one check on your own site you have been postponing the longest? Mine was guest checkout for too long. Curious whether the Tech-first ordering (LCP before everything else) matches what other operators are seeing, or if you start from UX/forms — drop a note below.

Top comments (0)