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.
Medium because placeholder links and missing API routes silently abort conversions without any visible error to the visitor.
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.
ID: marketing-conversion.conversion-infrastructure.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 href value points to an existing route or page file)? (2) Signup form action/API route — does the form action attribute or submission handler reference a route that exists? (3) Post-signup redirect — does the success handler redirect to a route that exists (e.g., /dashboard or /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="#" or href="" (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 CTAs
Replace each with the correct route. If the destination doesn't exist yet, create a placeholder page rather than a dead link.