const CasesPage = ({ navigate }) => {
const wins = [
{ tag: 'Suspension Recovery', title: 'Misrepresentation, Suspended Thursday, Live Friday', desc: "A client came to us with a misrepresentation suspension, one of Google's strictest flags. We reviewed Thursday morning, implemented the full compliance fix, and resubmitted. By Friday afternoon the account was live.", metric: '<24h', label: 'Reinstatement', icon: 'refresh' },
{ tag: 'New Approval', title: 'Dutch Dropshipping Store, Approved in 6 Days', desc: 'A new e-commerce store had been rejected twice before coming to us. We ran a full policy audit, restructured the product feed, updated website policy pages, and resubmitted. Approved in 6 business days.', metric: '6 days', label: 'Approval Time', icon: 'check' },
{ tag: 'Google Shopping', title: '4.2× ROAS Scaling a Fashion Store', desc: 'After getting the client approved on GMC, we took over their Shopping campaigns. Within 8 weeks we had stable 4.2× ROAS on €33K monthly spend, generating over €138K/month revenue, while protecting margins.', metric: '4.2×', label: 'ROAS Achieved', icon: 'trending' },
];
return (
Results & Case Studies
Real Results.Proven Track Record.
75+ successful GMC approvals, zero failures, and growing Shopping campaigns. Here's what that looks like in practice.
{[['75+','GMCs Approved','Across all niches'],['100%','Success Rate','Every single case'],['€2.4M+','Revenue Generated','For our clients'],['4.6','Trustpilot Score','21 verified reviews']].map(([v,l,s],i) => (
))}
{/* Case studies — now with EQUAL green boxes */}
{wins.map((w, i) => (
{w.tag}
{w.title}
{w.desc}
))}
{TESTIMONIALS.map(t => )}
);
};
const PricingPage = ({ navigate }) => {
// Order: Monitoring (left) → GMC Approval (middle, highlighted) → Suspension Recovery (right)
const gmcPlans = [
{ icon: 'eye', name: 'Monthly Upkeep', price: '€250', period: '/month', desc: 'Complete peace of mind. Your GMC and webshop stay compliant without you having to lift a finger.', features: ['Preventive policy risk checks','Immediate action on suspension threats','Realtime support & weekly reports','Future-proof optimisation advice','No approval fee on a misrep','Free new merchant if permanently suspended'], cta: 'Start Monthly Upkeep', highlight: false },
{ icon: 'check', name: 'GMC Approval', price: '€949', period: 'one-time', desc: 'Complete setup and guaranteed approval in 5-10 business days. No cure, no pay.', features: ['Full compliance audit','Policy violation fixes','Product feed setup','Website compliance review','Submission & follow-up','30-day post-approval monitoring'], cta: 'Get Approved', highlight: true, badge: 'Most Popular' },
{ icon: 'refresh', name: 'Suspension Recovery', price: '€1,250', period: 'one-time', desc: 'Full reinstatement for any suspension type. No cure, no pay guarantee.', features: ['Suspension cause analysis','Full compliance overhaul','Appeal preparation','Google liaison support','Reinstatement tracking','30-day post-recovery monitoring'], cta: 'Recover My GMC', highlight: false },
];
const exclusivePlans = [
{ icon: 'lock', name: 'Insider Service', price: 'On request', desc: 'Exclusive high-end service for stores with a persistent misrepresentation. For cases where other attempts have failed. 100% success rate, variable pricing.', features: ['For complex misrep cases','100% reinstatement record','Fully bespoke approach','Personal account manager'], cta: 'Contact us', badge: 'Exclusive' },
{ icon: 'store', name: 'Pre-Approved GMC Store', price: 'From €2,000', desc: 'Buy a ready-made, pre-approved GMC webshop. Transferred to your name within 2 days, initial misrep already cleared, start advertising immediately.', features: ['Live within 2 days','Transferred to your name','Initial misrep already cleared','Custom builds on request'], cta: 'View available stores', badge: 'New' },
];
return (
Pricing
Simple, Transparent Pricing
No hidden costs, no unclear packages. Pay for exactly what you need.
{gmcPlans.map(p => (
{p.badge &&
{p.badge}
}
{p.name}
{p.desc}
{p.price} {p.period}
{p.features.map(f => (
))}
navigate('contact')} style={{ width: '100%', justifyContent: 'center' }}>{p.cta} →
))}
No Cure, No Pay on all GMC services. Not approved? No cost.
{/* Exclusive Services */}
{exclusivePlans.map(p => (
{p.badge &&
{p.badge}
}
{p.name}
{p.desc}
{p.price}
{p.features.map(f => (
))}
navigate('contact')} style={{ flex: 1, justifyContent: 'center' }}>{p.cta} →
))}
{/* Shopping pricing */}
Google Shopping Ads
One Simple Fee. Zero Conflicts.
We charge 10% of your monthly ad spend. That's it.
10%
of Monthly Ad Spend
No setup fees. No retainers. No lock-in contracts.
{['Full campaign setup & structure','Performance Max & Standard Shopping','Feed optimisation','Bid strategy & scaling','CRO consultancy','Weekly performance reports','Direct WhatsApp access','Cancel anytime'].map(f => (
{f}
))}
navigate('contact')}>Start Your Campaign →
Book Strategy Call
Minimum recommended ad spend: €3,000/month
);
};
const LAUNCHMIND_API_KEY = 'lm_ethereal-solutions_0e81f578443493c9b6c59277';
const LAUNCHMIND_URL = `https://launchmind.io/api/blog/customer?api_key=${LAUNCHMIND_API_KEY}`;
// Module-level cache so navigating between list and post doesn't re-fetch
let _lmCache = null;
const BlogPage = ({ navigate, blogSlug }) => {
const [posts, setPosts] = React.useState(_lmCache);
const [activeTag, setActiveTag] = React.useState('All');
React.useEffect(() => {
if (_lmCache) return;
let cancelled = false;
(async () => {
try {
const r = await fetch(LAUNCHMIND_URL, { headers: { 'Accept': 'application/json' } });
if (!r.ok) { if (!cancelled) setPosts([]); return; }
const data = await r.json();
const arr = Array.isArray(data) ? data : (data.posts || []);
_lmCache = arr;
if (!cancelled) setPosts(arr);
} catch (e) {
if (!cancelled) setPosts([]);
}
})();
return () => { cancelled = true; };
}, []);
const formatDate = (d) => {
if (!d) return '';
try { return new Date(d).toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric' }); } catch { return ''; }
};
// Single post view
if (blogSlug) {
const post = posts && posts.find(p => p.slug === blogSlug);
return ;
}
// List view
const allPosts = posts || [];
const allTagCounts = {};
allPosts.forEach(p => (p.tags || []).forEach(t => { allTagCounts[t] = (allTagCounts[t] || 0) + 1; }));
const topTags = ['All', ...Object.keys(allTagCounts).sort((a, b) => allTagCounts[b] - allTagCounts[a]).slice(0, 6)];
const filtered = activeTag === 'All' ? allPosts : allPosts.filter(p => (p.tags || []).includes(activeTag));
const featured = filtered[0];
const rest = filtered.slice(1);
return (
Blog & Resources
Insights on GMC &Google Shopping
Practical guides from operators who manage GMC approvals and Shopping campaigns every day.
{/* Tag filter */}
{allPosts.length > 0 && topTags.length > 1 && (
{topTags.map(tag => (
setActiveTag(tag)}
style={{ background: activeTag === tag ? '#0a0f1e' : '#f8fafc', color: activeTag === tag ? 'white' : '#475569', border: '1px solid', borderColor: activeTag === tag ? '#0a0f1e' : '#e2e8f0', fontSize: 13, fontWeight: 600, padding: '9px 18px', borderRadius: 50, cursor: 'pointer', fontFamily: 'Plus Jakarta Sans, sans-serif', transition: 'all 0.15s' }}>
{tag}
))}
)}
{/* Loading */}
{posts === null && (
)}
{/* Empty */}
{posts !== null && filtered.length === 0 && (
No posts found
New articles are published regularly. Have a GMC or Shopping question in the meantime?
WhatsApp us
navigate('contact')}>Get in touch
)}
{/* Featured */}
{featured && (
{ e.preventDefault(); navigate('blog', { slug: featured.slug }); }} href={`/blog/${featured.slug}`}
style={{ display: 'grid', gridTemplateColumns: '1.15fr 1fr', gap: 0, background: 'white', borderRadius: 22, overflow: 'hidden', border: '1px solid #e2e8f0', boxShadow: '0 8px 40px rgba(0,0,0,0.06)', marginBottom: 48, textDecoration: 'none', transition: 'transform 0.2s, box-shadow 0.2s', cursor: 'pointer' }}
className="two-col"
onMouseEnter={e => { e.currentTarget.style.transform = 'translateY(-2px)'; e.currentTarget.style.boxShadow = '0 12px 48px rgba(0,0,0,0.10)'; }}
onMouseLeave={e => { e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.boxShadow = '0 8px 40px rgba(0,0,0,0.06)'; }}>
Featured
{featured.title}
{featured.excerpt &&
{featured.excerpt.length > 200 ? featured.excerpt.slice(0, 200) + '…' : featured.excerpt}
}
{featured.author && {featured.author} }
{featured.author && featured.publishedAt && }
{featured.publishedAt && {formatDate(featured.publishedAt)} }
{featured.wordCount && <>{Math.ceil(featured.wordCount / 225)} min read >}
)}
{/* Grid */}
{rest.length > 0 && (
{rest.map((p) => (
{ e.preventDefault(); navigate('blog', { slug: p.slug }); }} href={`/blog/${p.slug}`}
style={{ background: 'white', borderRadius: 18, overflow: 'hidden', border: '1px solid #e2e8f0', textDecoration: 'none', display: 'flex', flexDirection: 'column', transition: 'transform 0.2s, box-shadow 0.2s', cursor: 'pointer' }}
onMouseEnter={e => { e.currentTarget.style.transform = 'translateY(-3px)'; e.currentTarget.style.boxShadow = '0 10px 30px rgba(0,0,0,0.08)'; }}
onMouseLeave={e => { e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.boxShadow = 'none'; }}>
{p.tags && p.tags[0] && (
{p.tags[0]}
)}
{p.title}
{p.excerpt &&
{p.excerpt.length > 130 ? p.excerpt.slice(0, 130) + '…' : p.excerpt}
}
{p.publishedAt && {formatDate(p.publishedAt)} }
{p.wordCount && <>{Math.ceil(p.wordCount / 225)} min >}
))}
)}
);
};
const BlogPostView = ({ post, loading, navigate, formatDate }) => {
if (loading) {
return (
);
}
if (!post) {
return (
Post not found
The article you're looking for doesn't exist or may have moved.
navigate('blog')}> Back to blog
);
}
const readMin = post.wordCount ? Math.ceil(post.wordCount / 225) : null;
return (
{/* Header */}
{/* Cover */}
{post.coverImage && (
)}
{/* Body */}
);
};
Object.assign(window, { CasesPage, PricingPage, BlogPage, BlogPostView });