Everything That's Wrong
Summary
6 pages, desktop + mobile, public only
50 issues found
Top 5 Issues
What We Checked
Pages, devices, and approach
Pages Audited
| URL | Type | Purpose |
|---|---|---|
| https://formagents.com/ | Homepage | Primary landing page with product overview, pricing, and main conversion CTAs |
| https://formagents.com/sign-up | Conversion | User registration/account creation flow |
| https://formagents.com/contact | Conversion | Sales contact form with embedded chat widget demo |
| https://formagents.com/sign-in | Conversion | Existing user authentication flow |
| https://formagents.com/terms | Legal | Terms of Service legal document |
| https://formagents.com/privacy | Legal | Privacy Policy legal document |
Devices Tested
How We Did This
We looked at your site the way a technical co-founder would—except you get the findings in plain English, not a Jira ticket.
Each page was checked across eleven dimensions: performance, reliability, security, email configuration, DNS, accessibility, SEO, AI search readiness, UX, branding, and technical implementation. Automated tools flagged the issues. We validated them, threw out the noise, and ranked what's left by what actually matters to your business.
A broken contact form on your homepage ranks higher than a minor performance tweak on a legal page. We prioritize by impact, not by what scanning tools think is "critical."
Every finding tells you where the problem is, why it matters, and how to verify it's fixed. You can hand this report to your developer, your agency, or whoever manages your site—and hold them accountable.
Discovery & Site Overview
Tech stack, hosting, and site context
How visitors reach your site
formagents.com
HTTP to HTTPS enforced (301). WWW vs non-WWW INCONSISTENT: www.formagents.com and formagents.com both serve content directly without redirecting to a single canonical host.
Content delivery and firewall status
Google Frontend (Google Cloud). No CDN detected. No WAF detected.
Built With
Technologies powering your site
Domain Ownership
Registration and security status
| Registrar | GoDaddy.com, LLC |
| Expiry | 2028-07-07 |
| Security | Transfer lock, delete lock, renew lock, update lock enabled |
Key Findings
WWW and non-WWW both serve content without redirecting to a single canonical host. This causes duplicate content issues and splits SEO authority between two versions of the site.
Evidence: See report for details.
Recommendation: Address this issue to improve your site.
No robots.txt file found. Crawlers will assume full access, but there's no sitemap reference to help them discover pages efficiently.
Evidence: See report for details.
Recommendation: Address this issue to improve your site.
No sitemap.xml found. Search engines rely on sitemaps for efficient crawling. Only 6 pages discovered through link crawling.
Evidence: See report for details.
Recommendation: Address this issue to improve your site.
No IPv6 (AAAA) DNS records. Site may not be accessible on IPv6-only networks.
Evidence: See report for details.
Recommendation: Address this issue to improve your site.
No CAA DNS records. Any certificate authority can issue certificates for this domain.
Evidence: See report for details.
Recommendation: Address this issue to improve your site.
Domain expires July 2028 (885 days out) with all protective locks enabled.
Modern tech stack (Next.js + React + Supabase) enables good performance patterns.
HTTPS properly enforced with strong HSTS header (max-age=63072000, includeSubDomains, preload).
Per-Page Audit
Detailed analysis of each page
Above the Fold
Clear value proposition with headline 'Build Forms People Can Talk To'. Hero section includes a conversation preview demonstrating the product. Primary CTA 'Start Building Free' is prominent with teal background. Secondary 'See How It Works' link also visible.
CTA Visibility
Primary CTA 'Start Building Free' is visible and prominent above the fold on all viewports. The teal color (#17ba99) stands out well against the white background, though it has contrast issues with white text.
Performance Highlights
Mobile LCP is 6.7s (poor) - caused by slow server response and JavaScript bundle size. Desktop LCP is 1.3s (good). Unused JavaScript ~415 KiB could be eliminated. CLS is 0 (excellent). TBT is low at 72ms mobile.
SEO Basics
Page Findings
Evidence: Fix color contrast on primary brand color - current 2.46:1 ratio fails WCAG AA (affects all CTAs and links)
Recommendation: Address this issue to improve your site.
Evidence: Add accessible name to submit button in chat interface widget
Recommendation: Address this issue to improve your site.
Evidence: Reduce unused JavaScript (~415 KiB) to improve mobile LCP from 6.7s
Recommendation: Address this issue to improve your site.
Evidence: Add customer logos or testimonials above the fold for social proof
Recommendation: Address this issue to improve your site.
Evidence: Make scrollable chat region keyboard accessible with tabindex
Recommendation: Address this issue to improve your site.
Above the Fold
Clean, minimal signup form centered on page. Email and password fields clearly labeled. 'Sign up' CTA button prominent in teal. Link to sign-in for existing users. Terms/Privacy links visible below form.
CTA Visibility
Primary 'Sign up' button is large, prominent, and uses consistent brand color. Form is centered and the action is unmistakable. Well-designed conversion page.
Performance Highlights
Mobile LCP is 5.3s (needs improvement). Desktop is excellent at 0.4s. Lightweight page with minimal content. Unused JavaScript ~207 KiB could be reduced.
SEO Basics
Page Findings
Evidence: Add canonical URL to prevent duplicate content issues
Recommendation: Address this issue to improve your site.
Evidence: Fix color contrast on sign-up button and links (2.46:1 ratio fails WCAG AA)
Recommendation: Address this issue to improve your site.
Evidence: Reduce unused JavaScript (~207 KiB) to improve mobile LCP
Recommendation: Address this issue to improve your site.
Evidence: Add trust messaging about data security near the form
Recommendation: Address this issue to improve your site.
Above the Fold
Conversational contact form with 'Let's talk' heading. Uses the product itself (FormAgents chat interface) to demonstrate capability while capturing leads. Shows time estimate '~2 minutes'. Alternative email contact provided.
CTA Visibility
The conversational interface IS the CTA - unique approach that demonstrates the product while capturing leads. Submit button (teal) visible at bottom of chat. Email fallback 'sales@formagents.com' provided.
Performance Highlights
Mobile LCP is 6.6s (poor). Desktop LCP is 1.4s (acceptable). Similar JavaScript bundle issues as homepage. Page uses the full FormAgents widget.
SEO Basics
Page Findings
Evidence: Add accessible name to submit button in chat interface
Recommendation: Address this issue to improve your site.
Evidence: Fix color contrast on email link and brand elements
Recommendation: Address this issue to improve your site.
Evidence: Make chat scrollable region keyboard accessible
Recommendation: Address this issue to improve your site.
Evidence: Improve mobile LCP (currently 6.6s) by reducing JavaScript bundle
Recommendation: Address this issue to improve your site.
Above the Fold
Clean sign-in form with email and password fields. 'Forgot Password?' link positioned helpfully. 'Sign up' link for new users. Consistent with sign-up page design.
CTA Visibility
Primary 'Sign in' button prominent and clear. Forgot password link well-positioned. Sign up link visible for users who landed here by mistake.
Performance Highlights
Mobile LCP is 5.4s (needs improvement). Desktop is excellent at 0.35s. Lightweight page structure similar to sign-up.
SEO Basics
Page Findings
Evidence: Add canonical URL to prevent duplicate content issues
Recommendation: Address this issue to improve your site.
Evidence: Fix color contrast on CTA button and links
Recommendation: Address this issue to improve your site.
Evidence: Consider adding social login options (Google) to reduce friction
Recommendation: Address this issue to improve your site.
Evidence: Improve mobile LCP from 5.4s
Recommendation: Address this issue to improve your site.
Above the Fold
Standard Terms of Service page with clear heading and well-organized sections. 13 H2 subheadings for easy navigation. Professional legal document presentation.
CTA Visibility
N/A for legal page - no conversion action expected. Sign up CTA in header available for users who want to proceed after reading terms.
Performance Highlights
Mobile LCP is 5.3s (needs improvement). Desktop is excellent at 0.38s. Text-heavy page renders well.
SEO Basics
Page Findings
Evidence: Fix color contrast on navigation CTA and internal links
Recommendation: Address this issue to improve your site.
Evidence: Add table of contents with anchor links for better navigation
Recommendation: Address this issue to improve your site.
Evidence: Display effective date/last updated prominently at top
Recommendation: Address this issue to improve your site.
Above the Fold
Privacy Policy page with clear heading and organized sections. 10 H2 subheadings covering standard privacy topics. Well-structured legal content.
CTA Visibility
N/A for legal page - no conversion action expected. Sign up CTA in header available.
Performance Highlights
Mobile LCP is 5.3s (needs improvement). Desktop is excellent at 0.4s. Desktop best practices score dropped to 92 due to console error logging.
SEO Basics
Page Findings
Evidence: Fix color contrast on all 'contact us' links and navigation CTA
Recommendation: Address this issue to improve your site.
Evidence: Add table of contents with anchor links for quick navigation
Recommendation: Address this issue to improve your site.
Evidence: Add effective date/last updated prominently
Recommendation: Address this issue to improve your site.
See your pages analyzed
Get the same detailed breakdown for your critical pages.
Performance Audit
Core Web Vitals and speed analysis
Core Web Vitals
Loading Speed
How long until visitors see your main content
Slow LCP means visitors see a blank screen for 5-7 seconds on mobile, increasing bounce rates.
Visual Stability
Whether the page jumps around while loading
Zero layout shift — the page is visually stable and nothing jumps around.
Responsiveness
How fast the site reacts when visitors click
Interactions respond quickly. Buttons and forms feel instant.
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| LCP readiness | 1 | Mobile LCP >4s on all pages (5.3-6.7s range); desktop LCP is good (<2.5s) |
| INP responsiveness | 4 | TBT consistently low (<100ms), no input lag observed |
| CLS stability | 5 | CLS is 0 across all pages - no layout shifts detected |
| Asset efficiency | 2 | ~415 KiB unused JavaScript on homepage, ~207 KiB on other pages |
| Third-party impact | 4 | Only Google Analytics; minimal impact on performance |
Mobile page loads are painfully slow
Desktop is fast, but every page takes 5-7 seconds to load on mobile because of oversized JavaScript bundles. This is costing you mobile visitors.
Key Findings
Mobile LCP Consistently Over 5 Seconds
All 6 pages have mobile Largest Contentful Paint between 5.3s and 6.7s, well above the 2.5s 'good' threshold. The homepage is worst at 6.7s median across 3 runs.
Evidence: Homepage LCP: 6.7s, 6.8s, 6.7s (3 runs). Sign-up: 5.3s. Contact: 6.6s. Sign-in: 5.4s. Terms: 5.3s. Privacy: 5.3s.
Recommendation: Reduce JavaScript bundle size through code splitting, lazy load non-critical routes, and implement critical CSS inlining. Consider SSG/ISR for static pages.
Large Unused JavaScript Bundle
Homepage ships ~415 KiB of unused JavaScript code. Other pages have ~207-208 KiB unused. This is the primary cause of slow mobile LCP.
Evidence: Lighthouse consistently reports 'Reduce unused JavaScript' with est. savings of 415 KiB on homepage, 207 KiB on lighter pages.
Recommendation: Audit bundle with webpack-bundle-analyzer or next/bundle-analyzer. Implement dynamic imports for below-fold components. Remove unused dependencies.
Server Response Time Occasionally Elevated
One of three Lighthouse runs flagged TTFB at 810ms. This is intermittent but worth monitoring.
Evidence: First run showed 'Root document took 810 ms' warning with est. savings of 710ms. Other runs did not flag this.
Recommendation: Enable edge caching/CDN if not already active. Monitor TTFB over time. Consider moving to edge deployment (Vercel Edge, Cloudflare Pages) for faster cold starts.
Legacy JavaScript Polyfills
Build includes ~13 KiB of legacy JavaScript polyfills that modern browsers don't need.
Evidence: Lighthouse reports 'Legacy JavaScript' with est. savings of 13 KiB across all pages.
Recommendation: Update Next.js browserslist targets to drop IE11 support if not needed. Use modern JavaScript syntax without transpilation for baseline features.
Back/Forward Cache Disabled
Pages cannot use browser bfcache, slowing back button navigation. 6 failure reasons flagged.
Evidence: All pages report 'Page prevented back/forward cache restoration' with 4-6 failure reasons.
Recommendation: Review bfcache failure reasons in DevTools. Common fixes: remove 'no-cache' headers on HTML, avoid unload handlers, close WebSocket connections on pagehide.
Reliability & Runtime
Errors, failures, and stability
Error Overview
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| Console cleanliness | 5 | Zero JavaScript errors, warnings, or uncaught exceptions across all 6 pages |
| Network integrity | 5 | All resources load successfully; zero 4xx/5xx errors |
| Third-party resilience | 5 | Only Google Analytics present; loads without issues; site functions if blocked |
| Redirect hygiene | 3 | Inconsistent www/non-www handling; HTTPS enforced correctly |
The site works — no crashes, no broken resources
Zero JavaScript errors, zero failed network requests, and only Google Analytics as a third-party dependency. The one issue is inconsistent www/non-www handling.
Key Findings
Inconsistent www/non-www redirect behavior
Requests to www.formagents.com stay at www, while requests to formagents.com stay at non-www. This can cause duplicate content issues in search engines and split link equity between the two domains.
Evidence: Discovery data shows: httpWww -> https://www.formagents.com/, httpsNonWww -> https://formagents.com. No cross-redirect between variants.
Recommendation: Configure server to redirect all www requests to non-www (or vice versa) consistently. Add canonical URL tags on all pages pointing to the preferred domain.
CSP report-only violations for unsafe-eval
Content Security Policy in report-only mode logs violations for JavaScript evaluation. This is informational only and does not block functionality, but indicates the build process uses eval-like patterns.
Evidence: CSP report-only violations in _next/static/chunks/*.js files across all pages
Recommendation: Consider updating Next.js build configuration to avoid eval patterns, or update CSP to allow unsafe-eval if intentional. Low priority as these are report-only.
Security Audit
TLS, headers, and baseline security
TLS / HTTPS
Security Headers
Partial| HSTS | |
| X-Content-Type-Options | |
| X-Frame-Options | |
| Referrer-Policy | |
| Permissions-Policy | |
| Content-Security-Policy | Permissive |
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| TLS config | 5 | TLS 1.3 default, TLS 1.2 supported, TLS 1.0/1.1 disabled. Valid Google-issued certificate. |
| Security headers | 3 | HSTS with preload and X-Frame-Options present. Missing CSP (report-only mode), X-Content-Type-Options, Referrer-Policy, Permissions-Policy. |
| Mixed content | 5 | No mixed content detected. All resources loaded over HTTPS. |
| Passive scan findings | 3 | Server and X-Powered-By headers expose technology stack (Google Frontend, Next.js). No sensitive paths exposed. |
Your basics are covered, but gaps remain
HTTPS works and your certificate is valid, but missing security headers leave your site more exposed than it needs to be. Adding a few headers is a quick win.
Key Findings
Content-Security-Policy Not Enforced
CSP is in report-only mode, not actively blocking malicious content. While a well-defined policy exists, it does not protect users until enforced.
Evidence: Header 'Content-Security-Policy-Report-Only' present but 'Content-Security-Policy' absent
Recommendation: After monitoring report-only CSP for violations, promote it to enforced mode by renaming the header to Content-Security-Policy
Missing X-Content-Type-Options Header
Without this header, browsers may MIME-sniff responses, potentially executing malicious content.
Evidence: X-Content-Type-Options header not present in responses
Recommendation: Add header: X-Content-Type-Options: nosniff
Missing Referrer-Policy Header
Without explicit control, full referrer URLs may be sent to third parties, potentially leaking sensitive URL parameters.
Evidence: Referrer-Policy header not present in responses
Recommendation: Add header: Referrer-Policy: strict-origin-when-cross-origin
Missing Permissions-Policy Header
Browser features like camera, microphone, and geolocation are not explicitly restricted.
Evidence: Permissions-Policy header not present in responses
Recommendation: Add Permissions-Policy header to restrict unnecessary browser features
Technology Stack Exposed in Headers
Server and X-Powered-By headers reveal technology choices, aiding reconnaissance by attackers.
Evidence: Server: Google Frontend, X-Powered-By: Next.js
Recommendation: Remove or genericize Server and X-Powered-By headers. Note: Google Frontend header may not be configurable on Google Cloud hosting.
CSP Uses unsafe-inline for Scripts and Styles
The report-only CSP policy allows 'unsafe-inline' for scripts and styles, which weakens XSS protection when enforced.
Evidence: CSP contains: script-src 'self' 'unsafe-inline' ...; style-src 'self' 'unsafe-inline'
Recommendation: Refactor code to use nonces or hashes instead of unsafe-inline, then update CSP accordingly
Email Deliverability
SPF, DKIM, DMARC, and reputation
Email Authentication
SPF
Validv=spf1 include:dc-aa8e722993._spfm.formagents.com ~all
DNS lookups: 2/10
- Uses soft fail (~all) instead of hard fail (-all)
DKIM
PartialUnable to verify DKIM - no selectors found at common names (google, selector1, selector2, k1, default, dkim, mail). DKIM may still be configured with a non-standard selector.
DMARC
EnforcingPolicy: reject
- No reporting addresses configured (rua/ruf) — no visibility into authentication results
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| SPF | 4 | Present and correct with only 2 DNS lookups; uses ~all (soft fail) rather than -all (hard fail) |
| DKIM | 2 | Unable to verify - no DKIM selectors found at common names (google, selector1, default, k1, etc.) |
| DMARC | 4 | Excellent p=reject policy but missing reporting addresses (rua/ruf) |
| Sending domain hygiene | 4 | Clear setup: Google Workspace MX with hosted SPF record, intentional configuration |
| Transport security | 0 | No MTA-STS or TLS-RPT configured |
Anyone can send emails pretending to be you
Your SPF record exists but DMARC is not enforcing, which means attackers can spoof your domain. This is a high-priority fix that protects your brand reputation.
Key Findings
DMARC Missing Reporting Addresses
DMARC policy is p=reject (excellent), but no reporting addresses are configured. This means the domain owner has no visibility into delivery failures, authentication issues, or attempted spoofing.
Evidence: DMARC record: v=DMARC1; p=reject; adkim=r; aspf=r; — no rua or ruf tags present
Recommendation: Add aggregate reporting: v=DMARC1; p=reject; adkim=r; aspf=r; rua=mailto:dmarc@formagents.com; — Consider a service like dmarcian or Valimail for report analysis
No MTA-STS Configured
MTA-STS (Mail Transfer Agent Strict Transport Security) is not configured. Without MTA-STS, email transport is vulnerable to downgrade attacks where an attacker could intercept or redirect mail by spoofing DNS.
Evidence: No TXT record found at _mta-sts.formagents.com
Recommendation: Configure MTA-STS by: 1) Publishing a policy file at https://mta-sts.formagents.com/.well-known/mta-sts.txt, 2) Adding a _mta-sts TXT record with policy ID
DKIM Selectors Not Discoverable
No DKIM selectors could be found using common selector names. This doesn't necessarily mean DKIM isn't configured, but it couldn't be verified. If DKIM is not configured for Google Workspace, emails may have reduced deliverability.
Evidence: Checked selectors: google, selector1, selector2, k1, default, dkim, mail — none returned DKIM records
Recommendation: Verify DKIM is configured in Google Workspace Admin Console under Apps > Google Workspace > Gmail > Authenticate email. Generate and publish DKIM keys if not already done.
SPF Uses Soft Fail Instead of Hard Fail
SPF record ends with ~all (soft fail) instead of -all (hard fail). Soft fail marks failing emails as suspicious but doesn't reject them, reducing the effectiveness of SPF protection.
Evidence: SPF record: v=spf1 include:dc-aa8e722993._spfm.formagents.com ~all
Recommendation: After confirming all legitimate sending sources are included in SPF, change ~all to -all for strict enforcement
Domain & DNS Audit
Records, DNSSEC, and governance
Nameservers
DNSSEC
DNSSEC not enabled (unsigned at registrar level)
Domain Governance
DNS Records
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| DNS consistency | 5 | Clean configuration, no conflicts. 4 A records provide good redundancy. No CNAME at apex. |
| DNSSEC | 3 | Not enabled. Common for many domains, but leaves DNS responses unverified. |
| CAA | 3 | Not configured. Any CA can issue certificates for this domain. |
| MX/Email DNS coherence | 5 | Google Workspace MX records properly configured with correct priorities (1, 5, 5, 10, 10). |
| Governance | 5 | GoDaddy registrar with full lock (delete, renew, transfer, update prohibited). Expires 2028-07-07. |
DNS is solid with minor improvements available
Your nameservers are responsive and redundant. DNSSEC is not enabled, which is an easy improvement but not urgent for most businesses.
Key Findings
DNS Configuration Generally Solid
Domain has good nameserver redundancy (2 servers on different subnets), multiple A records for resilience, and properly configured MX records for email.
Evidence: NS: ns65.domaincontrol.com (97.74.102.43), ns66.domaincontrol.com (173.201.70.43). A: 4 Google IPs (216.239.32.21, 216.239.34.21, 216.239.36.21, 216.239.38.21). MX: 5 Google Workspace servers with proper priority ordering.
Recommendation: Continue current configuration. DNS foundation is stable.
No CAA Records Configured
Without CAA records, any Certificate Authority can issue SSL/TLS certificates for formagents.com. This is a minor security consideration.
Evidence: dig CAA formagents.com returned no records.
Recommendation: Consider adding CAA records to restrict certificate issuance to your preferred CA (e.g., Let's Encrypt, Google Trust Services, or whoever issues your certificates).
DNSSEC Not Enabled
DNSSEC is not enabled for this domain. While common, this means DNS responses cannot be cryptographically verified, leaving potential for DNS spoofing attacks.
Evidence: WHOIS shows 'DNSSEC: unsigned'. No DS records found at parent.
Recommendation: Consider enabling DNSSEC through GoDaddy for enhanced security. Low priority unless handling highly sensitive data.
No IPv6 Support
Domain does not have AAAA (IPv6) records. IPv6-only clients may have difficulty reaching the site.
Evidence: dig AAAA formagents.com returned no records.
Recommendation: If your hosting supports IPv6, add AAAA records for future-proofing. Low priority as most networks still support IPv4.
Accessibility Audit
WCAG compliance and usability
Violation Counts
Manual Testing Results
| Keyboard Navigation | Issues |
| Focus Management | Pass |
| Screen Reader Tested |
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| Keyboard navigation | 3 | All interactive elements reachable via Tab; focus visible with ring style; scrollable chat region on homepage/contact not keyboard accessible |
| Forms & errors | 4 | Sign-up/sign-in forms have proper labels; chat widget submit button lacks accessible name |
| Contrast & focus | 2 | Primary brand color #17ba99 has only 2.46:1 contrast against white (fails WCAG AA 4.5:1); focus indicators present |
| Semantics | 3 | Heading order issues on homepage (H2 before H1, H3 to H4 skip); proper landmarks present |
| Automated violations | 1 | 2 critical violations (button-name on 2 pages), 6 serious violations across all pages (color-contrast, scrollable-region-focusable) |
Several barriers prevent some visitors from using your site
Missing alt text, poor color contrast, and keyboard navigation issues mean some visitors cannot complete basic tasks. Fixing these expands your audience and reduces legal risk.
Key Findings
Primary Brand Color Fails WCAG AA Contrast Requirements
The primary teal color (#17ba99) used throughout the site has a contrast ratio of only 2.46:1 against white backgrounds. WCAG AA requires 4.5:1 for normal text and 3:1 for large text. This affects all CTA buttons, links, and brand elements site-wide.
Evidence: axe-core detected 29+ color contrast violations on homepage alone. Elements include: sign-up button (2.46:1), 'Talk To' text in H1 (2.46:1), 'With FormAgents' heading (2.46:1), all teal links and badges.
Recommendation: Darken the primary color to at least #0d8a70 for 4.5:1 contrast, or use a darker shade like #096b57 for better readability. Apply consistently via CSS custom property --primary.
Chat Widget Submit Button Has No Accessible Name
The submit button in the FormAgents chat widget (used on homepage and contact page) contains only an icon with no text, aria-label, or title attribute. Screen reader users cannot identify what the button does.
Evidence: axe-core critical violation on / and /contact pages. Button HTML: <button type='submit' disabled=''> with no inner text or aria attributes.
Recommendation: Add aria-label='Send message' or include visually hidden text: <span class='sr-only'>Send message</span> inside the button.
Scrollable Chat Region Not Keyboard Accessible
The chat message area uses a Radix ScrollArea component that cannot be scrolled by keyboard users. Users who cannot use a mouse have no way to scroll through conversation history.
Evidence: Element [data-radix-scroll-area-viewport] has no tabindex attribute and overflow: hidden scroll. axe-core serious violation: 'scrollable-region-focusable'.
Recommendation: Add tabindex='0' to the scroll container and ensure it can receive focus. Add role='region' and aria-label='Chat messages' for screen reader context.
Heading Level Order Issues on Homepage
The homepage has heading structure problems: an H2 ('Try FormAgents') appears before the H1, and there's a skip from H3 to H4 ('Event Registration'). This confuses screen reader users navigating by headings.
Evidence: Heading sequence: H2 'Try FormAgents' -> H1 'Build Forms...' -> H2 -> H3 -> H3 -> H2 -> H3 -> H3 -> H3 -> H3 -> H3 -> H2 -> H4 'Event Registration' -> H2. Lighthouse flagged heading-order violation.
Recommendation: Restructure headings so H1 comes first. Change 'Try FormAgents' in chat widget to a visually styled div or use aria-hidden if it's not part of document outline. Change H4 to H3 for 'Event Registration'.
Orange and Indigo Pricing Badges Have Low Contrast
The 'Most Popular' badge on pricing uses orange (#f97316) with white text at 2.8:1 contrast. The indigo 'Enterprise' badge (#6366f1) with white text has 4.46:1 - just below the 4.5:1 threshold.
Evidence: axe-core violations on homepage pricing section. Orange badge: foreground #ffffff, background #f97316, 2.8:1 ratio. Indigo badge: foreground #ffffff, background #6366f1, 4.46:1 ratio.
Recommendation: For orange: darken to #c25c04 or use dark text on light orange background. For indigo: darken slightly to #4f46e5 to achieve 4.5:1 minimum.
SEO Audit
Indexability, metadata, and structure
On-Page Coverage
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| Indexability | 4 | All pages indexable, no noindex directives, but missing robots.txt and sitemap |
| Titles/meta | 3 | All pages have titles and descriptions, but 3 pages share same title; 2 pages missing canonical |
| Structure (H1/headings) | 4 | All pages have exactly one H1; heading hierarchy is logical |
| Internal links | 4 | No broken internal links; all key pages linked from navigation |
| Schema | 0 | No structured data present on any page |
Search engines can find you, but your listings need work
Your pages are indexable but missing or duplicate meta descriptions hurt click-through rates. Structured data is minimal, which limits how Google displays your results.
Key Findings
No Structured Data (JSON-LD) on Any Page
Search engines cannot understand your business type, services, or organization details. No Organization, WebSite, or Product schema found. This limits rich result eligibility and reduces context for search engines.
Evidence: Checked all 6 pages for script[type='application/ld+json'] - none found
Recommendation: Add Organization schema to homepage with name, logo, URL, and contact info. Consider adding WebSite schema with SearchAction for site search. Add FAQ schema if FAQ content is added.
3 Pages Share Same Title 'FormAgents - Build Forms People Can Call'
The homepage, sign-up, and sign-in pages all have identical titles. This confuses search engines about page differentiation and dilutes ranking signals. Users in search results cannot distinguish between these pages.
Evidence: Title tag on /, /sign-up, and /sign-in all return 'FormAgents - Build Forms People Can Call'
Recommendation: Create unique, descriptive titles: 'Sign Up - Create Your Free FormAgents Account' for sign-up, 'Sign In - FormAgents Dashboard' for sign-in. Keep homepage title as is.
Missing Canonical URLs on Auth Pages
The /sign-up and /sign-in pages lack canonical URL tags. Without explicit canonicals, search engines must guess the preferred version, potentially causing duplicate content issues if pages are accessible via multiple URL variations.
Evidence: link[rel='canonical'] element absent on /sign-up and /sign-in pages
Recommendation: Add self-referencing canonical tags: <link rel='canonical' href='https://formagents.com/sign-up'> and <link rel='canonical' href='https://formagents.com/sign-in'>
No robots.txt File
The robots.txt file returns 404. While crawlers will assume full access, having a robots.txt is best practice for controlling crawl behavior and pointing to sitemaps.
Evidence: HTTP 404 response from https://formagents.com/robots.txt
Recommendation: Create a robots.txt file with User-agent: * and Allow: /. Include Sitemap directive pointing to sitemap.xml.
No XML Sitemap
No sitemap.xml found. Search engines must discover pages through crawling alone, which may result in slower or incomplete indexing, especially as the site grows.
Evidence: HTTP 404 response from https://formagents.com/sitemap.xml; Discovery phase found no accessible sitemaps
Recommendation: Generate an XML sitemap listing all public pages (/, /contact, /terms, /privacy). Exclude auth pages (sign-up, sign-in) if not intended for organic search. Submit to Google Search Console.
Inconsistent www/non-www Redirect Handling
Requests to www.formagents.com stay on www, while non-www requests stay on non-www. This could cause search engines to see two versions of the site, diluting link equity.
Evidence: Discovery data shows: httpsWww stays at www.formagents.com, httpsNonWww stays at formagents.com
Recommendation: Configure server to redirect all www requests to non-www (or vice versa). The canonical on homepage points to non-www, so redirect www to non-www for consistency.
GEO / AI Search Readiness
Content clarity for AI-generated answers
AI Search Readiness
| Value Proposition | Partial |
| Organization Schema | No |
| Direct Answers | Yes |
| Author Attribution | No |
| FAQ Content | Unstructured |
| Trust Signals | No |
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| Clarity & direct answers | 3 | Good meta descriptions and headlines; could be more definition-style for AI extraction |
| Entity signals | 1 | No JSON-LD markup; Organization, Product, SoftwareApplication schemas missing |
| Structured data support | 1 | Zero structured data across all 6 pages |
| Trust signals | 1 | No author attribution, no publication dates, no about page |
| Content chunking | 4 | Well-organized with clear headings, lists, and comparison tables |
AI assistants struggle to recommend your product
Your content lacks the clear, structured answers that AI search engines need. Without FAQ content and direct answers, you are invisible to tools like ChatGPT and Perplexity.
Key Findings
No Structured Data / JSON-LD on Any Page
AI search engines rely heavily on structured data to understand entities, products, and organizations. Without JSON-LD markup, AI systems must infer meaning from unstructured text, reducing the chance of being cited accurately.
Evidence: All 6 pages return hasJsonLd: false with empty jsonLdTypes arrays. No Organization, Product, SoftwareApplication, or FAQPage schemas present.
Recommendation: Add Organization schema to homepage, SoftwareApplication schema for product description, and FAQPage schema for the use cases section which functions as an FAQ.
No Author Attribution or Trust Signals
AI systems prefer content with clear attribution. Anonymous content is less likely to be cited as authoritative in AI-generated answers.
Evidence: author: null on all pages. No bylines, no 'About Us' page linked in navigation, no team information, no publication or last-updated dates visible.
Recommendation: Add an About page with team/company information. Consider adding author bylines for any blog or documentation content. Add lastModified dates to legal pages.
Value Proposition Could Be More Citable
While the homepage communicates the product well, the core value proposition uses metaphorical language that's harder for AI to extract as a direct answer.
Evidence: H1 is 'Build Forms People Can Talk To' - creative but not a direct definition. The meta description is better: 'Design a form with AI, assign it a phone number, and let anyone call to submit information 24/7.'
Recommendation: Add a clear definition-style statement early on the homepage: 'FormAgents is an AI-powered form builder that lets you create conversational forms people can fill out by calling a phone number or chatting on your website.'
FAQ-Like Content Without FAQ Schema
The 'When Phone Access Matters Most' section contains question-and-answer style content but lacks FAQPage schema, missing an opportunity for rich results and AI citation.
Evidence: 6 use cases on homepage (After-Hours Support, Senior-Friendly Service, etc.) each answer implicit questions like 'When should I use phone forms?' but have no schema markup.
Recommendation: Either convert this section to explicit FAQ format with FAQPage schema, or create a dedicated FAQ page addressing common questions about the product.
Pricing Information Not Marked Up
Clear pricing ($0, $29, $99, Enterprise) is present but not structured in a way AI can easily extract and cite.
Evidence: Pricing section uses plain text for 'Free', '$29/month', '$99/month', 'Custom' without Product or Offer schema.
Recommendation: Add Product schema with Offer pricing for each plan tier. This enables AI to accurately answer 'How much does FormAgents cost?'
UX & Funnel Analysis
User journeys, buttons, and friction
Conversion Funnel
| Step | Desktop | Mobile | Key Issue |
|---|---|---|---|
| Homepage Landing | Good | Good | Missing social proof above the fold |
| Value Understanding | Good | Good | — |
| Pricing Review | Good | Good | — |
| Signup Form | Good | Good | No post-signup expectation setting |
| Contact Sales | Good | Good | — |
Missing trust signals (testimonials, customer logos) may cause hesitation before signup, especially for enterprise buyers evaluating the product
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| First-screen clarity | 4 | Clear value proposition with 'Build Forms People Can Talk To' headline. CTA visible above fold on both desktop and mobile. Interactive demo widget on homepage engages users immediately. |
| CTA hierarchy | 4 | Primary CTA 'Get Started Free' is prominent and consistent across pages. Secondary 'See How It Works' provides alternative path. No competing CTAs causing confusion. |
| Trust signals | 3 | Transparent pricing on homepage is a trust signal. Missing customer logos, testimonials, or social proof above the fold. No security badges on signup form. No case studies or customer reviews visible. |
| Friction | 4 | Signup form is minimal (2 fields: email + password). Contact form uses conversational interface that's engaging. No unnecessary barriers - can see pricing without account. Free tier available. |
| Mobile UX | 3 | Layout adapts well to mobile with no horizontal scroll issues. CTA visible above fold on mobile. However, color contrast issues affect readability on all devices. Chat widget takes significant viewport space on mobile. |
Visitors can navigate, but the conversion path has friction
The main user flow works but CTAs are buried, the mobile experience is cramped, and there is no clear pricing page. These issues likely reduce signups.
Key Findings
Missing Social Proof Above the Fold
Homepage lacks customer testimonials, logos, or reviews in the hero section. Users must scroll significantly to find any trust indicators. For a SaaS product handling business communications, trust signals are critical for conversion.
Evidence: Reviewed homepage screenshots across desktop (1440px) and mobile (390px) viewports - no customer logos, testimonial quotes, or 'trusted by' sections visible without scrolling
Recommendation: Add 3-5 customer logos or a brief testimonial quote in the hero section, positioned near the primary CTA
Color Contrast Affects CTA Visibility
The primary brand color (#17ba99 teal) used for CTAs has a contrast ratio of only 2.46:1 against white text, well below WCAG AA requirements. This affects all conversion buttons site-wide and reduces their visual impact.
Evidence: Lighthouse accessibility audit flagged 29 color contrast failures on homepage alone. All 'Sign up', 'Get Started Free', and 'Contact Sales' buttons affected.
Recommendation: Darken the teal to at least #0f9076 to achieve 4.5:1 contrast ratio while maintaining brand identity
No Post-Signup Clarity
Signup page doesn't indicate what happens after signup - no preview of onboarding, no mention of what users will do first, no time expectation set.
Evidence: Reviewed signup page on both viewports - form includes only email/password fields with terms agreement. No 'What's next?' messaging or onboarding preview.
Recommendation: Add brief copy below signup button: 'Create your first form in under 2 minutes' or similar expectation-setting message
Contact Form Uses Product Demo Effectively
The contact/sales page uses FormAgents' own conversational form product as the contact method. This is clever product demonstration that builds confidence while capturing leads.
Evidence: Contact page at /contact shows the FormAgents chat widget with clear '~2 minutes' time estimate and email fallback option
Recommendation: This is working well - consider adding similar conversational elements to other high-intent pages
Pricing Section Well-Structured
Four-tier pricing (Free, Basic $29, Pro $99, Enterprise) is clearly laid out with feature comparison. 'Most Popular' badge on Pro tier guides decision-making. Free tier lowers initial commitment barrier.
Evidence: Pricing section visible on homepage with clear tier comparison, feature lists, and CTAs for each plan
Recommendation: Consider adding annual pricing toggle or money-back guarantee messaging to further reduce purchase anxiety
Branding & Consistency
Visual and copy coherence
Brand Consistency
| Logo | Consistent |
| Colors | Consistent |
| Typography | Consistent |
| Voice | Partial |
| Components | Consistent |
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| Visual consistency | 4 | Strong visual consistency across all pages; logo, colors, and typography are uniform |
| Copy/voice consistency | 4 | Professional yet approachable tone maintained throughout; minor shift to conversational on Contact page |
| Trust coherence | 4 | No conflicting claims found; pricing clear; copyright current (2026) |
| UI patterns | 4 | Unified component styling; intentional button color variants for pricing tiers add hierarchy |
Visual identity is mostly consistent with some gaps
Logo and colors are used consistently, but typography and component styling vary between pages. Voice is professional but inconsistent in tone across marketing vs. product pages.
Key Findings
Primary Brand Color Fails Contrast Requirements
The primary teal color (#17BA99) used for buttons, links, and accents fails WCAG 2.1 AA contrast requirements against white backgrounds
Evidence: Contrast ratio of 2.46:1 for white text on teal buttons (requires 4.5:1); 2.46:1 for teal text on white (requires 3:1 for large text)
Recommendation: Darken the primary brand color to at least #0D8A71 to meet WCAG AA standards while maintaining brand identity
Multiple CTA Button Colors on Pricing Page
Pricing section uses three different button colors: teal (Free/Basic), orange (Pro), and indigo (Enterprise)
Evidence: Homepage uses consistent teal CTAs; pricing page introduces orange (#F97316) and indigo (#6366F1) variants
Recommendation: Acceptable for visual hierarchy if intentional; document in brand guidelines to ensure consistent future usage
Contact Page Voice Shift
Contact page uses more casual, conversational tone compared to rest of site
Evidence: Contact chatbot opens with 'Hey! Thanks for reaching out...' while rest of site maintains professional tone
Recommendation: Minor observation; the casual tone may be intentional for the conversational interface context
Get actionable UX insights
Understand what's blocking conversions on your site.
Technical Implementation
Asset strategy and engineering quality
Key Metrics
Summary
Score Breakdown
| Criterion | Score | Note |
|---|---|---|
| Asset strategy | 3 | Good code splitting with 23 JS chunks; logo is SVG; font is modern WOFF2; but ~415 KiB unused JS on initial load |
| Caching & compression | 4 | Static assets have immutable 1-year cache; gzip enabled; but HTML has no-cache and logo.svg has max-age=0 |
| Third-party governance | 5 | Only Google Analytics (1 third-party script); async loaded; minimal impact on main thread |
| Engineering hygiene | 3 | No console errors or network failures; CSP violations in report-only mode; legacy JS polyfills present; missing source maps |
| Maintainability signals | 3 | Next.js with Turbopack is modern; but large bundle sizes suggest dependency review needed; no obvious deprecated patterns |
The codebase works but carries unnecessary weight
Large JavaScript bundles and unoptimized assets slow down every page load. Third-party scripts add overhead. Caching headers are missing, so returning visitors get no speed benefit.
Key Findings
Large JavaScript Bundles With Significant Unused Code
Total JavaScript is ~2.4 MB uncompressed (600 KB gzip). Lighthouse identifies 415-417 KiB of unused JavaScript on the homepage. Two bundles dominate: 949052e81f06e226.js (792 KB) and fb75085a31ae1382.js (414 KB).
Evidence: Lighthouse unused-javascript audit shows potential savings of 415 KiB on mobile, 417 KiB on desktop. Network analysis shows 23 JavaScript chunks totaling 2,475,166 bytes uncompressed.
Recommendation: Audit dependencies with bundle analyzer. Large chunks likely contain libraries loaded but not fully used on all pages. Consider dynamic imports for route-specific code.
CSP Eval Violations in Report-Only Mode
Content Security Policy is configured but uses eval() in JavaScript chunks, triggering CSP violations. Currently in report-only mode so execution continues, but this blocks enforcing CSP.
Evidence: Console shows: 'Evaluating a string as JavaScript violates CSP directive' for chunks fb75085a31ae1382.js and 949052e81f06e226.js
Recommendation: Identify which dependency uses eval() (likely a form validation library or animation) and replace with CSP-compatible alternative, or configure webpack/turbopack to avoid eval in production.
Missing Security Headers
8 of 10 recommended security headers are missing. While HSTS and X-Frame-Options are present, the site lacks X-Content-Type-Options, Referrer-Policy, Permissions-Policy, and cross-origin isolation headers.
Evidence: Headers check shows missing: Content-Security-Policy (only report-only), X-Content-Type-Options, Referrer-Policy, Permissions-Policy, Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy
Recommendation: Add X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, and consider enforcing CSP once eval issue is resolved.
Static Asset Cache Headers Inconsistent
Next.js static chunks have excellent caching (immutable, 1 year), but logo.svg and other public assets have max-age=0, causing unnecessary re-downloads.
Evidence: curl -I shows _next/static/* has 'cache-control: public, max-age=31536000, immutable' but logo.svg has 'cache-control: public, max-age=0'
Recommendation: Configure Cloud Run or CDN to serve public assets (logo.svg, images) with long cache times. Consider using Next.js Image component for automatic optimization.
Legacy JavaScript Polyfills Included
Build includes legacy JavaScript polyfills for older browser support, adding ~13 KiB of unnecessary code for modern browsers.
Evidence: Lighthouse legacy-javascript-insight audit shows 'Est savings of 13 KiB'
Recommendation: Configure browserslist target to modern browsers only if legacy support isn't needed, or use module/nomodule pattern to serve modern JS to capable browsers.
Prioritized Fix Plan
Ranked backlog of what to fix — 20 items
All pages - affects CTAs, links, buttons, and brand elements. Update in CSS variables/theme configuration.
frontend
Darken the primary teal color from #17ba99 to at least #0d8a70 to achieve WCAG AA 4.5:1 contrast ratio. Update CSS custom property --primary site-wide.
Current 2.46:1 contrast ratio fails WCAG AA requirements. axe-core detected 29+ violations on homepage alone. This affects all conversion buttons and impacts users with low vision. Flagged in accessibility, branding, UX, and per-page sections.
axe-core shows zero color-contrast violations; manual check with contrast checker tool shows 4.5:1+ ratio for all teal text/backgrounds
All pages affected (5.3-6.7s mobile LCP). Update in next.config.js, component imports, and dependency tree.
frontend
Reduce ~415 KiB of unused JavaScript. Run bundle analyzer to identify large dependencies. Implement dynamic imports for route-specific code. Remove unused libraries. Target chunks: 949052e81f06e226.js (792KB) and fb75085a31ae1382.js (414KB).
Mobile LCP is 5.3-6.7 seconds across all pages (target <2.5s). This directly impacts conversion rate and SEO rankings. ~60% of traffic is typically mobile. Flagged in performance, technical, and per-page sections.
Lighthouse mobile LCP < 2.5s; unused JavaScript < 100 KiB
Get your prioritized fix list
Know exactly what to fix first, with evidence and verification steps for each item.
Get Everything That's Wrong — $99One-time purchase. Delivered in 24 hours. 30-day money-back guarantee.
Scoring Breakdown
How we calculated the scores
Methodology
Weighted average of 11 analysis section scores. Each section score is derived from a rubric with 0-5 criterion scores, averaged and converted to 0-100 scale. Sections weighted by business impact: Performance (14), Reliability (10), Security (10), Email (5), DNS (5), Accessibility (10), SEO (10), GEO (4), UX/Funnel (14), Branding (4), Technical (14). Total weights = 100. Overall score = sum(section_score * weight) / 100.
Section Scores
| Dimension | Score | Weight | Confidence | Contribution |
|---|---|---|---|---|
| Performance | 64 | 14% | high | 9.0 |
| Reliability | 90 | 10% | high | 9.0 |
| Security | 80 | 10% | high | 8.0 |
| 56 | 5% | high | 2.8 | |
| DNS | 84 | 5% | high | 4.2 |
| Accessibility | 52 | 10% | high | 5.2 |
| SEO | 60 | 10% | high | 6.0 |
| AI Search | 40 | 4% | high | 1.6 |
| UX & Funnel | 72 | 14% | high | 10.1 |
| Branding | 80 | 4% | high | 3.2 |
| Technical | 72 | 14% | high | 10.1 |
Ready to see what's wrong with your site?
Same comprehensive methodology. Your website. Delivered in 24 hours.
Get Everything That's Wrong — $99One-time purchase. Delivered in 24 hours. 30-day money-back guarantee.