Skip to content

fix(web,schema): stop linking at redirects, and always attribute Article schema - #264

Merged
jadhavgaurav merged 3 commits into
mainfrom
development
Sep 9, 2026
Merged

jadhavgaurav merged 3 commits into
mainfrom
development

Conversation

@jadhavgaurav

Copy link
Copy Markdown
Contributor

Three findings from the 2026-08 SEO audit, verified on 2026-09-09 against the live site, the droplet and the Payload DB.

Internal links pointing to 3XX (#49)

/knowledge-hub and /legal sit in the nav and footer on every page, and both 308 to their first document — so all 543 crawled pages linked at a redirect. The redirect map moves out of proxy.ts into lib/nav/section-index.ts so the proxy and every link site read the same pairs, and hrefs resolve through sectionIndexHref(). The proxy still 308s anyone arriving on the old path.

Article schema missing author (#32)

articleSchema, blogPostingSchema and newsArticleSchema dropped author entirely when a document had no named contributor, leaving 319 of 457 Article nodes failing Google's Article requirements — knowledge-hub (238), news (34), resources (31) and 16 guides. They now fall back to the Organization node, which is what the house byline and the case studies already resolve to. Named contributors still win where the CMS has them.

Duplicate H1 across pages (#55)

The triam-security-rebrands…-2 slug now 308s to its unsuffixed canonical, matching the precedent already set for the why-containers pair. Both duplicate pairs are consolidated at the edge.

Footer tap targets (#62)

The three legal utility-row links go from a 21px to a 27px touch target — the last ones under the WCAG 2.5.8 AA floor. The nav columns already cleared it via the same pseudo-element pattern.

Verification

Verified in the production build, not just the source: knowledge-hub pages emit 0 links to bare /knowledge-hub or /legal, and knowledge-hub / news / resources Article nodes all carry author, while /guide keeps its named Person nodes.

web: lint ✓ typecheck ✓ test ✓ (470) build ✓ (610/610 pages) · schema: lint ✓ typecheck ✓ test ✓ (101)

Follow-up (not in this PR)

The two duplicate news documents stay in the sitemap until an editor sets seo.indexable = noindex on each — the mechanism is documented in the next.config.ts redirect comments. Content and metadata findings from the audit are owned by the SEO team.

…cle schema

Three findings from the 2026-08 SEO audit, verified against the live site,
the droplet and the Payload DB on 2026-09-09.

Internal links to 3XX (523 pages flagged, 543 measured): /knowledge-hub and
/legal sit in the nav and footer on every page and both 308 to their first
document. The redirect map moves out of proxy.ts into lib/nav/section-index.ts
so the proxy and every link site read the same pairs, and hrefs resolve through
sectionIndexHref(). The proxy still 308s anyone arriving on the old path.

Article author (319 of 457 nodes): articleSchema, blogPostingSchema and
newsArticleSchema dropped `author` when a document had no named contributor,
leaving knowledge-hub, news and resources failing Google's Article
requirements. They now fall back to the Organization node, which is what the
house byline and the case studies already resolve to. Named contributors still
win where the CMS has them.

Duplicate H1 across pages: the triam-security-rebrands `-2` slug now 308s to
its unsuffixed canonical, matching the precedent set for why-containers. Both
CMS documents stay in the sitemap until an editor sets seo.indexable=noindex.

Also lifts the three footer legal links from a 21px to a 27px touch target,
the last ones under the WCAG 2.5.8 AA floor; the nav columns already cleared it.
Both apps deploy from `main`, so one merge fires the Docker build and the
Vercel build together and Vercel normally wins by several minutes. Any change
where the web app stops sending a field the CMS still marks required will 400
every submission for the length of that gap.

Hit while shipping the forms overhaul. The fix is to relax the constraint in
prod before merging rather than trying to sequence two deploys off one branch.
…ail as Careers

Every form told the visitor we would respond within 24 hours or one business
day, and the confirmation emails repeated it. On screen that is a transient
toast; in an inbox it is durable, forwardable, and reads as a commitment the
team has not agreed to. Softened to what is actually true: someone will get
back to you. Changed in both places, so the site and the email cannot promise
different things.

Also stops the lead confirmations going out signed "CleanStart Careers".
BREVO_SENDER_NAME is the global fallback and was set to the careers identity,
so demo requests, contact replies, newsletter welcomes and resource downloads
were all branded as careers mail. The droplet value is now the generic brand;
careers and partnerships keep their own names through CAREERS_SENDER_NAME and
PARTNERS_SENDER_NAME.
@jadhavgaurav
jadhavgaurav merged commit 865e1de into main Sep 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant