Une pharmacie en ligne, 2 594 pages indexables : des fiches produit, 207 catégories rédigées, quelques pages statiques. Le 29 juillet 2026, ce site est sorti de PrestaShop, a été reconstruit sur Laravel, et a changé de serveur. Le même jour.
Une refonte, trois variables changées en même temps, et chacune suffit à faire perdre un site. Les chiffres qui suivent sortent de la Search Console, y compris ceux qui ne sont pas flatteurs.
Si vous cherchez la méthode, étape par étape, elle est dans le guide de migration SEO d’un site e-commerce . Ce qui suit est un dossier : un seul site, une seule bascule, et ce que les courbes ont fait.
La décision qui a tout déterminé, prise avant la première ligne de code
Le plan d’URL a été gelé avant le début du développement, et conservé au caractère près, sans la modernisation d’adressage que toute refonte propose au passage.
Concrètement, l’adressage public du site est resté celui de PrestaShop. Les catégories répondent toujours sous la forme /{identifiant}-{slug}, les fiches produit sous /{rayon}/{identifiant}-{slug}.html. Un visiteur qui avait mis une fiche en favori il y a trois ans la retrouve à la même adresse. Google aussi.
C’est une contrainte lourde pour une équipe de développement. On refait le socle technique en gardant une convention d’URL héritée d’un CMS qu’on abandonne, avec ses identifiants numériques et ses extensions .html qui ne servent plus à rien. Personne ne trouve ça élégant.
Mais une migration détruit le référencement par un seul mécanisme : Google perd les adresses qu’il connaissait. Tout le reste, la technologie, le serveur, le design, lui est indifférent. Geler le plan d’URL supprime la cause à la racine, et rend inutile le plan de redirection massif qui fait tomber la plupart des refontes.
Ce que la courbe a fait le 29 juillet
Première chose à vérifier sur une courbe de migration : est-ce que ça a cassé le 29 ?
Clics quotidiens, en base 100 sur les trente jours précédents :
Date
Clics (base 100)
25 juillet
64,5
26 juillet
63,2
27 juillet
80,0
28 juillet
74,8
29 juillet, bascule
81,7
30 juillet
80,2
31 juillet
73,8
La baisse avait commencé quatre jours plus tôt, et le jour de la bascule est plus haut que les deux jours qui le précèdent. Il n’y a pas de rupture à cette date. La courbe descendait déjà, pour des raisons de calendrier.
Visibilité dans Google, en base 100</title><desc id= »bs-d »>Courbes des clics et des impressions en base 100 autour de la bascule du 29 juillet 2026. Les impressions ne repassent jamais sous 99 ; les clics creusent jusque vers 70 avant de remonter au-dessus de leur niveau de départ en septembre.</desc><rect width= »900″ height= »486″ fill= »#fdfdfc »/><text x= »0″ y= »26″ font-size= »20″ font-weight= »700″ fill= »#1a1a1a »>Visibilité dans Google, en base 100</text><text x= »0″ y= »48″ font-size= »13″ fill= »#5a5a5a »>Moyennes glissantes sur 7 jours. Base 100 = les 30 jours précédant la bascule.</text><line x1= »46″ y1= »432.0″ x2= »778″ y2= »432.0″ stroke= »#e6e6e6″ stroke-width= »1″/><text x= »37″ y= »436.0″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>60</text><line x1= »46″ y1= »377.0″ x2= »778″ y2= »377.0″ stroke= »#e6e6e6″ stroke-width= »1″/><text x= »37″ y= »381.0″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>80</text><line x1= »46″ y1= »321.9″ x2= »778″ y2= »321.9″ stroke= »#b9b9b9″ stroke-width= »1″/><text x= »37″ y= »325.9″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>100</text><line x1= »46″ y1= »266.9″ x2= »778″ y2= »266.9″ stroke= »#e6e6e6″ stroke-width= »1″/><text x= »37″ y= »270.9″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>120</text><line x1= »46″ y1= »211.8″ x2= »778″ y2= »211.8″ stroke= »#e6e6e6″ stroke-width= »1″/><text x= »37″ y= »215.8″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>140</text><line x1= »46″ y1= »156.8″ x2= »778″ y2= »156.8″ stroke= »#e6e6e6″ stroke-width= »1″/><text x= »37″ y= »160.8″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>160</text><line x1= »46″ y1= »101.8″ x2= »778″ y2= »101.8″ stroke= »#e6e6e6″ stroke-width= »1″/><text x= »37″ y= »105.8″ font-size= »12″ fill= »#6a6a6a » text-anchor= »end »>180</text><text x= »155.4″ y= »454.0″ font-size= »12″ fill= »#6a6a6a » text-anchor= »middle »>1er juillet</text><text x= »416.2″ y= »454.0″ font-size= »12″ fill= »#6a6a6a » text-anchor= »middle »>1er août</text><text x= »677.0″ y= »454.0″ font-size= »12″ fill= »#6a6a6a » text-anchor= »middle »>1er sept.</text><line x1= »391.0″ y1= »84″ x2= »391.0″ y2= »432″ stroke= »#4a4a4a » stroke-width= »1.4″ stroke-dasharray= »6 4″/><text x= »399.0″ y= »100″ font-size= »12.5″ font-weight= »700″ fill= »#2f2f2f »>bascule du 29 juillet</text><path d= »M 46.0 327.7 L 54.4 332.1 L 62.8 339.3 L 71.2 344.2 L 79.7 347.2 L 88.1 348.1 L 96.5 345.3 L 104.9 342.6 L 113.3 337.3 L 121.7 331.8 L 130.1 326.6 L 138.6 322.2 L 147.0 317.0 L 155.4 317.0 L 163.8 315.9 L 172.2 314.8 L 180.6 314.2 L 189.0 311.2 L 197.4 304.3 L 205.9 303.2 L 214.3 301.8 L 222.7 301.3 L 231.1 305.4 L 239.5 313.1 L 247.9 317.5 L 256.3 325.5 L 264.8 328.8 L 273.2 330.5 L 281.6 331.8 L 290.0 331.3 L 298.4 324.9 L 306.8 326.0 L 315.2 329.4 L 323.7 333.2 L 332.1 337.1 L 340.5 340.6 L 348.9 342.3 L 357.3 342.0 L 365.7 339.8 L 374.1 334.9 L 382.6 329.9 L 391.0 324.1 L 399.4 318.1 L 407.8 312.8 L 416.2 310.9 L 424.6 306.8 L 433.0 293.6 L 441.4 290.5 L 449.9 290.3 L 458.3 289.4 L 466.7 289.2 L 475.1 287.0 L 483.5 287.8 L 491.9 296.3 L 500.3 295.8 L 508.8 299.6 L 517.2 300.2 L 525.6 296.1 L 534.0 293.3 L 542.4 291.4 L 550.8 291.9 L 559.2 290.5 L 567.7 287.0 L 576.1 287.5 L 584.5 291.9 L 592.9 293.0 L 601.3 289.4 L 609.7 283.9 L 618.1 276.2 L 626.6 267.2 L 635.0 256.4 L 643.4 241.8 L 651.8 229.5 L 660.2 211.8 L 668.6 185.4 L 677.0 166.7 L 685.4 153.2 L 693.9 143.0 L 702.3 131.8 L 710.7 124.6 L 719.1 125.2 L 727.5 139.5 L 735.9 150.2 L 744.3 155.4 L 752.8 158.5 L 761.2 162.3 L 769.6 162.6 L 778.0 157.9″ fill= »none » stroke= »#eb6834″ stroke-width= »2.4″ stroke-linejoin= »round » stroke-linecap= »round »/><path d= »M 46.0 333.2 L 54.4 335.7 L 62.8 339.8 L 71.2 345.9 L 79.7 346.7 L 88.1 348.9 L 96.5 348.1 L 104.9 345.9 L 113.3 342.6 L 121.7 343.7 L 130.1 334.9 L 138.6 330.7 L 147.0 317.2 L 155.4 309.5 L 163.8 307.9 L 172.2 302.7 L 180.6 289.4 L 189.0 290.3 L 197.4 289.4 L 205.9 295.8 L 214.3 297.7 L 222.7 301.0 L 231.1 304.9 L 239.5 320.5 L 247.9 318.1 L 256.3 318.1 L 264.8 313.7 L 273.2 313.7 L 281.6 309.0 L 290.0 304.3 L 298.4 294.7 L 306.8 297.4 L 315.2 310.4 L 323.7 327.7 L 332.1 339.3 L 340.5 351.6 L 348.9 369.3 L 357.3 383.8 L 365.7 396.2 L 374.1 394.3 L 382.6 394.6 L 391.0 393.7 L 399.4 391.8 L 407.8 389.9 L 416.2 386.6 L 424.6 382.7 L 433.0 380.5 L 441.4 376.7 L 449.9 372.8 L 458.3 370.1 L 466.7 368.7 L 475.1 373.7 L 483.5 382.2 L 491.9 386.3 L 500.3 390.2 L 508.8 397.6 L 517.2 403.4 L 525.6 403.4 L 534.0 400.1 L 542.4 395.9 L 550.8 394.6 L 559.2 392.9 L 567.7 390.4 L 576.1 389.3 L 584.5 394.0 L 592.9 392.9 L 601.3 390.4 L 609.7 388.5 L 618.1 387.4 L 626.6 380.3 L 635.0 373.4 L 643.4 361.3 L 651.8 348.6 L 660.2 334.0 L 668.6 322.5 L 677.0 308.7 L 685.4 303.8 L 693.9 296.9 L 702.3 291.6 L 710.7 287.2 L 719.1 285.9 L 727.5 285.3 L 735.9 290.5 L 744.3 287.5 L 752.8 289.2 L 761.2 287.0 L 769.6 288.1 L 778.0 286.7″ fill= »none » stroke= »#2a78d6″ stroke-width= »2.4″ stroke-linejoin= »round » stroke-linecap= »round »/><circle cx= »778.0″ cy= »157.9″ r= »4″ fill= »#eb6834″/><text x= »787.0″ y= »162.4″ font-size= »13″ font-weight= »700″ fill= »#eb6834″>Impressions</text><circle cx= »778.0″ cy= »286.7″ r= »4″ fill= »#2a78d6″/><text x= »787.0″ y= »291.2″ font-size= »13″ font-weight= »700″ fill= »#2a78d6″>Clics</text><line x1= »52″ y1= »70″ x2= »74″ y2= »70″ stroke= »#2a78d6″ stroke-width= »2.4″/><text x= »80″ y= »74″ font-size= »12.5″ fill= »#3a3a3a »>Clics</text><line x1= »136″ y1= »70″ x2= »158″ y2= »70″ stroke= »#eb6834″ stroke-width= »2.4″/><text x= »164″ y= »74″ font-size= »12.5″ fill= »#3a3a3a »>Impressions</text><text x= »0″ y= »478″ font-size= »11.5″ fill= »#7a7a7a »>Source : Google Search Console · aucune valeur absolue n’est publiée</text></svg><figcaption>Clics et impressions en base 100 (moyennes glissantes sur 7 jours). Les impressions ne repassent jamais sous leur niveau d’avant la bascule.</figcaption></figure>
<h2>Cinq semaines de creux : ce qu’elles valaient vraiment</h2>
<p>Les clics sont ensuite restés autour de 75 pendant cinq semaines. Lu seul, ce chiffre dit une chute de 25 %. Lu correctement, il dit autre chose.</p>
<p>Une pharmacie en ligne a un creux d’été. Pour le mesurer, on indexe la même fenêtre calendaire de l’année précédente sur ses propres trente jours de référence :</p>
<table>
<thead>
<tr>
<th>Fenêtre de 30 jours</th>
<th>Clics</th>
<th>Impressions</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>2026</strong>, avant la bascule</td>
<td>100</td>
<td>100</td>
</tr>
<tr>
<td><strong>2026</strong>, les 30 jours suivants</td>
<td>76,4</td>
<td>111,7</td>
</tr>
<tr>
<td><strong>2026</strong>, du 20e au 50e jour</td>
<td>97,8</td>
<td>144,1</td>
</tr>
<tr>
<td><em>2025</em>, mêmes dates (témoin)</td>
<td><em>100</em></td>
<td><em>100</em></td>
</tr>
<tr>
<td><em>2025</em>, les 30 jours suivants</td>
<td><em>82,4</em></td>
<td><em>82,5</em></td>
</tr>
<tr>
<td><em>2025</em>, du 20e au 50e jour</td>
<td><em>84,2</em></td>
<td><em>79,9</em></td>
</tr>
</tbody>
</table>
<p>L’année précédente, la même période perdait 17,6 %. Cette année elle en perd 23,6. L’écart imputable à la migration est donc de six points, et non de vingt-quatre.</p>
<p>Sans ce témoin, on aurait annoncé une chute quatre fois plus grave que la réalité, ou pire, on l’aurait attribuée à autre chose. J’exporte seize mois de Search Console avant une bascule, et pas six, pour cette raison exactement.</p>
<h2>Le signal qui dit que l’indexation a tenu</h2>
<p>Pendant que les clics perdaient vingt-cinq points, les impressions n’ont jamais bougé sous 99.</p>
<p>Moyennes hebdomadaires, base 100 : 99 la semaine de la bascule, puis 111, 108, 112, 120. Aucune semaine n’est repassée sous le niveau d’avant.</p>
<p>Google n’a donc jamais perdu les pages. Elles ont continué d’être servies dans les résultats, aussi souvent qu’avant, pendant toute la période où les clics baissaient. Ce qui a bougé, ce sont les positions : le temps que Google réévalue un site entier qui vient de changer de serveur, les pages ont glissé de quelques rangs, et un rang perdu coûte des clics sans coûter d’impressions.</p>
<p>La distinction porte tout le reste. Un site qui perd ses pages ne revient pas toujours, et quand il revient c’est en six à douze mois. Un site qui garde ses impressions et perd des rangs traverse un passage, et le passage se mesure en semaines. Sur la courbe, les deux commencent pareil. Les impressions les séparent, et je les ouvre avant tout le reste quand une bascule vient d’avoir lieu.</p>
<h2>Le lot de balises qui n’a jamais atteint la base</h2>
<p>À partir du 16 août, le chantier éditorial a démarré : plus de 2 500 titres et descriptions réécrits, catégories et fiches produit.</p>
<p>Sur un site de santé, cette réécriture obéit à une règle stricte. Le contenu réglementaire ne se touche pas. Indications, présentation, composition, utilisation, précautions d’emploi : ces zones restent exactement telles que le pharmacien les a validées. L’écriture est additive, elle se pose dans les champs libres, et l’égalité caractère à caractère des zones protégées se vérifie avant et après chaque enregistrement.</p>
<p>Cette vérification a rendu un service qu’on n’attendait pas.</p>
<p>Le 19 août, 428 mises à jour de balises ont été postées. Le serveur a répondu 200 aux 428, et aucune n’a été écrite en base.</p>
<p>Le back-office refusait silencieusement l’enregistrement dès qu’un champ requis partait vide, en renvoyant un code de succès et le formulaire re-rendu. Rien, dans la réponse, ne distinguait ce cas d’un enregistrement réussi. Neuf jours plus tard, une relecture en base montrait que le champ concerné était encore vide sur la quasi-totalité du périmètre traité, 1 548 fiches sur 1 569.</p>
<p>Faute de relecture systématique, le lot entier partait à la poubelle sans un message d’erreur, et personne ne l’aurait su avant des mois. D’où le protocole : 1 567 fiches recontrôlées une par une, en comparant ce qui est posté à ce que renvoie le panneau relu juste après.</p>
<p>Le maillage interne a été repris dans le même mouvement, avec deux points d’appui : une cinquantaine de liens internes vers le bloc de conseil signé du pharmacien titulaire, et 27 liens entrants sur la page du service à plus forte marge.</p>
<h2>Les correctifs techniques, et ce que je ne vous dirai pas</h2>
<p>Une note de sept demandes a été remise au client le 28 août, après relevé en direct sur la production. La plus urgente concernait un balisage d’avis fabriqué.</p>
<p>Le gabarit produit servait, sur l’ensemble du catalogue, un bloc de données structurées annonçant une note de 4 sur 5 fondée sur dix avis. Ces dix avis n’existaient pas, et aucun avis n’était affiché sur les pages. Google acceptait le balisage et affichait les étoiles dans ses résultats, sur la surface qui apporte 47 % des clics du site.</p>
<p>Les règles de Google sur les extraits d’avis interdisent les avis non recueillis auprès de clients réels. La sanction correspondante est une action manuelle qui retire les extraits enrichis de l’ensemble du domaine, d’un seul coup, sans avertissement progressif. Le balisage a été retiré dans la semaine.</p>
<p>Trois des sept demandes sont passées en production, par vagues, sur trois semaines. Les quatre autres attendent, dont le fichier sitemap, toujours absent sur un catalogue dont l’essentiel n’est atteignable que par une pagination de plusieurs dizaines de pages.</p>
<p>Et c’est ici que je m’arrête sur l’attribution. Trois vagues de correctifs étalées sur trois semaines, un chantier éditorial de 2 500 balises en cours de découverte par Google pendant ce temps, et aucun sitemap pour accélérer quoi que ce soit : ces trois causes se superposent exactement sur la même période. La courbe monte de façon continue, sans marche d’escalier ni discontinuité qui permettrait d’en isoler une.</p>
<p>Je peux donc vous dire ce que nous avons fait et ce que le site a fait. Je ne peux pas vous dire quelle part revient à quoi, et je ne vais pas l’inventer. Une agence qui vous annonce « notre correctif X a produit Y % » sur un chantier mené en parallèle vous vend une décomposition que la donnée ne permet pas.</p>
<h2>Où en est le site</h2>
<p>Au 16 septembre, sept semaines après la bascule :</p>
<table>
<thead>
<tr>
<th>Indicateur</th>
<th>Avant la bascule</th>
<th>Au creux</th>
<th>Mi-septembre</th>
</tr>
</thead>
<tbody>
<tr>
<td>Clics (base 100)</td>
<td>100</td>
<td>74</td>
<td>118</td>
</tr>
<tr>
<td>Impressions (base 100)</td>
<td>100</td>
<td>99</td>
<td>164</td>
</tr>
<tr>
<td>Position moyenne</td>
<td>8,6</td>
<td>11,4</td>
<td>7,9</td>
</tr>
</tbody>
</table>
<p>Les trois indicateurs progressent ensemble. Ce détail compte : quand les impressions montent pendant que la position moyenne se dégrade, le site gagne de la longue traîne mal placée, ce qui gonfle un compteur sans rapporter grand-chose. Ici la position s’améliore en même temps que le volume, et elle est passée au-dessus de son niveau d’avant la migration.</p>
<p>En glissement annuel, le site perdait 21 % de clics et 39 % d’impressions sur la fenêtre précédant la bascule. Sur la fenêtre de mi-août à mi-septembre, il est à moins 9 % de clics et plus 9 % d’impressions.</p>
<h2>Si une refonte est à votre programme</h2>
<p><strong>Décidez du plan d’URL avant de choisir la technologie.</strong> C’est l’ordre qui compte. Une fois le développement lancé, conserver l’adressage devient une contrainte qu’on négocie, et qu’on finit par lâcher.</p>
<p><strong>Exportez seize mois de Search Console avant la refonte.</strong> Vous ne saurez pas lire votre propre courbe sans témoin saisonnier : vous vous alarmerez d’un creux d’août, ou vous vous féliciterez d’une reprise de rentrée.</p>
<p><strong>Regardez les impressions avant les clics.</strong> Elles disent si Google a gardé vos pages. Tant qu’elles tiennent, le reste se rattrape.</p>
<p><strong>Ne faites confiance à aucun code de succès.</strong> Un serveur qui répond 200 ne prouve pas qu’il a écrit. Sur un chantier de masse, relisez en base un échantillon après chaque lot, et la totalité après le premier.</p>
<p><strong>Ne lancez pas deux chantiers en parallèle si vous voulez mesurer.</strong> Nous l’avons fait, pour de bonnes raisons de calendrier client, et nous en payons le prix : le résultat est là, la décomposition ne l’est pas.</p>
<p>Si une refonte est à votre programme et que vous voulez savoir ce que votre site a à perdre avant de la lancer, c’est exactement ce que regarde un <a href= »https://b-strong.fr/audit-seo/ »>audit SEO</a>. Le détail des contrôles techniques se trouve sur la page <a href= »https://b-strong.fr/seo-technique/ »>SEO technique</a>.</p>
<p><em>Chiffres relevés dans Google Search Console entre le 17 mai 2025 et le 16 septembre 2026. Le client est anonymisé à sa demande et aucun volume absolu n’est publié : toutes les valeurs sont exprimées en base 100 ou en pourcentage de variation. Article publié le 19 septembre 2026.</em></p>