SEO & CRO Audit
Changelog
Every change made to baliprofond.com -- tracked, dated, and linked to the evidence that motivated it.
KPI Baselines YTD 2026-01-01 -- 2026-10-30
Phase 0 -- Audit & Quick Wins
32/32- P0-01
Hreflang plugin deactivated
Site is French-only. Plugin had zero language URL mappings -- was doing nothing.
- P0-02
WP core sitemap disabled via add_filter in functions.php
LiteSpeed cache was still serving stale sitemap -- cache purge required.
- P0-03
Gilis circuit title updated
- P0-04
Testimonial CPT set to non-public
Empty archive was triggering a soft 404.
- P0-05
Hotel CPT excluded from search results via Yoast
26 thin-content hotel pages (raw titles like "Ubud", "Ubud2") removed from index.
- P0-06
Tag archives noindexed via Yoast
noindex-tax-post_tag=1. 21 thin tag archives including typo "florest".
- P0-07
Category archives noindexed via Yoast
noindex-tax-category=1. Parent + 8 child categories under infos-utiles were discovered but not indexed by Google.
- P0-08
Redirection plugin installed and activated
- P0-09
301 redirect: /en/ → /
Verified 200. GSC reported this as a 404 source.
- P0-10
301 redirect: /bali-voyage-agence-baliprofond/guide-francophone-bali/ → /guides-francophones-a-bali-et-notre-equipe/
Verified 200.
- P0-11
301 redirect: /destination/sumatera/ → /circuits/sumatera-du-nord-circuit-decouverte-7-jours-6-nuits/
Verified 200.
- P0-12
Duplicate bali-eternel URL -- 301 to canonical
bali-eternel-circuit-inoubliable-15j-14n was at pos 52 with 0 clicks, 7 GA4 page views wasted. Redirected to circuit-bali-15-jours-14-nuits-bali-eternel.
- P0-13
3 missing image alt texts fixed
Image IDs 7521 (Bali 15J), 2580 (Java Bali), 11083 (Sumatra Nord). All NULL in DB.
- P0-14
Image 11083 renamed UUID filename → lac-toba-sumatra-nord.jpg
- P0-15
le_programmes duplicate CPT deleted + wp rewrite flush
Legacy key conflict: both le_programmes and circuits CPTs registered post_type=circuits. Rewrite rules flushed after deletion.
- P0-16
Sitemap disable snippet moved from functions.php to WPCode
Was in parent theme functions.php -- would have been overwritten on theme update.
- P0-17
GA4 Key Events configured
Marked 5 events as Key Events: Circuit_Form_Submitted, Contactez_Nous_Form_Submitted, cta_reservez, WhatsApp, cta_contact_header. These existed but were invisible in Conversions tab.
- P0-18
GTM container rebuilt clean
4 tags: Ahrefs, WhatsApp click, Circuit_Form_Submitted, Contactez_Nous_Form_Submitted.
- P0-19
GTM form tags: Element Visibility trigger on .elementor-message-success
Replaces broken Form Submission + Element Visibility trigger combination.
- P0-20
GTM form parameters: circuit_name, circuit_id, page_path via DOM variables
- P0-21
GTM container imported to Tag Manager
Pending Preview test + Publish.
- P0-22
Yoast title + meta rewrite: all 9 circuit pages
IDs 15773, 6697, 6820, 6835, 6861, 6923, 5873, 5505, 6951. No branding suffix -- intentional.
- P0-23
TouristTrip JSON-LD schema injected on all circuits CPT via WPCode
Verified via Google Rich Results Test.
- P0-24
Destination pages: 8 title rewrites
TOFU angle applied, branding suffix removed.
- P0-25
LiteSpeed: image lazy load + featured image preload enabled
- P0-26
LiteSpeed: CSS minify + async enabled
Visual check passed.
- P0-27
LiteSpeed: JS minify + defer + delay enabled
Visual check passed.
- P0-28
LiteSpeed: HTML minify + browser cache + emoji removal + Google Fonts async + Critical CSS enabled
- P0-29
LiteSpeed: full cache purge
TTFB 0.32s post-purge.
- P0-30
Elementor: optimized assets + CSS loading enabled
- P0-31
MetaSlider excluded from lazy load, hidden on circuit pages (temporary)
LCP element was div#metaslider_8471 with loading="lazy" -- caused 4,410ms delay. Hiding slider improved mobile Performance score 39 → 63.
- P0-32
Site name updated: "BaliProfond - Circuits et Voyages" → "BaliProfond"
Branding simplification across all Yoast-generated titles.
Phase 1 -- Tracking & Crawl Health
11/15- P1-01
Fix duplicate GA4 tag
Site Kit GA4 module (GT-NNMKZ28) disconnected. Verified via live page source -- GT-NNMKZ28 absent, GTM-MQ9TP9S9 only. Clean data now flows via GTM (G-G21ELYBXNY) only.
- P1-02
GTM Preview test + Publish
Both forms tested in Preview mode. Circuit_Form_Submitted + Contactez_Nous_Form_Submitted confirmed firing. Container published.
- P1-03critical
Investigate remaining 5 x 404 errors in GSC Coverage
3 of original 8 fixed in P0. 2 x Complianz CSS {banner_id} template bug + 3 x /wp-content/* crawl artifacts -- confirm none are real content pages.
- P1-04
Verify WP sitemap returns 404 after cache purge
/wp-sitemap.xml → 301 → /sitemap_index.xml (Yoast). WP core sitemap confirmed disabled. Yoast sitemap active at correct URL.
- P1-05high
Fix LCP >4s mobile -- replace MetaSlider with static Elementor Image widget
MetaSlider hidden as temporary fix (P0-31). Permanent fix: replace with static image on circuit template. Expected mobile Performance score: 70-80+.
- P1-06
Visual QA: test contact form on mobile + desktop
Form renders and submits correctly on both devices. Success message appears as expected.
- P1-07high
Monitor 31 "discovered not indexed" pages in GSC
Hotel CPT noindex applied in P0-05. Await Google recrawl -- expect significant drop in this count.
- P1-08high
Investigate 15 "crawled not indexed" pages in GSC
Quality signal problem. Likely destination pages + thin content. Review after hotel noindex propagates.
- P1-09
Rewrite Java Bali title/meta for CTR uplift
5,764 impressions, 0.28% CTR at pos 38.57. Done as part of P0-22.
- P1-10
Rewrite Sulawesi title/meta for CTR uplift
2,779 impressions, 0.61% CTR at pos 27.6. Done as part of P0-22.
- P1-11
Verify 13 "excluded by noindex" URLs in GSC are all intentional
All 13 confirmed intentional: cookie policy, 9× blog RSS feeds, search template URL, 2× wp-*.php artifacts. No circuit or destination pages affected.
- P1-12
Audit 7 "page with redirect" entries in GSC for redirect chains
All redirects verified clean (1 hop). Found 12 source URLs with duplicates (19 extra entries). Deleted IDs 7, 22, 59, 84, 91–92, 95–98, 111–115, 117–118, 123–124. Zero duplicates remain. Live spot-check passed.
- P1-13
Fix 4 redirect errors in GSC Coverage
All 4 URLs verified resolving correctly (301→200). GSC Validation Passed 2026-08-15. URLs: kalimantan/2/, destination/sulawesi/, beaches-in-bali/, voyage-lombok (no trailing slash).
- P1-14
Check robots.txt blocked URL in GSC
robots.txt verified: 4 rules, all intentional. Blocked URL is /temoignages/* (testimonial CPT -- empty archive, intentionally blocked).
- P1-15
Audit 30 blog posts for keyword cannibalization vs circuit pages
Blog has 1,065 clicks vs 244 for circuits. No direct cannibalization on circuit queries. Key finding: blog posts dominate destination traffic (Pink Beach 13,370 impr, Gili Meno 15,865 impr) but don't link to circuits. Phase 2: add CTA internal links on top blog posts → corresponding circuit pages.
Phase 2 -- Content & CRO
2/10- P2-01high
Push "circuit bali 15 jours" from pos 12 → top 10
Intro block added: ~150 words, targets "circuit bali 15 jours" ×3, guide francophone, voyage sur mesure. Page word count +150. Awaiting Google recrawl for position movement.
- P2-02
Content depth improvement: Java Bali page
Intro block added: H2 + 4 text widgets, targets "circuit java bali 15 jours" ×2, borobudur, kawah ijen, guide francophone. Page word count ~2,168. Awaiting Google recrawl.
- P2-03medium
Content depth improvement: Sulawesi page
2,779 impressions, 0 clicks at pos 33. Similar intro block approach to P2-02.
- P2-04medium
Differentiate destination pages vs circuit pages (or consolidate)
0 /destination/* clicks in GSC. Cannibalization risk between destination and circuit content. Decision needed: consolidate or differentiate with distinct keyword angles.
- P2-05medium
Internal linking: destination pages → corresponding circuit pages
Strengthen circuit page authority by adding clear internal links from destination overview pages to specific circuit pages.
- P2-06high
CRO: improve CTA + form flow on circuit pages
Sticky mobile CTA button added (bottom:0, mobile-only). WhatsApp fallback added near form with "Si vous rencontrez des problèmes" copy. Form at 61% page depth -- monitor conversion rate in GA4.
- P2-07low
CRO: evaluate WPForms Lite for full funnel tracking
Would enable form start + abandonment tracking. Install: wp plugin install wpforms-lite --activate. Assess compatibility with Elementor Pro forms first.
- P2-08medium
Competitor benchmarking via Semrush
Run baliprofond.com + top competitors through Semrush. Needed for keyword gap analysis and to identify quick-win ranking opportunities.
- P2-09medium
Consent banner audit (French users)
France: 80 GSC clicks / 10 GA4 users -- consent rejections hiding ~70 users. Audit Complianz configuration to maximise opt-in rate without violating GDPR.
- P2-10
Blog post SEO audit + internal links to circuits
Generic CTA block added to Elementor template ID 11694 (all 30 posts). Specific circuit CTAs added to top 7 posts (654 combined clicks). All 7 links verified live.
Infrastructure
4/6- INF-01
Repo cloned: github.com/fstdo/baliprofond-changelog
Empty repository.
- INF-02
Astro project scaffolded (minimal template, TypeScript strict)
192 packages, 0 vulnerabilities.
- INF-03
Docs folder reorganised
All .md, .pdf, .docx, snippets/, REPORT GSC GA4/ moved to docs/.
- INF-04
Design + build changelog site
- INF-05high
First commit + push to remote
- INF-06medium
Deploy (Vercel / Netlify / GitHub Pages)