<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- SEO Meta Tags -->
<title>CADORAMA — Supermarché asiatique & coréen à Saint-Quentin (Aisne)</title>
<meta name="description"
content="Le supermarché asiatique de Saint-Quentin et de l'Aisne depuis 1999 : épicerie coréenne, japonaise, chinoise, thaï — ramen, soju, gochujang, sauces, nouilles. Click & Collect gratuit, livraison Hauts-de-France. Un vrai magasin, pas une marketplace.">
<meta name="keywords"
content="supermarché asiatique Saint-Quentin, épicerie asiatique Aisne, épicerie coréenne Hauts-de-France, ramen coréen, soju, gochujang, magasin asiatique Saint-Quentin, click and collect">
<meta name="author" content="CADORAMA">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://www.cadorama02.fr/">
<!-- ✅ Schema.org statique — lu par Google, Gemini, ChatGPT, Perplexity SANS JS -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": ["OnlineStore", "LocalBusiness"],
"name": "CADORAMA",
"url": "https://www.cadorama02.fr",
"logo": "https://www.cadorama02.fr/logo-cadorama.png",
"description": "Le seul supermarché asiatique de Saint-Quentin et de l'Aisne depuis 1999 : épicerie coréenne, japonaise, chinoise, thaï et vietnamienne. Click & Collect gratuit, livraison Hauts-de-France.",
"foundingDate": "1999",
"address": {
"@type": "PostalAddress",
"streetAddress": "119 Rue d'Isle",
"addressLocality": "Saint-Quentin",
"postalCode": "02100",
"addressRegion": "Hauts-de-France",
"addressCountry": "FR"
},
"contactPoint": {
"@type": "ContactPoint",
"contactType": "Customer Service",
"email": "contact@cadorama02.fr",
"telephone": "+33-3-23-07-87-25"
},
"priceRange": "€€",
"currenciesAccepted": "EUR",
"paymentAccepted": "Carte de crédit, PayPal",
"openingHours": "Mo-Sa 09:00-19:00",
"areaServed": { "@type": "Country", "name": "France" },
"sameAs": ["https://www.cadorama02.fr"]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "CADORAMA",
"url": "https://www.cadorama02.fr",
"description": "Supermarché asiatique à Saint-Quentin (Aisne) — épicerie coréenne, japonaise, chinoise, thaï. Click & Collect & livraison Hauts-de-France.",
"inLanguage": "fr-FR",
"potentialAction": {
"@type": "SearchAction",
"target": { "@type": "EntryPoint", "urlTemplate": "https://www.cadorama02.fr/?q={search_term_string}" },
"query-input": "required name=search_term_string"
}
}
</script>
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://cadorama02.fr/">
<meta property="og:title" content="CADORAMA — Supermarché asiatique & coréen à Saint-Quentin (Aisne)">
<meta property="og:description"
content="Le supermarché asiatique de Saint-Quentin et de l'Aisne depuis 1999 : épicerie coréenne, japonaise, chinoise — ramen, soju, gochujang. Click & Collect gratuit, livraison Hauts-de-France.">
<meta property="og:site_name" content="CADORAMA">
<meta property="og:locale" content="fr_FR">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://cadorama02.fr/">
<meta name="twitter:title" content="CADORAMA — Supermarché asiatique & coréen à Saint-Quentin (Aisne)">
<meta name="twitter:description"
content="Le supermarché asiatique de Saint-Quentin et de l'Aisne depuis 1999 : épicerie coréenne, japonaise, chinoise — ramen, soju, gochujang. Click & Collect gratuit, livraison Hauts-de-France.">
<!-- Favicon + PWA -->
<link rel="icon" type="image/webp" sizes="72x72" href="/logo-cadorama-72.webp">
<link rel="icon" type="image/png" sizes="192x192" href="/logo-cadorama-192.png">
<link rel="icon" type="image/png" sizes="72x72" href="/logo-cadorama-72.png">
<link rel="apple-touch-icon" sizes="192x192" href="/logo-cadorama-192.png">
<link rel="manifest" href="/manifest.json">
<!-- 🚀 FONTS LOCALES AUTO-HÉBERGÉES (gain +600ms vs Google Fonts) -->
<!-- Preload des fonts critiques pour FCP optimal -->
<link rel="preload" href="/fonts/poppins-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/poppins-700.woff2" as="font" type="font/woff2" crossorigin>
<!-- @font-face inliné → supprime la requête bloquante /fonts/poppins.css -->
<style>
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: optional;
src: url('/fonts/poppins-400.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 700;
font-display: optional;
src: url('/fonts/poppins-700.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<!-- 🚀 CLS fix : bloque les modifications de layout de Google Translate
AVANT que le navigateur peigne quoi que ce soit. Placé dans <head>
pour qu'elles s'appliquent synchronement, avant tout rendu. -->
<style>
.goog-te-banner-frame,
.goog-te-banner-frame.skiptranslate,
body > .skiptranslate:first-child,
iframe.goog-te-banner-frame,
iframe.skiptranslate[style*="visibility: visible"] {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
position: absolute !important;
top: -9999px !important;
z-index: -1 !important;
pointer-events: none !important;
}
body {
top: 0 !important;
position: static !important;
margin-top: 0 !important;
padding-top: 0 !important;
}
body > .skiptranslate {
display: none !important;
height: 0 !important;
margin: 0 !important;
padding: 0 !important;
}
.goog-te-gadget,
.goog-te-menu-value,
.goog-te-menu-frame { display: none !important; }
.goog-te-combo {
display: inline-block !important;
position: absolute !important;
overflow: hidden !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
width: 1px !important;
margin: -1px !important;
padding: 0 !important;
border: 0 !important;
left: 0 !important;
top: 0 !important;
}
</style>
<!-- ─── GTM + GA4 — chargement DIFFÉRÉ (perf) ───────────────────────────
Avant : ~263 KB analytics chargés AVANT le rendu React → +1.5-2s TBT.
Après : queue dataLayer prête immédiatement (events déclenchés par
l'app y sont bufferisés), mais le SCRIPT GTM ne charge qu'au :
- premier scroll / clic / mousemove / keydown / touchstart, OU
- après 4s post-load (whichever comes first)
Pattern utilisé par Amazon, AliExpress, Booking, etc.
─────────────────────────────────────────────────────────────────── -->
<script>
// 1) dataLayer + gtag stub disponibles IMMÉDIATEMENT
// → les composants React qui font dataLayer.push() pendant le chargement
// ne perdent aucun event (ils sont rejoués quand GTM arrive)
window.dataLayer = window.dataLayer || [];
window.gtag = function(){ window.dataLayer.push(arguments); };
window.dataLayer.push({ 'gtm.start': Date.now(), event: 'gtm.js' });
window.gtag('js', new Date());
window.gtag('config', 'G-BGKWBZ9WJ3', {
anonymize_ip: true,
allow_google_signals: false,
allow_ad_personalization_signals: false
});
// 2) Loader différé — n'injecte les scripts qu'au premier signal d'engagement
(function(){
var loaded = false;
var triggers = ['scroll','click','keydown','mousemove','touchstart','wheel'];
function injectGTM(){
if (loaded) return;
loaded = true;
triggers.forEach(function(e){ window.removeEventListener(e, injectGTM); });
// GTM container
var gtmScript = document.createElement('script');
gtmScript.async = true;
gtmScript.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-M3ZHVL2G';
document.head.appendChild(gtmScript);
// GA4 gtag.js (séparé du GTM container)
var gaScript = document.createElement('script');
gaScript.async = true;
gaScript.src = 'https://www.googletagmanager.com/gtag/js?id=G-BGKWBZ9WJ3';
document.head.appendChild(gaScript);
}
// Chargement au 1er signal d'engagement utilisateur
triggers.forEach(function(e){
window.addEventListener(e, injectGTM, { once: true, passive: true });
});
// Filet de sécurité : 4s après load max (capture page_view même si user ne bouge pas)
if (document.readyState === 'complete') {
setTimeout(injectGTM, 4000);
} else {
window.addEventListener('load', function(){ setTimeout(injectGTM, 4000); }, { once: true });
}
})();
</script>
<!-- Préconnexion au backend et services externes -->
<link rel="preconnect" href="https://cadorama-ecommerce.onrender.com" crossorigin>
<link rel="preconnect" href="https://res.cloudinary.com" crossorigin>
<link rel="preconnect" href="https://flagcdn.com" crossorigin>
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
<link rel="dns-prefetch" href="https://flagcdn.com">
<link rel="dns-prefetch" href="https://i.imgur.com">
<link rel="dns-prefetch" href="https://imgur.com">
<!-- Preload du CSS critique -->
<!-- Meta pour performance -->
<meta name="theme-color" content="#1f2937">
<!-- Style inline pour le loader initial (pas de requête externe) -->
<style>
#initial-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(135deg, #1f2937 0%, #111827 100%);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 9999;
transition: opacity 0.3s ease-out;
}
#initial-loader.fade-out {
opacity: 0;
pointer-events: none;
}
.loader-logo {
margin-bottom: 2rem;
animation: pulse 1.5s ease-in-out infinite;
}
.loader-logo img {
height: 140px;
width: auto;
-o-object-fit: contain;
object-fit: contain;
}
/* Mobile : logo plus grand pour meilleure visibilité au démarrage PWA */
@media (max-width: 640px) {
.loader-logo img {
height: 160px;
}
}
.loader-spinner {
width: 50px;
height: 50px;
border: 4px solid rgba(245, 158, 11, 0.1);
border-top-color: #f59e0b;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
.loader-text {
margin-top: 1.5rem;
color: #9ca3af;
font-size: 0.875rem;
animation: pulse 1.5s ease-in-out infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
@keyframes pulse {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
</style>
<!-- ✨ jQuery chargé conditionnellement UNIQUEMENT pour le widget Mondial Relay sur la page checkout -->
<script>
// Détecte si on est sur la page checkout et charge jQuery de manière asynchrone
if (window.location.pathname.includes('/checkout')) {
const loadScript = (src) => {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.async = true;
script.onload = resolve;
script.onerror = reject;
document.head.appendChild(script);
});
};
// Charger jQuery puis le widget Mondial Relay en séquence
loadScript('//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js')
.then(() => loadScript('//widget.mondialrelay.com/parcelshop-picker/jquery.plugin.mondialrelay.parcelshoppicker.min.js'))
.catch(err => console.warn('Failed to load Mondial Relay widget:', err));
}
</script>
<script type="module" crossorigin src="/assets/index.CirFHB-p.js"></script>
<link rel="modulepreload" crossorigin href="/assets/react-core.D82PMoMU.js">
<link rel="modulepreload" crossorigin href="/assets/sentry.Bx1sL7fw.js">
<link rel="modulepreload" crossorigin href="/assets/ui-vendor.9NecTGjv.js">
<link rel="modulepreload" crossorigin href="/assets/react-router.B_Fow9xa.js">
<link rel="stylesheet" crossorigin href="/assets/index.Clea68wd.css">
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M3ZHVL2G"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- Loader initial affiché instantanément -->
<div id="initial-loader">
<div class="loader-logo"><img src="/logo-cadorama-200.webp" alt="CADORAMA" width="200" height="200" /></div>
<div class="loader-spinner"></div>
<div class="loader-text">Chargement de votre boutique...</div>
</div>
<!--
✅ CONTENU STATIQUE — visible par tous les crawlers (Google, Bing, Perplexity,
ChatGPT, Gemini, DeepSeek…) même sans exécution JavaScript.
React remplace ce contenu au chargement. Les humains ne le voient pas
(masqué par le #initial-loader), les robots si.
-->
<div id="root">
<header>
<nav aria-label="Navigation principale">
<a href="https://www.cadorama02.fr/">
<strong>CADORAMA</strong> — Boutique en ligne de cadeaux et articles à prix malin
</a>
<ul>
<li><a href="https://www.cadorama02.fr/categories">Toutes les catégories</a></li>
<li><a href="https://www.cadorama02.fr/promotions">Promotions</a></li>
<li><a href="https://www.cadorama02.fr/faq">FAQ</a></li>
<li><a href="https://www.cadorama02.fr/cgv">CGV</a></li>
</ul>
</nav>
</header>
<main>
<h1>CADORAMA — Trouvailles utiles & idées cadeaux à prix malin</h1>
<p>
Commerçant local français depuis 1999 à Saint-Quentin (02100, Hauts-de-France).
Boutique en ligne généraliste : cadeaux, décoration, alimentation & boissons,
électronique, mode, beauté, jouets, sports, animalerie, bricolage, brocante.
Livraison en France métropolitaine. Click & Collect gratuit en magasin.
Paiement sécurisé Stripe & PayPal. Retours gratuits sous 14 jours.
</p>
<section aria-label="Catégories de produits">
<h2>Nos catégories</h2>
<ul>
<li><a href="https://www.cadorama02.fr/categories/cadeaux-occasions">Cadeaux & Occasions</a></li>
<li><a href="https://www.cadorama02.fr/categories/maison-decoration">Maison & Décoration</a></li>
<li><a href="https://www.cadorama02.fr/categories/alimentation-boissons">Alimentation & Boissons</a></li>
<li><a href="https://www.cadorama02.fr/categories/electronique">Électronique</a></li>
<li><a href="https://www.cadorama02.fr/categories/mode-maroquinerie">Mode & Maroquinerie</a></li>
<li><a href="https://www.cadorama02.fr/categories/beaute-soins">Beauté & Soins</a></li>
<li><a href="https://www.cadorama02.fr/categories/jouets-loisirs">Jouets & Loisirs</a></li>
<li><a href="https://www.cadorama02.fr/categories/sports-plein-air">Sports & Plein air</a></li>
<li><a href="https://www.cadorama02.fr/categories/animalerie">Animalerie</a></li>
<li><a href="https://www.cadorama02.fr/categories/brocante">Brocante & Seconde main</a></li>
</ul>
</section>
<section aria-label="Informations boutique">
<h2>CADORAMA — Informations</h2>
<address>
119 Rue d'Isle, 02100 Saint-Quentin, Hauts-de-France, France<br>
Téléphone : <a href="tel:+33323078725">03 23 07 87 25</a><br>
Email : <a href="/cdn-cgi/l/email-protection#d8bbb7b6acb9bbac98bbb9bcb7aab9b5b9e8eaf6beaa"><span class="__cf_email__" data-cfemail="13707c7d67727067537072777c61727e7223213d7561">[email protected]</span></a><br>
Ouvert du lundi au samedi, 9h–19h
</address>
</section>
</main>
<footer>
<p>© CADORAMA — SIRET 423 195 395 00011 — Tous droits réservés</p>
<nav aria-label="Liens légaux">
<a href="https://www.cadorama02.fr/cgv">CGV</a> ·
<a href="https://www.cadorama02.fr/privacy">Confidentialité</a> ·
<a href="https://www.cadorama02.fr/returns">Retours</a> ·
<a href="https://www.cadorama02.fr/faq">FAQ</a>
</nav>
</footer>
</div>
<!-- Script pour masquer le loader une fois React chargé -->
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
// Masquer le loader dès que React prend le relais
window.addEventListener('DOMContentLoaded', () => {
const checkReactMount = setInterval(() => {
const root = document.getElementById('root');
if (root && root.children.length > 0) {
const loader = document.getElementById('initial-loader');
if (loader) {
loader.classList.add('fade-out');
setTimeout(() => loader.remove(), 300);
}
clearInterval(checkReactMount);
}
}, 50);
// Timeout de sécurité (10 secondes max)
setTimeout(() => {
const loader = document.getElementById('initial-loader');
if (loader) {
loader.classList.add('fade-out');
setTimeout(() => loader.remove(), 300);
}
clearInterval(checkReactMount);
}, 10000);
});
</script>
<!-- ✅ Fallback no-JS — utilisateurs et crawlers sans JS -->
<noscript>
<style>
#initial-loader { display: none !important; }
#root { display: block !important; font-family: sans-serif; max-width: 900px; margin: 0 auto; padding: 20px; }
</style>
<p style="background:#fef3c7;padding:12px;border-radius:8px;font-size:14px;">
⚠️ JavaScript est désactivé. Certaines fonctionnalités ne sont pas disponibles.
<a href="mailto:contact@cadorama02.fr">Contactez-nous</a> pour commander.
</p>
</noscript>
</body>
</html>