SEO & CRO Audit

Changelog

Every change made to baliprofond.com -- tracked, dated, and linked to the evidence that motivated it.

49 completed14 pending63 total items

KPI Baselines

244Organic clicksGSC
18,832Organic impressionsGSC
1.3%Avg CTR>3%GSC
24.1Avg position<15GSC
~600Real users (est.)GA4 (52% bot-filtered)
<0.1%Form conversion rate>2%GA4
Poor (>4s)LCP mobileGood (<2.5s)GSC CWV
~16Lead interactions YTDGA4 Events
63%Mobile share of clicksGSC Devices

Phase 0 -- Audit & Quick Wins

32/32
  1. P0-01

    Hreflang plugin deactivated

    Site is French-only. Plugin had zero language URL mappings -- was doing nothing.

  2. P0-02

    WP core sitemap disabled via add_filter in functions.php

    LiteSpeed cache was still serving stale sitemap -- cache purge required.

  3. P0-03

    Gilis circuit title updated

  4. P0-04

    Testimonial CPT set to non-public

    Empty archive was triggering a soft 404.

  5. P0-05

    Hotel CPT excluded from search results via Yoast

    26 thin-content hotel pages (raw titles like "Ubud", "Ubud2") removed from index.

  6. P0-06

    Tag archives noindexed via Yoast

    noindex-tax-post_tag=1. 21 thin tag archives including typo "florest".

  7. 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.

  8. P0-08

    Redirection plugin installed and activated

  9. P0-09

    301 redirect: /en/ → /

    Verified 200. GSC reported this as a 404 source.

  10. P0-10

    301 redirect: /bali-voyage-agence-baliprofond/guide-francophone-bali/ → /guides-francophones-a-bali-et-notre-equipe/

    Verified 200.

  11. P0-11

    301 redirect: /destination/sumatera/ → /circuits/sumatera-du-nord-circuit-decouverte-7-jours-6-nuits/

    Verified 200.

  12. 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.

  13. P0-13

    3 missing image alt texts fixed

    Image IDs 7521 (Bali 15J), 2580 (Java Bali), 11083 (Sumatra Nord). All NULL in DB.

  14. P0-14

    Image 11083 renamed UUID filename → lac-toba-sumatra-nord.jpg

  15. 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.

  16. P0-16

    Sitemap disable snippet moved from functions.php to WPCode

    Was in parent theme functions.php -- would have been overwritten on theme update.

  17. 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.

  18. P0-18

    GTM container rebuilt clean

    4 tags: Ahrefs, WhatsApp click, Circuit_Form_Submitted, Contactez_Nous_Form_Submitted.

  19. P0-19

    GTM form tags: Element Visibility trigger on .elementor-message-success

    Replaces broken Form Submission + Element Visibility trigger combination.

  20. P0-20

    GTM form parameters: circuit_name, circuit_id, page_path via DOM variables

  21. P0-21

    GTM container imported to Tag Manager

    Pending Preview test + Publish.

  22. P0-22

    Yoast title + meta rewrite: all 9 circuit pages

    IDs 15773, 6697, 6820, 6835, 6861, 6923, 5873, 5505, 6951. No branding suffix -- intentional.

  23. P0-23

    TouristTrip JSON-LD schema injected on all circuits CPT via WPCode

    Verified via Google Rich Results Test.

  24. P0-24

    Destination pages: 8 title rewrites

    TOFU angle applied, branding suffix removed.

  25. P0-25

    LiteSpeed: image lazy load + featured image preload enabled

  26. P0-26

    LiteSpeed: CSS minify + async enabled

    Visual check passed.

  27. P0-27

    LiteSpeed: JS minify + defer + delay enabled

    Visual check passed.

  28. P0-28

    LiteSpeed: HTML minify + browser cache + emoji removal + Google Fonts async + Critical CSS enabled

  29. P0-29

    LiteSpeed: full cache purge

    TTFB 0.32s post-purge.

  30. P0-30

    Elementor: optimized assets + CSS loading enabled

  31. 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.

  32. P0-32

    Site name updated: "BaliProfond - Circuits et Voyages" → "BaliProfond"

    Branding simplification across all Yoast-generated titles.

Phase 1 -- Tracking & Crawl Health

11/15
  1. 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.

  2. P1-02

    GTM Preview test + Publish

    Both forms tested in Preview mode. Circuit_Form_Submitted + Contactez_Nous_Form_Submitted confirmed firing. Container published.

  3. 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.

  4. 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.

  5. 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+.

  6. P1-06

    Visual QA: test contact form on mobile + desktop

    Form renders and submits correctly on both devices. Success message appears as expected.

  7. 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.

  8. P1-08high

    Investigate 15 "crawled not indexed" pages in GSC

    Quality signal problem. Likely destination pages + thin content. Review after hotel noindex propagates.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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).

  14. 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).

  15. 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
  1. 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.

  2. 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.

  3. P2-03medium

    Content depth improvement: Sulawesi page

    2,779 impressions, 0 clicks at pos 33. Similar intro block approach to P2-02.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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
  1. INF-01

    Repo cloned: github.com/fstdo/baliprofond-changelog

    Empty repository.

  2. INF-02

    Astro project scaffolded (minimal template, TypeScript strict)

    192 packages, 0 vulnerabilities.

  3. INF-03

    Docs folder reorganised

    All .md, .pdf, .docx, snippets/, REPORT GSC GA4/ moved to docs/.

  4. INF-04

    Design + build changelog site

  5. INF-05high

    First commit + push to remote

  6. INF-06medium

    Deploy (Vercel / Netlify / GitHub Pages)