Conversion funnel has no broken links or dead ends
Why it matters
Placeholder href="#" values, empty onClick={() => {}} handlers, and form submissions pointing at API routes that were never created are among the most common defects in AI-built projects — the surface looks finished but the conversion path is mechanically broken. Every dead CTA silently swallows interested visitors, and because the failure happens after the click, analytics often do not flag it until manual testing or a customer complaint surfaces the gap.
Severity rationale
Medium because placeholder links and missing API routes silently abort conversions without any visible error to the visitor.
Remediation
Grep the codebase for href="#", href="", and onClick={() => {}} on CTA elements, then replace each with the real destination route. Verify that every signup form's submission target has a corresponding app/api/**/route.ts file and that post-success redirects point at pages that exist. Search with:
rg 'href="#"|href=""|onClick=\{\(\) => \{\}\}' src/
Create placeholder pages for any referenced route that does not yet exist rather than leaving dead links live.
Detection
-
ID:
conversion-path-integrity -
Severity:
medium -
What to look for: Trace the conversion path from CTA button to completion. Check: (1) CTA buttons on the landing page — do they link to a valid route in the app (verify the
hrefvalue points to an existing route or page file)? (2) Signup form action/API route — does the formactionattribute or submission handler reference a route that exists? (3) Post-signup redirect — does the success handler redirect to a route that exists (e.g.,/dashboardor/onboarding— verify these routes have corresponding page files)? (4) Check for<a href="#">or<a href="">placeholder links in CTA buttons that were not replaced with real routes. -
Pass criteria: Count all CTA button hrefs and form action targets in the conversion path. All CTA buttons link to valid, existing routes. No more than 0 broken links or missing routes in the conversion path. Report: "X of Y conversion links point to valid routes."
-
Fail criteria: Any CTA button uses
href="#"orhref=""(placeholder link). OR the signup form submission handler calls an API route file that does not exist. OR the post-success redirect targets a route with no corresponding page file. -
Skip (N/A) when: No CTA links or forms found.
-
Detail on fail: List the specific broken links. Example:
"'Get Started' button in hero links to href='#' — no destination set."or"Signup form submits to /api/auth/signup but no app/api/auth/signup/route.ts file exists.". -
Remediation: Placeholder links that go nowhere (
href="#") are one of the most common AI-built project gaps. Find them all:Search your codebase for:
href="#" href="" onClick={() => {}} // Empty click handlers on CTAsReplace each with the correct route. If the destination doesn't exist yet, create a placeholder page rather than a dead link.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from marketing-conversion·automated