fix(marketing): Team CTA contact-sales (not buyable) + hero self-serve reframe#214
Merged
Conversation
…e reframe
Launch-readiness polish for the public homepage (instanode-web).
Display-detail accuracy (HARD pillar) — fix a real Team-shown-as-buyable bug:
- The homepage Team tile's CTA pointed at the self-serve
/app/checkout?plan=team path. Team is gated (TEAM-GATE, 2026-06-04 CEO
directive): the server-side gate rejects a Team checkout with
400 tier_not_yet_available, so the homepage was marketing a tier the
platform can't sell. The inline comment already flagged this as a known
reconciliation follow-up.
- Reconciled with PricingPage.tsx + BillingPage.tsx: Team CTA is now
"Contact sales →" → mailto:sales@instanode.dev (named const
SALES_MAILTO_TEAM). No surface markets Team as buyable. Pro remains the
only "Most popular"-badged tier; Team is not badged/highlighted.
- Verified against live rendered output: instanode.dev currently serves the
buyable Team CTA; the freshly-built dist now serves the contact-sales mailto.
Marketing copy polish (safe, non-fabricated):
- Hero subhead reframed to emphasize self-serve reliability: "Self-serve from
the first call to a paid plan — no signup, no Docker, no sales call."
(Hobby/Pro are genuinely self-serve checkout; no invented claims.)
NO fabricated social proof added (no invented counts/logos/testimonials).
NO Team marketing as available/buyable/Most-Popular.
Regression guards: two new MarketingPage.test.tsx tests pin the Team CTA to a
contact-sales mailto (forbidding plan=team / "Start team" from creeping back)
and assert exactly one "Most popular" badge, on Pro.
npm run gate green (tsc + build + 1149 vitest, +2 new).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
size-limit report 📦
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Launch-readiness polish for the public homepage (
src/pages/MarketingPage.tsx).(a) Display-detail accuracy — fix a Team-shown-as-buyable bug
The homepage Team tile's CTA pointed at the self-serve
/app/checkout?plan=team&frequency=monthlypath. Team is gated (TEAM-GATE, 2026-06-04 CEO directive): the server-side gate rejects a Team checkout with400 tier_not_yet_available— so the homepage was marketing a tier the platform can't actually sell. The inline code comment already flagged this as a known reconciliation follow-up.Fix: reconciled with
PricingPage.tsx+BillingPage.tsx— the Team CTA is now "Contact sales →" →mailto:sales@instanode.dev?subject=Team%20plan%20enquiry(extracted as the named constSALES_MAILTO_TEAM). No surface markets Team as buyable. Pro remains the only"Most popular"-badged tier; Team is not badged or highlighted.Verified against live rendered output:
curl https://instanode.dev/currently serves the buyable Team CTA (/app/checkout?plan=team, "Start team →"). The freshly-builtdist/index.htmlfrom this branch serves the contact-sales mailto, with exactly one "Most popular" badge on Pro.(b) Marketing copy polish (safe, non-fabricated)
Hero subhead reframed to emphasize self-serve reliability and the "no sales call" angle:
(Hobby/Pro are genuinely self-serve checkout — no invented claims.)
Constraints honored
Regression guards
Two new
MarketingPage.test.tsxtests:plan=teamcheckout link is absent page-wide, and the old "Start team →" label is gone.Gate
npm run gategreen —tsc --noEmit+vite build(121 prerendered HTML files incl.scripts/prerender.mjs) +vitest run(1149 passed / 3 skipped, +2 new).🤖 Generated with Claude Code