Your lead form is polished, copy is persuasive, but 6 out of 10 mobile visitors leave before the form loads. Not because the product is bad — the page takes 4.2 seconds to show the hero image, then a cookie banner pushes the CTA button off screen. That’s not a branding problem. That’s poor Core Web Vitals burning marketing budget.
Core Web Vitals (CWV) are three metrics Google uses to judge whether your pages are fast, responsive, and stable — page experience factors influencing organic rankings. For Indonesian businesses with mobile-dominant traffic, CWV is not vanity: slow means lost leads. Oura Works includes technical health in every Mini Audit before content strategy or GEO work.
According to Google (2024), INP replaced FID as the interaction metric — measuring the worst response across all page interactions, not just first input. In Indonesia’s mobile market, INP is often a harder bottleneck than LCP.
What are Core Web Vitals?
Core Web Vitals are three core page experience metrics Google evaluates from field data of real users (CrUX), not just lab tests:
| Metric | Measures | “Good” target (75th percentile) | |--------|----------|-----------------------------------| | LCP (Largest Contentful Paint) | Main content display speed | ≤ 2.5 seconds | | INP (Interaction to Next Paint) | Click/tap/form responsiveness | ≤ 200 ms | | CLS (Cumulative Layout Shift) | Layout “jumping” during load | ≤ 0.1 |
INP replaced FID as the interaction metric in 2024. Google evaluates based on 75th percentile field data — meaning 75% of visits must meet thresholds, not just one test from your office WiFi.
Short definition: CWV answers three user questions — “When can I read?” (LCP), “Does the button respond?” (INP), “Is the layout stable?” (CLS).
Why CWV is critical for Indonesian businesses
Factors that make it worse in the domestic market:
| Factor | CWV impact | Indonesia example | |--------|------------|-------------------| | Mobile-first traffic | LCP + INP more critical | Fashion e-commerce >75% mobile | | Variable connections | LCP sensitive | Congested 4G in Jakarta rush hour | | Heavy third-party | INP spikes | GTM + chat widget + ad pixels | | Remote hosting | High TTFB | US/EU server without Asia CDN |
Pages that “look good on office WiFi” often fail in the field — that’s what CrUX measures. A D2C cosmetics brand we audited in Tangerang had lab score 85, but field LCP 3.8 seconds because of a 1.8 MB uncompressed hero image and render-blocking fonts.
Hosting and CDN for the Indonesia market
Server location affects TTFB — the LCP foundation:
| Hosting setup | Typical TTFB to Jakarta | Recommendation | |---------------|------------------------|----------------| | US East server without CDN | 250–400 ms | CDN required | | Singapore (AWS/GCP) | 40–80 ms | Ideal for ID | | Indonesia (Biznet/DCI) | 20–50 ms | Best for TTFB | | Oversold shared hosting | 400–800 ms | Migration priority |
Asia edge CDN (Cloudflare, Bunny, AWS CloudFront) caches static assets near users. For dynamic WordPress HTML, consider full-page cache + Redis object cache. CDN cost $10–30/month often ROI-positive within one month if form abandonment drops 15%.
CWV targets to pursue
Don’t chase PageSpeed 100 on a WordPress Elementor site full of widgets — focus on field CWV good and conversion.
| Status | LCP | INP | CLS | Implication | |--------|-----|-----|-----|-------------| | Good | ≤ 2.5s | ≤ 200ms | ≤ 0.1 | Page experience safe | | Needs improvement | 2.5–4.0s | 200–500ms | 0.1–0.25 | Ranking + bounce risk | | Poor | > 4.0s | > 500ms | > 0.25 | Fix priority immediately |
Week 1 baseline checklist:
- Check PageSpeed Insights — homepage + 3 conversion pages
- Open GSC → Core Web Vitals report — note “poor” URL groups
- Identify shared templates (header, footer, font) — fix once, impact many pages
- Test on throttled 4G, not just desktop WiFi
LCP fix SOP — step by step
LCP measures when the largest element in the viewport finishes rendering — usually hero image, video, or large heading.
Common LCP failure causes:
- Large hero image without compression
- Slow server TTFB (>600 ms)
- Render-blocking CSS/JS
- Web fonts without
font-display: swap
LCP fix SOP:
| Step | Action | Owner |
|------|--------|-------|
| 1 | Identify LCP element via PSI | Dev / SEO |
| 2 | Compress to WebP/AVIF, set width/height | Dev |
| 3 | Add fetchpriority="high" on LCP image | Dev |
| 4 | Asia edge CDN + static HTML caching | DevOps |
| 5 | Inline critical CSS for above-the-fold | Dev |
| 6 | Don’t lazy load LCP image | Dev |
Example: a Semarang SME marketplace replaced a 2.1 MB PNG hero with 180 KB WebP + Cloudflare CDN — field LCP dropped from 4.1s to 2.3s in one sprint. Mobile conversion change: +19% form completion in 60 days.
For Astro/static sites like ouraworks.com: static generation + Sharp asset pipeline is already an ideal baseline. WordPress needs plugin and theme discipline — see realistic table below.
INP fix SOP — interactions that feel stuck
INP measures worst interaction response. Common causes on Indonesian sites:
- Large JavaScript bundles (heavy React hydration)
- Scroll event handlers without debounce
- Third-party scripts (GTM loading 10+ tags at once)
- Chat widget loaded in
<head>
INP fix checklist:
- Code-split — load JS per route, not one 500 KB bundle
- Audit GTM — remove unused tags, lazy load triggers for non-critical
- Defer non-critical JS — don’t defer scripts needed for early interaction
- Prefer CSS animation over JS layout thrashing
- Test on mid-range Android — Samsung A-series, not flagship
| Third-party | INP risk | Alternative | |-------------|----------|-------------| | Heatmap (Hotjar) | High | Sample 10% traffic | | Chat widget | Medium–high | Load after LCP | | Ad pixel | Medium | Server-side tagging | | A/B testing | High | Edge experiment |
CLS fix SOP — layouts that don’t “jump”
CLS measures unexpected layout shifts — user tries to click a button, banner appears and they click an ad instead.
CLS causes:
- Images without dimensions → text drops when image loads
- Cookie/ad banners injecting height after render
- Font swap changing line height
- Skeleton loaders not matching final content size
CLS fix checklist:
- Always
width+heightoraspect-ratioon media - Reserve space for ad slots, sticky bars, cookie banners
font-display: optionalor swap with metric-matched fallback- Avoid injecting content above fold after load
- Test with slow 3G — CLS often invisible on WiFi
Example: a local news portal injecting ad slots without reserved height had CLS 0.34 — users often mis-tapped ad links. After min-height on slots and below-fold lazy ad load, CLS dropped to 0.06.
CWV vs SEO vs GEO — each layer’s role
| Layer | CWV role | Without good CWV | |-------|----------|------------------| | SEO | Direct ranking signal (page experience) | Ranking cap, crawl inefficiency | | AEO | Fast pages = efficient crawl budget | Passages not optimally indexed | | GEO | Indirect — pages must be accessible & trustworthy | User bounce from AI links, trust drops |
CWV doesn’t replace answer-first content from the business SEO guide, but blocks when technical is broken. Sensible investment order: fix poor CWV first → scale content → optimize AI visibility. Layer comparison in SEO vs AEO vs GEO.
CWV audit workflow — Oura Atlas SOP
This workflow runs in Oura process and documents through Oura Atlas:
Step 1 — PSI baseline. Homepage + 3 conversion URLs (services, contact, checkout). Note LCP element and dominant third-parties.
Step 2 — GSC CWV report. Export “poor” and “needs improvement” URL groups. Prioritize templates, not URLs one by one.
Step 3 — Root cause per metric. LCP = assets/server; INP = JS/third-party; CLS = layout/font. Don’t use “speed” plugins that defer all JS — often worsens INP.
Step 4 — Deploy fix → wait 28 days. CrUX refresh needs one full cycle. Don’t panic if lab score is good but field hasn’t changed in week one.
Step 5 — Verify conversion. Track mobile bounce rate, form completion, scroll depth — good CWV without conversion uplift means bottleneck is elsewhere (copy, offer, UX flow).
| Phase | Duration | Output | |-------|----------|--------| | Audit | Week 1 | Fix priorities per metric | | Fix sprint | Weeks 2–4 | Template-level deploy | | CrUX validation | Weeks 5–8 | GSC status changes | | Loop | Monthly | Regression check via Atlas |
Realistic targets per Indonesian website type
Don’t promise “100 PageSpeed” on architecturally heavy stacks. Target achievable field CWV good:
| Site type | Realistic LCP in 90 days | Notes | |-----------|--------------------------|-------| | Static / Astro | < 2.0 s | Best case, minimal JS | | WordPress + cache | 2.0–2.8 s | Needs plugin discipline | | WordPress + heavy Elementor | 2.8–4.0 s | Needs component redesign | | React SPA without SSR | Often > 4 s | Consider hybrid/SSR |
Trade-off example: a Jakarta B2B SaaS stayed on WordPress Elementor because marketing team self-serves. Realistic target: LCP 2.6s (good), not 1.5s. Budget allocated to asset compression + CDN, not full stack rewrite — faster ROI.
Ongoing CWV monitoring
Monthly monitoring checklist:
| Check | Frequency | Tool | Action if failing | |-------|-----------|------|-------------------| | Field CWV status | Weekly | GSC CWV report | Identify regression | | Conversion page lab score | Per deploy | PageSpeed Insights | Block deploy if LCP > 3s | | Third-party audit | Monthly | GTM preview + coverage | Remove dormant tags | | Mobile conversion | Monthly | GA4 mobile segment | Correlate with CWV trend | | Asset size budget | Per upload | DevTools network | Max 200 KB mobile hero |
CWV regression most often happens after: new plugin install, marketing popup added, theme font changed, or autoplay video embedded on homepage. Policy: every front-end change needs PSI check before publish.
Example: a Medan electronics e-commerce installed exit-intent popup + heatmap in the same month. INP rose from 180ms to 340ms in 3 weeks — not because of server, but added JS. Rollback popup, INP returned to good. Without routine monitoring, marketing team assumed the problem was product copy.
Common CWV optimization mistakes
- Optimizing lab score only, ignoring CrUX — ranking uses field data
- “Speed” plugins that defer all JS — INP actually worsens
- 2MB hero images on mobile — #1 LCP killer in our audits
- Not testing on throttled 4G — false confidence from office WiFi
- Fixing per URL, not per template — not scalable
- Ignoring third-party — GTM with 15 active tags = INP guaranteed poor
When to get professional help
CWV can be done internally if dev team has access to hosting, theme, and GTM. But external help is usually needed when:
- GSC “poor” status on 50+ URLs and root cause unclear
- Poor INP despite green lab score — needs JS profiling
- Heavy WordPress + page builder needing component redesign, not more plugins
- CWV blocking business SEO and conversion at significant traffic
Oura Starter includes technical baseline including CWV audit. Oura Growth for sites with significant traffic where CWV blocks SEO + conversion — with monitoring loop via Oura Atlas.
Start with a Mini Audit — we identify whether your issue is LCP, INP, CLS, or a combination — with ROI priorities, not random plugin checklists.
References: Google — Core Web Vitals; web.dev — INP (2024); Google Search Central — Page Experience; Chrome UX Report (CrUX).