Afficher ses avis
Afficher les avis Google sur un site PHP ou HTML (code prêt à coller)
Intégrez vos avis Google en PHP avec un include serveur mis en cache, ou sur un site HTML statique : les options lisibles par les IA, et leurs limites.
Mis à jour le
Sommaire
Vous avez un site en PHP, un CMS maison, ou un simple site en HTML, et vous voulez y afficher vos avis Google de façon à ce que Google et les moteurs IA les lisent. Tout dépend d'une question : votre site exécute-t-il du code côté serveur ?
Quelle méthode pour quel site ?
Si votre serveur exécute du PHP (ou un autre langage), utilisez l'include serveur. Sinon, les options lisibles par les IA demandent une mise à jour manuelle ou un build.
| Votre site | Méthode | Avis dans le HTML | Lisible par les IA | Mise à jour |
|---|---|---|---|---|
| PHP, CMS en PHP (hors WordPress), Laravel, Symfony | Include serveur /api/embed/ID/html | Oui | Oui | Automatique (cache 1 h) |
| Site derrière Cloudflare, quel que soit le CMS | Cloudflare Worker | Oui | Oui | Automatique (cache 1 h) |
| HTML statique avec un build (générateur, CI) | Fragment récupéré au build | Oui | Oui | À chaque build |
| HTML statique sans build, Squarespace, Webflow, Shopify | HTML à coller | Oui | Oui | Manuelle |
| Wix, ou tout autre cas | Snippet JavaScript (iframe) | Non | Non | En direct |
| WordPress | Plugin WordPress | Oui | Oui | Chaque nuit |
L'include serveur ne demande ni compte développeur ni clé API : l'URL du fragment est publique, et fonctionne dès le plan Free.
Comment intégrer les avis Google en PHP ?
L'include serveur renvoie le widget déjà rendu par Revys : le HTML des avis, un CSS limité au widget et le JSON-LD, sans aucun JavaScript. Votre serveur le récupère et l'insère dans la page avant de l'envoyer au visiteur.
Récupérer le code dans Revys
Dans le tableau de bord, ouvrez Mes établissements › votre établissement › Sur mon site, cliquez sur Mettre sur mon site et saisissez l'adresse de votre site. Revys le reconnaît comme site sur mesure (sinon, choisissez Autre ou sur mesure sous « Ce n'est pas ça ? ») : dans la méthode 1. Code serveur, si vous avez un développeur, choisissez PHP sous « Votre site est fait avec… ». Le code affiché contient déjà l'URL de votre widget.
Coller le bloc dans votre fichier .php
Collez-le exactement là où les avis doivent apparaître (un fichier
.php, pas.html) :<?php // Revys : avis visibles par Google et les IA (cache 1 h, jamais bloquant) $revysUrl = 'https://revys.io/api/embed/VOTRE_ID_WIDGET/html'; $revysCache = sys_get_temp_dir() . '/revys-' . md5($revysUrl) . '.html'; if (!is_file($revysCache) || filemtime($revysCache) < time() - 3600) { $revysHtml = @file_get_contents($revysUrl, false, stream_context_create(['http' => ['timeout' => 2]])); if ($revysHtml !== false && $revysHtml !== '') { @file_put_contents($revysCache, $revysHtml); } else { @touch($revysCache); } } echo is_file($revysCache) ? file_get_contents($revysCache) : ''; ?>Vérifier le code source
Ouvrez la page, puis « Afficher le code source » : le texte de vos avis doit y figurer. Vous pouvez aussi tester l'adresse avec notre testeur de visibilité des avis par les IA.
Ce bloc respecte trois règles que tout include devrait suivre :
- Délai de 2 secondes (
timeoutdu contexte HTTP) : votre page n'attend jamais Revys plus longtemps. - Cache d'une heure dans le dossier temporaire du serveur. Revys récupère vos avis Google environ toutes les heures : inutile d'interroger plus souvent.
- Repli sur la dernière version : en cas d'échec,
touchrepousse la prochaine tentative d'une heure et l'ancien fichier reste affiché.
file_get_contents sur une URL demande que l'option PHP allow_url_fopen soit active. C'est le cas par défaut, mais certains hébergeurs la coupent. Dans ce cas, utilisez la version cURL ci-dessous.
Variante cURL avec ETag (requêtes conditionnelles)
L'endpoint renvoie un en-tête ETag et répond 304 Not Modified quand le widget n'a pas changé. Cette variante en profite, et fonctionne même si allow_url_fopen est désactivé :
<?php
// Revys : include serveur avec cURL, cache fichier 1 h et ETag
function revys_reviews(string $url, int $ttl = 3600): string
{
$cache = sys_get_temp_dir() . '/revys-' . md5($url);
$html = is_file("$cache.html") ? (string) file_get_contents("$cache.html") : '';
$etag = is_file("$cache.etag") ? trim((string) file_get_contents("$cache.etag")) : '';
if ($html !== '' && filemtime("$cache.html") > time() - $ttl) {
return $html; // cache encore frais
}
$newEtag = '';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 2,
CURLOPT_TIMEOUT => 2,
CURLOPT_HTTPHEADER => $etag !== '' ? ["If-None-Match: $etag"] : [],
CURLOPT_HEADERFUNCTION => function ($ch, $line) use (&$newEtag) {
if (stripos($line, 'ETag:') === 0) {
$newEtag = trim(substr($line, 5));
}
return strlen($line);
},
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
if ($status === 200 && is_string($body) && $body !== '') {
@file_put_contents("$cache.html", $body);
if ($newEtag !== '') {
@file_put_contents("$cache.etag", $newEtag);
}
return $body;
}
// 304 (inchangé) ou erreur : on garde la dernière version, nouvel essai dans 1 h
if (is_file("$cache.html")) {
@touch("$cache.html");
}
return $html;
}
echo revys_reviews('https://revys.io/api/embed/VOTRE_ID_WIDGET/html');
Une réponse 304 n'est pas décomptée par Revys, et ne transfère pas le fragment.
Laravel et autres frameworks PHP
Le principe est le même avec les outils du framework. Exemple Laravel, dans un contrôleur ou un composant de vue :
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;
$revys = Cache::remember('revys-reviews', 3600, function () {
try {
$res = Http::timeout(2)->get('https://revys.io/api/embed/VOTRE_ID_WIDGET/html');
return $res->successful() ? $res->body() : '';
} catch (\Throwable $e) {
return '';
}
});
Dans la vue Blade, affichez le HTML sans échappement : {!! $revys !!}. Avec Twig, utilisez le filtre raw. Le fragment ne contient aucun script exécutable, et Revys échappe le texte des avis.
Et sur un site HTML statique ?
Sans code serveur, il n'existe pas de méthode à la fois automatique et lisible par les IA, sauf à passer par un build ou par Cloudflare. Voici les options, de la plus simple à la plus robuste.
Option 1 : coller le HTML généré par Revys (mise à jour manuelle)
Dans Revys, page Sur mon site de votre établissement, cliquez sur Mettre sur mon site (choisissez Autre ou sur mesure si besoin) : dans « Choisissez comment ajouter vos avis », la méthode 2. HTML à coller donne ce HTML. Cliquez sur Générer le HTML. Copiez le résultat dans votre fichier .html, ou dans un bloc Code (Squarespace), Embed (Webflow) ou une section « Liquid personnalisé » (Shopify). Les avis sont alors dans le HTML de la page, mais ils ne se mettent pas à jour seuls : recopiez le HTML quand de nouveaux avis arrivent.
Option 2 : récupérer le fragment au moment du build
Si votre site passe par une étape de build (générateur de site statique, intégration continue), un script peut insérer le fragment à chaque build. Placez deux marqueurs dans votre page :
<!-- revys:start -->
<!-- revys:end -->
Puis lancez ce script avant le déploiement (Node.js 18 ou plus récent) :
// scripts/revys-inject.mjs : node scripts/revys-inject.mjs index.html
import { readFile, writeFile } from "node:fs/promises";
const REVYS_URL = "https://revys.io/api/embed/VOTRE_ID_WIDGET/html";
const file = process.argv[2] ?? "index.html";
const START = "<!-- revys:start -->";
const END = "<!-- revys:end -->";
const res = await fetch(REVYS_URL, { signal: AbortSignal.timeout(5000) });
if (!res.ok) {
console.error(`Revys a répondu ${res.status} : ${file} n'est pas modifié.`);
process.exit(0);
}
const fragment = await res.text();
const page = await readFile(file, "utf8");
const i = page.indexOf(START);
const j = page.indexOf(END);
if (i === -1 || j < i) throw new Error(`Marqueurs introuvables dans ${file}`);
await writeFile(file, page.slice(0, i + START.length) + "\n" + fragment + "\n" + page.slice(j));
Planifiez un build par jour (tâche planifiée de votre CI ou de votre hébergeur) et vos avis restent frais. Si Revys ne répond pas, la page garde la version du build précédent.
Option 3 : un Cloudflare Worker, si votre site passe par Cloudflare
Un Worker peut insérer les avis à la volée dans n'importe quelle page servie par Cloudflare, quel que soit l'hébergeur ou le CMS derrière. Ajoutez <div data-revys-include></div> dans la page, puis déployez ce Worker (fourni dans le tableau de bord, option « Cloudflare Worker ») sur la route du site :
// Worker : remplace <div data-revys-include></div> par les avis
const REVYS_URL = "https://revys.io/api/embed/VOTRE_ID_WIDGET/html";
export default {
async fetch(request) {
const page = await fetch(request);
if (!(page.headers.get("content-type") || "").includes("text/html")) return page;
let html = "";
try {
const res = await fetch(REVYS_URL, {
cf: { cacheTtl: 3600, cacheEverything: true },
signal: AbortSignal.timeout(2000),
});
if (res.ok) html = await res.text();
} catch {}
if (!html) return page;
return new HTMLRewriter()
.on("[data-revys-include]", {
element(el) {
el.setInnerContent(html, { html: true });
},
})
.transform(page);
},
};
Option 4 : le snippet JavaScript (sans visibilité IA)
La ligne <script src="https://revys.io/api/embed/VOTRE_ID_WIDGET" async></script> fonctionne partout, Wix compris. Mais elle insère une iframe qui pointe vers revys.io : vos visiteurs voient les avis, pas les robots IA, et Google attribue ce contenu à revys.io plutôt qu'à votre site.
Pourquoi ne pas se contenter du snippet JavaScript ?
Parce que les moteurs IA lisent le HTML brut de vos pages. L'analyse de Vercel publiée en décembre 2024 n'a trouvé aucun grand robot IA (GPTBot, ClaudeBot…) qui exécute le JavaScript. Google l'exécute, mais dans une seconde étape de rendu décrite dans sa documentation sur le SEO JavaScript. Avec un include serveur, la question ne se pose plus : les avis font partie de la page.
Pour aller plus loin
Le guide afficher les avis Google sur son site compare toutes les méthodes. Sur Next.js, suivez la page Next.js ; pour des avis rendus avec votre propre HTML, l'API JSON est incluse dans le plan Pro (voir les tarifs).
Questions fréquentes
Quel code HTML coller pour afficher ses avis Google ?
Sur un site PHP, collez le bloc PHP fourni par Revys à l'endroit où les avis doivent apparaître. Sur un site sans serveur, Revys peut générer le HTML complet du widget à coller dans la page, à recopier quand de nouveaux avis arrivent.
L'include serveur est-il payant ?
Non. L'URL /api/embed/ID/html est publique, sans clé API, et fonctionne dès le plan Free (une fiche, avec un lien « Widget gratuit par Revys »). Seule l'API JSON demande le plan Pro.
Que se passe-t-il si Revys est en panne ?
Avec le code fourni, rien de visible : l'appel est coupé au bout de 2 secondes et la dernière version en cache est réaffichée. Sans cache, la zone des avis reste simplement vide.
Le snippet JavaScript de Revys est-il lisible par ChatGPT ?
Non. Il affiche les avis dans une iframe hébergée sur revys.io : ils ne sont pas dans le HTML de votre page, et les grands robots IA n'exécutent pas le JavaScript.
Mon site est sur Wix : quelle méthode utiliser ?
Wix n'exécute pas de code serveur et isole le HTML collé dans une iframe : seul le snippet JavaScript fonctionne, sans visibilité IA.
L'include serveur donne-t-il des étoiles dans Google ?
Non. Google n'affiche pas d'étoiles pour les avis qu'une entreprise publie sur son propre site. Le fragment contient un balisage Organization ou LocalBusiness conforme, sans AggregateRating.
Sources
Dans le même thème
- Alternative à Elfsight pour les avis Google : comparatif honnêteElfsight ou Revys pour afficher vos avis Google ? Prix, limite de vues, rendu HTML ou JavaScript testé, réponse IA : comparatif vérifié le 19 octobre 2026.Lire
- Alternative à EmbedSocial pour les avis Google : comparatif honnêteEmbedSocial ou Revys pour vos avis Google ? Prix par source, limite de vues, iframe testée, réponse IA : comparatif vérifié le 19 octobre 2026.Lire
- Alternative à Trustindex : comparatif honnête (prix, rendu HTML, réponse IA)Trustindex ou Revys ? Prix publics, plateformes, réponse IA, avis lisibles par Google et les IA : comparatif testé et vérifié le 19 octobre 2026.Lire
- Meilleurs widgets d'avis Google en 2026 : 7 outils testésTrustindex, Elfsight, EmbedSocial, Smash Balloon, Featurable, Guest Suite, Revys : prix vérifiés, plan gratuit, rendu HTML ou JS testé le 19 octobre 2026.Lire
- Widget d'avis Google lisible par Google et les IAWidget d'avis Google gratuit pour 1 fiche : 5 mises en page, avis dans le HTML de votre site, JSON-LD conforme, mise à jour chaque nuit via l'API officielle.Lire
- Afficher les avis Google sur son site : les méthodes comparéesCopier-coller, widget JavaScript, plugin, include serveur ou API : quelle méthode pour afficher vos avis Google, à jour et lisibles par Google et les IA.Lire