Web Quality Audit: Cahoot (ex–Campus Sutra) — cahoot.in
Website: https://cahoot.in (legacy campussutra.com 301-redirects here) | Date: 2026-08-10 | Platform: Shopify (theme "Tinker", updated 05 Aug 2026) | Industry: Men's value/streetwear e-commerce (D2C + marketplaces) Business context: see business-analysis.md (₹157.75 Cr FY2025 revenue, 3,505-SKU catalog, mid-rebrand Campus Sutra → Cahoot / "Iconic Everyday", mobile-first ~62% audience).
Scope note / rebrand: The audited origin is cahoot.in.campussutra.comresolves via a double 301 chain (http://www.campussutra.com → https://www.campussutra.com → https://cahoot.in). The site is mid-rebrand and mixes "Campus Sutra" and "Cahoot" branding across titles, schema andsameAslinks — several of the quality issues below are rebrand-transition artifacts.
Executive Summary
Cahoot's real-user performance is genuinely good — Chrome UX Report (CrUX) field data shows Core Web Vitals "Passed" on mobile (LCP 2.2s, INP 190ms, CLS 0) — and the security posture is solid. However, the audit surfaces content-quality and SEO-architecture problems that are unusually severe for a brand this size, several of them rebrand-related:
- A Liquid template comment is leaking as visible link text on the homepage – five collection links visibly render
{# Same image desktop/mobile ke liye — normal img #}(a developer note) to customers. - Two conflicting
OrganizationJSON-LD blocks ship site-wide, one with an invalidhttps://https://…logo URL, and with mismatchedname/sameAsacross the Campus-Sutra→Cahoot rebrand — a real entity-identity risk in Google's knowledge graph. - The homepage has no H1 (its section headings all jump straight to H3), and 81% of homepage images are missing alt text (153 of 189). PDPs and PLPs are better (~46% and ~21% no-alt) but still poor.
- No breadcrumbs anywhere (visual or
BreadcrumbListschema) on PDPs or PLPs. - PDP title tags are far too long (~95 chars, with "Cahoot" duplicated).
These are low-effort, high-polish fixes. The underlying platform (SEO base, sitemap, robots, canonicals, product schema with ratings) is well set up.
| Category | Mobile | Desktop* | Grade |
|---|---|---|---|
| Performance (field CWV) | Passed (LCP 2.2s / INP 190ms / CLS 0) | Passed (assumed) | 🟢 B+ |
| Accessibility | — | — | 🟡 C− |
| Best Practices / Security | — | — | 🟢 B |
| SEO | — | — | 🟡 C+ |
| Content Quality | — | — | 🟡 C |
| UX | — | — | 🟢 B− |
| Overall | 🟡 C+ (~66) |
\* Lab (Lighthouse) category scores could not be captured this run: the in-browser PageSpeed lighthouse run repeatedly failed to fetch the LHR and the PageSpeed Insights API returned HTTP 429 (shared-project daily quota exhausted). Performance is graded on field CrUX data only (the more business-relevant signal); Accessibility/SEO/etc. are graded on direct DOM evidence.
1. Performance Audit
1.1 CrUX Real-World Field Data (PRIMARY)
Source: PageSpeed Insights field data panel, https://pagespeed.web.dev/ (report Aug 10, 2026) — CrUX, "Various mobile devices / many samples / Chrome UX Report".
Core Web Vitals Assessment: Passing on mobile. All three metrics meet the "Good" threshold:
| Metric | Field value | Threshold (Good) | Rating | Trend (from parent analysis) |
|---|---|---|---|---|
| LCP | 2.2 s | ≤ 2.5 s | 🟢 Good | Improving (2,782ms → ~2.3s over 8 wks) |
| INP | 190 ms | ≤ 200 ms | 🟢 Good | Historically flagged ~296ms — has improved into Good this period |
| CLS | 0 | ≤ 0.10 | 🟢 Good | Stable (0.02–0) |
| FCP | 2.0 s | ≤ 1.8 s | 🟡 (borderline) | — |
| TTFB | 0.9 s | — | 🟡 improvable | — |
Interpretation: The one metric to keep an eye on is interactivity (INP). It sits just inside the Good threshold (190ms vs. 200ms), and the parent analysis (CrUX Vis, 2026-07-05→08-01) captured it at ~296ms "Needs Improvement". The variance across CrUX periods, combined with a very heavy script footprint (below), makes INP the top performance risk, not LCP.
1.2 Core Web Vitals (Lab) — not available
Lighthouse lab scores/metrics for both mobile and desktop could not be retrieved this session (PSI lab run failed to fetch LHR; PSI API HTTP 429 quota). Structural performance evidence below is from direct DOM inspection of the rendered storefront.
1.3 Structural Performance Evidence (DOM)
- 148
<script>tags on the homepage — a large third-party/tag footprint (GoKwik COD/RTO & payments, customfit.ai virtual try-on, Judge.me reviews, SearchTap search, nitrocommerce, Shopify analytics/CDN, WhatsApp, snapmint EMI, Meta/GA pixels). This is the likely driver of the INP headroom and of the historically worse INP numbers. Recommendation: audit third-party tag loading, defer non-critical scripts, lazy-init virtual-try-on until user interaction. Note: GoKwik'spdp.gokwik.cois correctly preconnected + preloaded (Early Hints / 103 and<link rel=preload>formerchant.integration.jsare present). - 3,108 DOM elements on the homepage — above Lighthouse's ~1,500 "large DOM" threshold; expect a "minimize DOM size" diagnostic and a drag on rendering.
- 189
<img>elements on the homepage (product-heavy merchandising) — large media surface; images should be confirmed as serving AVIF/WebP via Shopify CDNsrcset(Shopify default does this; verify LCP/hero image is not lazy-loaded). - 10
<iframe>s on the homepage. - Good signals: HTTP/3 (
alt-svc: h3), 103 Early Hints with preloads for critical CSS/JS,preconnecttocdn.shopify.com+pdp.gokwik.co, Cloudflare CDN with BLR edge, server-timing shows early-hints active. TTFB 0.9s field is decent.
1.4 Performance Issues by Impact
| Sev | Issue | Evidence | Recommendation |
|---|---|---|---|
| High | Third-party script bloat (148 scripts) → INP risk | DOM audit; INP 190ms but historically ~296ms | Defer/consolidate tags; lazy-init customfit try-on; preconnect ≤3 |
| High | Large DOM (3,108 elements) | DOM count | Trim homepage section count; virtualize long product grids |
| Medium | FCP 2.0s / TTFB 0.9s field | CrUX | Render-blocking CSS (base.css preloaded but still large); consider critical-CSS inlining |
| Medium | 189 homepage images | DOM | Ensure proper srcset/AVIF; never lazy-load LCP image |
| Low | Double 301 redirect chain (www.campussutra → campussutra → cahoot) | curl headers -L | Point campussutra.com → cahoot.in in a single hop where possible (Shopify handles primary-domain redirect; legacy www layer adds one hop) |
2. Accessibility Audit
Method: Lighthouse-lab a11y score unavailable; assessed via direct DOM audit of homepage + PDP + PLP.
2.1 Critical Issues
- 81% of homepage images missing alt text (153 of 189); another 7 have empty
alt=""on product/content images. Screen-reader users get no product context; image-search ranking is forfeit. PDP = 53 of 114 (46%) no-alt; PLP = 37 of 177 (21%) no-alt. Product cards on PLP that do have alt are descriptive (e.g. "Mid-Rise Boot Cut Trouser"), so the template supports good alt — coverage is the problem, not quality. - No H1 on the homepage. The homepage's section headings ("The Wardrobe", "The Pulse", "Capsule Edits", "What's IN") are all
H3— there is no H1 anywhere on the page (H1 count = 0). The page's primary keyword ("men's clothing brand") has no top-level heading.
2.2 High Priority Issues
- No breadcrumb navigation on product or collection pages (visual or ARIA) — needed for wayfinding in a 3,505-SKU catalog.
2.3 Positive Findings
<html lang="en">present ✓<meta name="viewport">present ✓ (width=375, initial-scale=1) — mobile-friendly- Skip-to-content link present on every template ✓
- Form inputs have associated labels ("Enter your pincode" textbox; size radios in a labelled "Size Size chart" group) ✓
- Alt text that exists is descriptive, not "IMG_1234" ✓
3. SEO Audit
3.1 Technical SEO (passed checks)
| Check | Status |
|---|---|
| robots.txt | ✓ Clean — disallows /cart, /checkout, /orders, /account, filters/sort_by, preview params; includes Sitemap: directive; modern agentic-discovery directives |
| XML Sitemap | ✓ Present & split (products_1..4, pages, collections, blogs) — healthy for 3,505 SKUs |
| Canonical URLs | ✓ Self-referencing on homepage, PDP & PLP |
| Indexation | ✓ robots meta index, follow on homepage; no noindex on key pages |
| HTTPS | ✓ Enforced with HSTS; no mixed content detected |
| Mobile-friendly | ✓ Responsive Shopify, viewport set, content parity |
| URL structure | ✓ Clean, keyworded, hyphenated (/products/mens-emerald-green-…-shirt_csmovsrt7609, /collections/mens-trousers) |
3.2 On-Page SEO
- Homepage title:
Cahoot : India’s most Trusted Mens Clothing Brand(~50 chars) — on-length, but the "most Trusted" self-claim is aggressive; consider anchoring on a commercial keyword ("Men's Clothing & Streetwear | Cahoot"). - PLP title:
Men’s Trousers Online – Office, Casual, Pleated, Tailored – Cahoot— good, keyword-rich. - PDP title:
₹1,099 | Cahoot men's Flannel Green & Buff Beige Vignette-Checked Oversized Shirt – Cahoot— too long (~95 chars), "Cahoot" appears twice, price prefix wastes the front. Truncates in Google. Trim to ~60 chars. - Meta descriptions: present on homepage, PDP (auto-pulled descriptive copy +
| Price), and PLP (unique, keyword-rich) — better than the usual Shopify gap. (Not separately verified on every/pages/and blog — the classic Shopify blind spot; recommend a crawl to confirm 100% coverage.)* - Homepage H1 missing (see Accessibility) — the most impactful single on-page fix.
- OG / Twitter: og:title, og:description, og:image, twitter:card=summary_large_image all present on homepage & PDP ✓. og:image on PLP points at the generic
files/facebook.pngbrand banner (not page-specific) — minor.
3.3 Structured Data (JSON-LD)
Present schema (site-wide via theme):
Organization(in an@graph), typed["Organization","Brand"], plusImageObject(logo), plusWebSitewithSearchAction(sitelinks search box) — good.- PDP:
ProductGroupwithhasVariant→Productnodes, each withOffer(price,priceCurrency,availability,sku, canonical variant URL) — very good, plus a separateProductblock withAggregateRating(4.13, 319 reviews) — enables star rich results.
Issues (all rebrand-adjacent):
- Duplicate, conflicting
Organizationblocks. Every page ships a second, standaloneOrganizationJSON-LD whosenameis "Cahoot" while the canonical@graphOrganization is named "Campus Sutra Retail Pvt Ltd" (alternateName "Cahoot"). The two disagree onsameAs(one lists only IG+FB; the other FB+IG+LinkedIn). Competing entity definitions can split Google's brand entity — the #1 schema risk during a rename. - Invalid logo URL: the standalone Organization's
logois"https://https://cdn.shopify.com/s/files/1/0457/8246/6720/files/Cahoot_selected.png…"— a doublehttps://malformed URL. Invalid structured data. - No
BreadcrumbListon PDPs or PLPs. - No
ItemListon collection/PLP pages. - Brand-name sprawl: product
brand.name= "Cahoot", Organization = "Campus Sutra Retail Pvt Ltd",sameAsincludes legacylinkedin.com/company/campus-sutra. Ensure the post-rebrand entity resolves to ONE name and ONE consistentsameAsset site-wide.
3.4 Content Quality (E-E-A-T) — strong
- Trustworthiness: physical address (Yeshwanthpura, Bengaluru), phone +91 9900008413, email support@cahoot.in, WhatsApp, full policy suite (returns/shipping/refund/cancellation), "Made in India", "12 Lakh+ customers", "Present in 26+ countries", review ratings on PDPs — rich trust layer for an e-commerce brand. ✓
- Expertise/Experience: brand narrative ("Iconic Everyday", about page), design-led founder story (NIFT co-founder) — good.
- Authoritativeness: press (BusinessLine, Indian Retailer), founder media — good inbound signals.
4. International SEO
Not applicable — single-locale site. The site serves one market (India) in English (Content-Language: en-IN); no hreflang or locale switching is required, and none is implemented (correct).
- Note (opportunity): the brand claims "Present in 26+ countries" but there is no localized/international checkout (no multi-currency, no language alternates, no regional shipping UI). If the 26-country claim is to be realised as a D2C channel, international SEO (subfolder
/intl/, hreflang, currency) is a future build. Today the international reach is via marketplaces (Amazon/Flipkart/Myntra), which are out of scope for on-site i18n.
5. Best Practices & Security
5.1 Security Headers (curl -sI)
| Header | Value | Assessment |
|---|---|---|
| HSTS | max-age=7889238(≈91 days) | 🟡 Present but short (recommend 31536000 + includeSubDomains + preload); missing includeSubDomains |
| X-Frame-Options | DENY | 🟢 |
| X-Content-Type-Options | nosniff | 🟢 |
| CSP | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests | 🟡 Functional for clickjacking/mixed-content, but no script-src/object-src 'none' — not a full CSP. Shopify/Cloudflare mitigate; acceptable but improvable |
| X-XSS-Protection | 1; mode=block (Cloudflare) | 🟢 (legacy header, present) |
| COOP | absent | 🟡 Missing (minor) |
5.2 Modern Standards
- HTTP/2 + HTTP/3, 103 Early Hints,
powered-by: Shopify(minor info disclosure),content-language: en-IN, valid UTF-8, no mixed content. ✓
6. Content Quality Assessment
6.1 Critical: Leaked developer comment rendered as UI text (homepage)
Five homepage links — to the Flannel, Trousers, Polos, Linen & Partywear collections — render a Liquid template comment as their visible link text:
{# Same image desktop/mobile ke liye — normal img #}
This is a template-development note ("same image for desktop/mobile — normal img") leaking into the customer-facing DOM and accessibility tree. It shows on every homepage visit and to screen readers. Fix: remove/re-comment the Liquid block ({% comment %}…{% endcomment %}) or hide the alt/text. Quick, visible-quality win.
6.2 Medium: Empty footer-template placeholders
On PDP and 404 templates the "Cahoot SEO Footer" block renders empty <strong> slots — e.g. "Pair [ ] with a [ ]" and the Social-Proof line "[ ] for quality, durability…" with no product-term filled in. Sign of a theme section whose keyword slots weren't populated for these templates. Renders visually sparse/odd on PDPs. Fill or remove.
6.3 Schema logo / JSON-LD hygiene
See §3.3 — double-https:// logo and duplicate Organization blocks are content/code-quality defects, and the most likely candidates to trip a Search Console "invalid structured data" warning.
6.4 Trust signals — strong ✓, and review schema already emits AggregateRating
No AI-generated-image red flags in filenames observed. Product photography is real catalogue imagery. Reviews engine (Judge.me, 4.1★/319 on a sample PDP) is integrated with rating schema — an advantage over most peers.
6.5 UX highlights
- Colorway selector, size chart, size radios, EMI (snapmint) and GoKwik COD/BNPL surfaced on PDP; pincode delivery checker; buy-box 5% prepaid incentive.
- Caveat (business-level, note for CRO): app/marketplace reviews flag ₹100 return fee + photo-verification friction and colour-vs-image mismatch — a trust/quality risk that on-site UX cannot fully offset (see business-analysis §15).
7. Priority Recommendations
🔴 Immediate (this week) — covers 80% of the visible quality damage
| # | Issue | Impact | Effort |
|---|---|---|---|
| 1 | Remove leaked Liquid comment on homepage (5 links) | Visible quality / brand polish | Low |
| 2 | Fix duplicate Organization JSON-LD + double-https:// logo URL site-wide | Entity identity, GSC schema validity | Low (theme json_ld snippet) |
| 3 | Add an H1 to the homepage | SEO + a11y | Low |
| 4 | Add alt text to homepage images (153 missing) | A11y + image SEO | Medium (bulk in theme/editor) |
| 5 | Trim PDP title tags (~95 → ~60 chars, de-duplicate "Cahoot") | CTR in SERPs | Low |
🟡 Short-Term (this month)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 6 | Add BreadcrumbList schema + visual breadcrumbs on PDP/PLP | SERP navigation, UX | Medium |
| 7 | Add ItemList schema on collections | Product rich results | Low |
| 8 | Audit/trim 148 third-party scripts; lazy-init customfit try-on | Protect INP headroom | Medium |
| 9 | Consolidate brand entity: one Organization name + one sameAs set for Cahoot | Knowledge-graph integrity post-rebrand | Low |
| 10 | Fill/remove empty footer SEO placeholders on PDP/404 | Content polish | Low |
🟢 Long-Term (this quarter)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 11 | Full crawl to confirm 100% meta-description coverage on pages/blog/collections | SERP CTR | Low–Med |
| 12 | Reduce homepage DOM (3,108 elements) / virtualize grids | Render perf | Medium |
| 13 | Lengthen HSTS to 31536000 + includeSubDomains; optional full CSP | Hardening | Low |
| 14 | If realising the 26-country claim on-site: locale subfolders + hreflang + currency | International growth | High |
Summary Score Card
| Category | Score | Grade |
|---|---|---|
| Performance (Mobile, field CWV) | 78/100 | 🟢 B+ |
| Performance (Desktop) | n/a* | — |
| Accessibility | 50/100 | 🟡 C− |
| Best Practices & Security | 75/100 | 🟢 B |
| SEO | 65/100 | 🟡 C+ |
| Content Quality | 55/100 | 🟡 C |
| UX | 72/100 | 🟢 B− |
| Overall | 66/100 | 🟡 C+ |
\* Lab (Lighthouse) category scores unavailable this session (PSI lab LHR failed to load; PSI API HTTP 429). Performance graded on field CrUX.
Bottom line: A technically solid, well-optimized Shopify storefront with genuinely good real-user performance and strong security/SEO foundations, dragged down by homepage content-quality defects (leaked template text, no H1, missing alt), rebrand-transition structured-data bugs, and absent breadcrumbs. The fixes are mostly low-effort polish that will disproportionately lift perceived quality and search health — ideal to knock out before the Cahoot rebrand fully lands.
8. Sources & Evidence
- https://pagespeed.web.dev/ — CrUX field data (CWV Passed: LCP 2.2s / INP 190ms / CLS 0 / FCP 2s / TTFB 0.9s), PSI report Aug 10, 2026
- https://www.googleapis.com/pagespeedonline/v5/runPagespeed — returned HTTP 429 quota (lab scores unavailable)
- https://cahoot.in/ — homepage DOM audit (0 H1, 148 scripts, 3,108 elements, 189 imgs/153 no-alt, 10 iframes, leaked
{# Same image… }link text, 2 conflicting Organization schemas, og/twitter present, robots meta index,follow) - https://cahoot.in/products/mens-emerald-green-buff-beige-vignette-checkered-oversized-shirt_csmovsrt7609 — PDP audit (H1 present, ProductGroup+Product schema w/ AggregateRating 4.13/319, 53/114 imgs no-alt, no breadcrumbs, ~95-char title, duplicate/⌐-broken Organization logo)
- https://cahoot.in/collections/mens-trousers — PLP audit (title/meta/H1+ItemList-missing/no-alt 37/177, canonical ok)
- https://cahoot.in/robots.txt — clean rules, sitemap directive, agentic-discovery block
- https://cahoot.in/sitemap.xml (+ products_1..4/pages/collections/blogs) — split sitemaps
- curl -sI http://www.campussutra.com (301 → www → https://cahoot.in) and https://cahoot.in — redirect chain; HSTS/XFO/XCTO/CSP headers; 103 Early Hints; powered-by Shopify
- Parent analysis (this workspace): business-analysis.md — business context, CrUX-Vis snapshot (INP ~296ms historical), 3,505 SKUs, rebrand status, app-review complaints