# LemAudit — White-Label SEO Audit Lead Engine for Agencies > LemAudit is a white-label SEO audit and lead generation platform built specifically for digital marketing agencies. It provides embeddable audit widgets, automated lead capture, AI-powered sales intelligence, and outreach automation. ## What LemAudit Does LemAudit helps agencies generate qualified leads by offering free SEO audits through branded widgets on their website. When a prospect submits their domain, LemAudit runs a comprehensive audit, captures their contact info, and generates AI-powered outreach drafts. ### Core Features - **Embeddable Audit Widget**: White-labeled SEO audit form for your agency website - **Automated Lead Capture**: Every audit submission becomes a qualified lead with contact info - **AI Sales Copilot**: Executive summaries, revenue impact estimates, and vulnerability reports - **AI Outreach Generation**: Personalized email and LinkedIn drafts based on audit findings - **White-Label Reports**: Branded audit reports shareable via public links - **Bulk Scanner**: Audit up to 50 domains at once for prospecting at scale - **Re-Audit Scheduling**: Automatic re-scans to create follow-up opportunities - **Webhook Integrations**: Push lead data to CRM, Slack, or Zapier - **Multi-Brand Support**: Manage multiple agency brands from one account - **Lead Qualification Pipeline**: Track leads from new → contacted → qualified → converted ## Audit Categories - Performance (page speed, Core Web Vitals) - On-Page SEO (meta tags, headings, content quality) - Security (HTTPS, mixed content, headers) - Mobile Friendliness (responsive design, viewport) - Accessibility (alt text, ARIA labels) - Technical SEO (structured data, sitemap, robots.txt) ## Pricing - **Starter**: $49/mo — 50 audits/month, 1 seat, 1 brand - **Growth**: $99/mo — 250 audits/month, 3 seats, 1 brand - **Agency**: $199/mo — unlimited audits, 10 seats, 3 brands - 14-day free trial on every plan. Full detail: https://lemaudit.com/pricing ## Company - Built by Pearl Lemon, a London-based digital marketing agency - Website: https://lemaudit.com - Support: support@lemaudit.com ## Technical Stack - React + TypeScript frontend - Cloud backend with real-time sync - Embeddable widget via script tag - 9 languages supported (EN, ES, DE, FR, PT, HI, FIL, PA, AR) ## Pages - Homepage: https://lemaudit.com/ - Free SEO audit: https://lemaudit.com/free-audit - AI visibility check: https://lemaudit.com/ai-visibility-check - Features: https://lemaudit.com/features - Use cases: https://lemaudit.com/use-cases - Pricing: https://lemaudit.com/pricing - Comparisons: https://lemaudit.com/compare - Free tools: https://lemaudit.com/tools - White-label hub: https://lemaudit.com/white-label-seo-audit - Monthly SEO audits (automated): https://lemaudit.com/monthly-seo-audit - Enterprise SEO audits: https://lemaudit.com/enterprise-seo-audit - Sample SEO audit report + downloadable template: https://lemaudit.com/seo-audit-report-sample - Testimonials: https://lemaudit.com/testimonials - Case studies: https://lemaudit.com/case-studies - Integrations: https://lemaudit.com/integrations - MCP server: https://lemaudit.com/mcp - About: https://lemaudit.com/about - FAQ: https://lemaudit.com/faq - Changelog: https://lemaudit.com/changelog - Help Center: https://lemaudit.com/help ## Free SEO Tools (no signup) - [What CMS Is This Website Running? Free Instant Check](https://lemaudit.com/tools/detect-cms) — Paste a URL and find out what CMS a website is running — WordPress, Shopify, Webflow, Drupal and 40 more — plus its framework, analytics and AI-bot policy. Free, no signup. - [Free llms.txt Generator (2026) | LemAudit](https://lemaudit.com/tools/llms-txt-generator) — Generate a valid /llms.txt file for your site in seconds. Helps ChatGPT, Claude, Perplexity and other LLMs find your most important docs. Spec-compliant, no signup. - [Free Canonical Tag Generator | LemAudit](https://lemaudit.com/tools/canonical-tag-generator) — Generate a correct tag plus matching og:url and JSON-LD mainEntityOfPage in one click. Avoid duplicate-content penalties. - [Free hreflang Tag Generator (2026) | LemAudit](https://lemaudit.com/tools/hreflang-generator) — Generate valid hreflang tags for any number of language/region variants. Includes x-default, reciprocal links, and a Sitemap XML alternative. No signup. - [Free .htaccess Redirect Generator | LemAudit](https://lemaudit.com/tools/htaccess-redirect-generator) — Generate 301, 302, 307 or 308 redirect rules for Apache .htaccess from a simple list of old/new URLs. Covers Redirect and RewriteRule formats. - [Video Sitemap Generator — Free, No Signup, Valid XML](https://lemaudit.com/tools/video-sitemap-generator) — Paste your video details, get valid video sitemap XML you can submit to Search Console straight away. Thumbnails, durations and publication dates included, checked against Google's spec. Free, no account. - [Free Sitemap Index Generator | LemAudit](https://lemaudit.com/tools/sitemap-index-generator) — Build a valid sitemapindex XML file from your child sitemap URLs. Validates absolute URLs, host consistency, the 50,000 cap and lastmod formatting. - [Free Twitter Card Generator (X) | LemAudit](https://lemaudit.com/tools/twitter-card-generator) — Generate twitter:card meta tags plus the Open Graph fallback X reads when they are missing. Validates card type, title length and image requirements. - [Free Nginx Redirect Generator | LemAudit](https://lemaudit.com/tools/nginx-redirect-generator) — Turn a list of old and new URLs into nginx return 301 rules, as location blocks or a map lookup. Catches redirect loops and duplicate sources. - [Free AGENTS.md Generator | LemAudit](https://lemaudit.com/tools/agents-md-generator) — Generate a structured AGENTS.md for your repository: setup and test commands, house conventions, off-limits paths and a pull-request checklist. - [Free robots.txt Generator & Validator | LemAudit](https://lemaudit.com/tools/robots-txt-generator) — Build a valid robots.txt with disallow rules, AI-crawler policy, crawl-delay and a sitemap directive. Warns you before you block your whole site. - [Free robots.txt Tester & Validator — Test Any URL | LemAudit](https://lemaudit.com/tools/robots-txt-tester) — Test whether Googlebot, Bingbot or an AI crawler can fetch a URL against your robots.txt. Shows the exact rule that decides, with wildcard and precedence handling. - [Free FAQ Schema Generator (JSON-LD) | LemAudit](https://lemaudit.com/tools/faq-schema-generator) — Paste your questions and answers, get valid FAQPage JSON-LD. Checks answer length, pair count and the visibility rule Google enforces. - [Free LocalBusiness Schema Generator | LemAudit](https://lemaudit.com/tools/local-business-schema-generator) — Generate LocalBusiness JSON-LD with address, geo coordinates, opening hours and profile links. Free, validated, and runs in your browser. - [Free UTM Builder — Campaign URL Generator | LemAudit](https://lemaudit.com/tools/utm-builder) — Build tagged campaign URLs with utm_source, medium, campaign, term, content and id. Normalises case and flags the mistakes that break attribution. - [White Label Rank Checker & Tracker Report — Free](https://lemaudit.com/tools/white-label-rank-tracker) — Turn keyword position data into a client-ready ranking report under your own agency name. Top-3, top-10, average position and movement worked out for you. Free, nothing stored. ## Tool Comparisons - [Ubersuggest vs Ahrefs 2026: Prices, Data, Who Wins](https://lemaudit.com/compare/ubersuggest-vs-ahrefs) — Both tools run on the same three sites, same week. Real prices, how deep the keyword and backlink data goes, and the exact point where paying for Ahrefs stops being worth it. - [Semrush vs Ahrefs (2026): Tested Side-by-Side](https://lemaudit.com/compare/semrush-vs-ahrefs) — We ran Semrush and Ahrefs on the same three reference sites in June 2026. Pricing, keyword data, backlinks, site audit, AI features, and an honest verdict on which one fits your workflow. - [Screaming Frog vs Sitebulb (2026): Crawler Showdown](https://lemaudit.com/compare/screaming-frog-vs-sitebulb) — We crawled the same three sites with Screaming Frog and Sitebulb in June 2026. Speed, depth, hints, JS rendering, pricing — and which one to pick for which job. - [Moz vs Semrush 2026: Is Moz Still Worth Paying For?](https://lemaudit.com/compare/moz-vs-semrush) — Same three sites, both tools, same week. Domain Authority vs Authority Score, keyword and link data side by side, real prices — and the honest answer on whether Moz still earns its fee. - [Surfer vs Clearscope (2026): Content Optimisation Compared](https://lemaudit.com/compare/surfer-vs-clearscope) — We optimised the same three briefs in Surfer and Clearscope in June 2026. Term coverage, brief quality, AI writer, integrations, pricing — and which one is worth its sticker. ## White-Label SEO Resources - [White Label SEO Audit Services You Resell As Your Own](https://lemaudit.com/white-label-seo-audit) — Resell SEO audits under your own brand: your logo, your colours, your report domain, no vendor mark. Free to start, white-labelling from $49/mo. - [White Label SEO Software for Agencies | LemAudit](https://lemaudit.com/white-label-seo-software) — A white label SEO platform built for agency lead generation: branded audits, multi-brand accounts, team seats, webhooks and an MCP server. - [White Label SEO Audit Tool — Free Tier, Embed On Your Site](https://lemaudit.com/white-label-seo-audit-tool) — Embed a white label SEO audit tool on your own site in one script tag. Your logo, your colours, no vendor mark. Every submission becomes a scored lead. Free to start. - [White Label SEO Reports & Reporting for Agencies](https://lemaudit.com/white-label-seo-reporting) — Branded SEO reports on your own domain: logo, colours, custom commentary, real PDF export, scheduled re-audits and change diffs sent from your brand. - [White Label Ahrefs Report? Here Is What Works Instead](https://lemaudit.com/white-label-ahrefs-alternative) — Ahrefs will not let you rebrand a client report. This is the white label alternative agencies use: your logo, your domain, your PDF — from $49/mo. ## Industry SEO Audits - [Free SEO Audit for Dental Practices](https://lemaudit.com/free-seo-audit/dentists) - [Free SEO Audit for Plumbing Companies](https://lemaudit.com/free-seo-audit/plumbers) - [Free SEO Audit for Restaurants](https://lemaudit.com/free-seo-audit/restaurants) - [Free SEO Audit for SaaS Companies](https://lemaudit.com/free-seo-audit/saas) - [Free SEO Audit for Law Firms](https://lemaudit.com/free-seo-audit/law-firms) - [Free SEO Audit for E-commerce Stores](https://lemaudit.com/free-seo-audit/e-commerce-stores) - [Free SEO Audit for Real Estate Sites](https://lemaudit.com/free-seo-audit/real-estate) - [Free SEO Audit for Accounting Firms](https://lemaudit.com/free-seo-audit/accountants) - [Free SEO Audit for Gyms and Fitness Studios](https://lemaudit.com/free-seo-audit/gyms) - [Free SEO Audit for Chiropractic Clinics](https://lemaudit.com/free-seo-audit/chiropractors) - [Free SEO Audit for Roofing Companies](https://lemaudit.com/free-seo-audit/roofers) - [Free SEO Audit for HVAC Companies](https://lemaudit.com/free-seo-audit/hvac) - [Free SEO Audit for Med Spas and Aesthetic Clinics](https://lemaudit.com/free-seo-audit/medspas) - [Free SEO Audit for Veterinary Clinics](https://lemaudit.com/free-seo-audit/veterinarians) - [Free SEO Audit for Personal Injury Law Firms](https://lemaudit.com/free-seo-audit/personal-injury-lawyers) - [Free SEO Audit for Electrical Contractors](https://lemaudit.com/free-seo-audit/electricians) - [Free SEO Audit for Landscaping Companies](https://lemaudit.com/free-seo-audit/landscapers) - [Free SEO Audit for Physiotherapy Clinics](https://lemaudit.com/free-seo-audit/physiotherapists) - [Free SEO Audit for Recruitment Agencies](https://lemaudit.com/free-seo-audit/recruiters) - [Free SEO Audit for Car Dealerships](https://lemaudit.com/free-seo-audit/car-dealerships) - [Free B2B SEO Audit](https://lemaudit.com/free-seo-audit/b2b) - [Free Shopify SEO Audit](https://lemaudit.com/free-seo-audit/shopify) - [Free Magento SEO Audit](https://lemaudit.com/free-seo-audit/magento) - [Free Squarespace SEO Audit](https://lemaudit.com/free-seo-audit/squarespace) - [Free Webflow SEO Audit](https://lemaudit.com/free-seo-audit/webflow) - [Free WooCommerce SEO Audit](https://lemaudit.com/free-seo-audit/woocommerce) - [Free Wix SEO Audit](https://lemaudit.com/free-seo-audit/wix) - [Free SEO Audit for Healthcare Providers](https://lemaudit.com/free-seo-audit/healthcare) - [Free SEO Audit for Nonprofits](https://lemaudit.com/free-seo-audit/nonprofits) - [Free SEO Audit for Franchise Businesses](https://lemaudit.com/free-seo-audit/franchises) - [Free SEO Audit for Hotels](https://lemaudit.com/free-seo-audit/hotels) - [Free SEO Audit for Construction Companies](https://lemaudit.com/free-seo-audit/construction) - [Free SEO Audit for WordPress Sites](https://lemaudit.com/free-seo-audit/wordpress) - [Free SEO Audit for BigCommerce Stores](https://lemaudit.com/free-seo-audit/bigcommerce) - [Free SEO Audit for Drupal Sites](https://lemaudit.com/free-seo-audit/drupal) - [Free SEO Audit for Marketing Agencies](https://lemaudit.com/free-seo-audit/marketing-agencies) - [Free SEO Audit for Cleaning Companies](https://lemaudit.com/free-seo-audit/cleaning-services) - [Free SEO Audit for Pest Control Companies](https://lemaudit.com/free-seo-audit/pest-control) - [Free SEO Audit for Moving Companies](https://lemaudit.com/free-seo-audit/moving-companies) - [Free SEO Audit for Solar Installers](https://lemaudit.com/free-seo-audit/solar-installers) - [Free SEO Audit for Opticians](https://lemaudit.com/free-seo-audit/opticians) - [Free SEO Audit for Insurance Brokers](https://lemaudit.com/free-seo-audit/insurance-brokers) - [Free SEO Audit for Mortgage Brokers](https://lemaudit.com/free-seo-audit/mortgage-brokers) - [Free SEO Audit for Wedding Venues](https://lemaudit.com/free-seo-audit/wedding-venues) - [Free SEO Audit for Photographers](https://lemaudit.com/free-seo-audit/photographers) - [Free SEO Audit for Interior Designers](https://lemaudit.com/free-seo-audit/interior-designers) - [Free SEO Audit for Tutoring Companies](https://lemaudit.com/free-seo-audit/tutoring-companies) - [Free SEO Audit for Manufacturers](https://lemaudit.com/free-seo-audit/manufacturers) - [Free SEO Audit for Financial Advisors](https://lemaudit.com/free-seo-audit/financial-advisors) - [Free SEO Audit for Immigration Law Firms](https://lemaudit.com/free-seo-audit/immigration-lawyers) - [Free SEO Audit for Family Law Firms](https://lemaudit.com/free-seo-audit/family-lawyers) - [Free SEO Audit for Orthodontic Practices](https://lemaudit.com/free-seo-audit/orthodontists) - [Free SEO Audit for Dermatology Clinics](https://lemaudit.com/free-seo-audit/dermatologists) - [Free SEO Audit for Podiatry Clinics](https://lemaudit.com/free-seo-audit/podiatrists) - [Free SEO Audit for Flooring Contractors](https://lemaudit.com/free-seo-audit/flooring-contractors) - [Free SEO Audit for Pool Service Companies](https://lemaudit.com/free-seo-audit/pool-services) - [Free SEO Audit for Security Companies](https://lemaudit.com/free-seo-audit/security-companies) - [Free SEO Audit for IT Support and MSP Websites](https://lemaudit.com/free-seo-audit/it-support-companies) - [Free SEO Audit for Staffing Agencies](https://lemaudit.com/free-seo-audit/staffing-agencies) - [Free SEO Audit for Catering Companies](https://lemaudit.com/free-seo-audit/catering-companies) - [Free SEO Audit for Car Repair Shops and Garages](https://lemaudit.com/free-seo-audit/car-repair-shops) - [Free SEO Audit for Locksmiths](https://lemaudit.com/free-seo-audit/locksmiths) - [Free SEO Audit for Hair Salons](https://lemaudit.com/free-seo-audit/hair-salons) - [Free SEO Audit for Architecture Practices](https://lemaudit.com/free-seo-audit/architects) ## Help Center (AI-friendly Markdown mirrors) Every Help Center article is mirrored as plain Markdown for AI assistants: - Index: https://lemaudit.com/help-md/index.md - Sitemap: https://lemaudit.com/sitemap-help.xml - Article URL pattern: https://lemaudit.com/help-md/{category}/{slug}.md Categories: getting-started, audits, leads, outreach, branding, reports, troubleshooting, billing, integrations, advanced ## Help Center Articles > Auto-registered from src/lib/helpKnowledgeBase.ts. Each entry links > to the plain-Markdown mirror. Edits here are overwritten on next build. ### Getting Started - [How do I set up my agency](https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency) — Open Branding in the left sidebar, upload a logo, set 2 brand colors, and paste a Calendly link. - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) — Copy the 1-line script from Widget → Install in the LemAudit sidebar and paste it just before on every page where you want the audit form. - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) — Run a manual audit from the Dashboard against any URL — that one action creates your first lead in under 60 seconds. - [What does the dashboard show](https://lemaudit.com/help/getting-started/what-does-the-dashboard-show) — Open the Dashboard from the left sidebar to see four live tiles: total leads, hot leads, recent activity, and your conversion funnel. ### SEO Audits - [How do SEO audits work](https://lemaudit.com/help/audits/how-do-seo-audits-work) — An audit fetches the target site's HTML once, runs a free Google PageSpeed check on it, and scores 5 categories: SEO, performance, security, mobile, accessibility. - [How is the health score calculated](https://lemaudit.com/help/audits/how-is-the-health-score-calculated) — The health score is a weighted average of 5 category scores, each on a 0–100 scale: SEO 30%, performance 25%, security 20%, mobile 15%, accessibility 10%. - [What types of issues does the audit find](https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find) — Each audit returns a list of findings tagged with 1 of 5 severities: critical, high, medium, low, info. - [Can I re-audit a lead's website](https://lemaudit.com/help/audits/can-i-re-audit-a-lead-s-website) — Yes. ### Leads & Pipeline - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) — Open Leads in the sidebar. - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) — Sort the Leads table by health score ascending and start at the top. - [What information does a lead detail page show](https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show) — Click any lead row in the Leads table to open its detail page. ### AI Outreach - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) — Every audit triggers a personalised email draft that quotes the prospect's top 3 findings, names 1 quick win, and ends with a Calendly CTA. - [Does LemAudit generate LinkedIn messages](https://lemaudit.com/help/outreach/does-lemaudit-generate-linkedin-messages) — Yes. - [Can I customize outreach templates](https://lemaudit.com/help/outreach/can-i-customize-outreach-templates) — Yes. ### White-Label & Branding - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) — Open Branding → General, drop a PNG or SVG into the logo box, and click Save. - [How do I customize brand colors](https://lemaudit.com/help/branding/how-do-i-customize-brand-colors) — Open Branding → General, set 2 hex colors (primary and accent), and click Save. - [Is the audit widget white-labeled](https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled) — Yes. - [Can I manage multiple brands](https://lemaudit.com/help/branding/can-i-manage-multiple-brands) — Yes, on the Agency plan. ### Reports & Sharing - [How do public audit reports work](https://lemaudit.com/help/reports/how-do-public-audit-reports-work) — Every audit has a public link you can share without a login. - [Can I export audit reports as PDF](https://lemaudit.com/help/reports/can-i-export-audit-reports-as-pdf) — Open any lead, click Download PDF in the top right. ### Troubleshooting - [An audit failed. What should I do](https://lemaudit.com/help/troubleshooting/an-audit-failed-what-should-i-do) — Click Re-Audit once. - [The widget isn't showing on my website. What's wrong](https://lemaudit.com/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong) — Open browser devtools (F12) on the host page and look at the Console tab. - [I'm not getting any leads. What should I do](https://lemaudit.com/help/troubleshooting/i-m-not-getting-any-leads-what-should-i-do) — Submit your own real audit through the widget on the host page. - [Lead notification emails aren't arriving. Why](https://lemaudit.com/help/troubleshooting/lead-notification-emails-aren-t-arriving-why) — Check 3 things in this order: your spam folder, the Branding → Notifications toggle, and the reply-to address. ### Plans & Billing - [What plans are available](https://lemaudit.com/help/billing/what-plans-are-available) — 3 plans: Starter at $49/mo (50 audits), Growth at $99/mo (200 audits), Agency at $199/mo (unlimited audits + webhooks + multi-brand). - [What are audit limits per plan](https://lemaudit.com/help/billing/what-are-audit-limits-per-plan) — Starter gives you 50 audits/month, Growth 200, Agency unlimited. - [Can I cancel my subscription](https://lemaudit.com/help/billing/can-i-cancel-my-subscription) — Yes. - [Is there a free trial](https://lemaudit.com/help/billing/is-there-a-free-trial) — Yes — 14 days of the Growth plan, no credit card required. ### Integrations - [How do I connect Calendly](https://lemaudit.com/help/integrations/how-do-i-connect-calendly) — Open Branding → Booking CTA, paste your Calendly URL (e.g. - [How do webhook notifications work](https://lemaudit.com/help/integrations/how-do-webhook-notifications-work) — Paste a webhook URL into Branding → Notifications → Webhook URL. ### Advanced - [How does the Bulk Scanner work](https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work) — Open Bulk Scanner in the sidebar. - [How does automatic re-auditing work](https://lemaudit.com/help/advanced/how-does-automatic-re-auditing-work) — Toggle Auto re-audit on any lead and LemAudit re-runs the audit pipeline every 30 days. - [How do I manage multiple agency brands](https://lemaudit.com/help/advanced/how-do-i-manage-multiple-agency-brands) — Open Multi-Brand in the sidebar (Agency plan), click New brand, and configure 1 logo, 2 colors, 1 Calendly URL, and 1 widget script per brand. --- # Full content corpus # https://lemaudit.com/tools/agents-md-generator.md --- title: Free AGENTS.md Generator slug: agents-md-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro `AGENTS.md` is a plain markdown file at the root of a repository that tells coding agents how to work in it: how to install, how to run the tests, what the house style is, and which paths to leave alone. It is the same idea as a README, aimed at a different reader. A README explains the project to a person deciding whether to use it. AGENTS.md explains the project to something that is about to change it. The convention spread quickly because the alternative is worse. Without it, an agent infers your conventions from whatever files it happened to read, which means it will find one class component in a hooks codebase and write three more. With it, the rules are stated once and applied consistently. This generator asks a handful of questions and returns a structured file. It runs entirely in your browser; nothing you type is uploaded. ## What belongs in the file **Commands, above all.** The install, dev, test and build commands are the highest-value lines in the file, because they let an agent verify its own work instead of handing you code it never ran. If you include nothing else, include the test command. **A short summary.** Two or three sentences on what the project is and what it must not break. An agent uses this to judge whether a change is in scope. **Conventions.** State the decisions a newcomer could not infer safely. Not general advice — your specific rules. "All colours come from tokens in index.css" is useful. "Write clean code" is not. **Boundaries.** Generated directories, migration folders, vendored code, anything with a deployment side effect. Naming these prevents the most expensive category of mistake. **A pull-request checklist.** Agents follow explicit checklists far more reliably than prose. Four or five boxes covering tests, build, secrets and scope catches most of what reviewers would otherwise catch by hand. ## What to leave out Do not restate your README. If the file is long, the parts that matter get diluted. Do not include secrets, internal hostnames or anything you would not put in a public repository. The file is committed, and it is read by tools you may not control. Do not write aspirational rules. If half the codebase violates a convention, an agent reading the file will see the contradiction and follow the code, not the file. Fix the code or drop the rule. ## Nesting and precedence AGENTS.md applies to its own directory and everything below it. A file deeper in the tree overrides the one above it for that subtree, which is how monorepos give each package its own commands while sharing repository-wide conventions at the root. A direct instruction from a human beats both. The file sets defaults; the person in the conversation sets the task. ## AGENTS.md, llms.txt and robots.txt These three are often confused because all three are plain text files aimed at machines. They do different jobs. `robots.txt` tells crawlers which URLs they may fetch. It is about access. `llms.txt` tells language models which pages on your site are worth reading and how your content is organised. It is about discovery and citation. Our [llms.txt generator](/tools/llms-txt-generator) builds that one. `AGENTS.md` tells coding agents how to work in your repository. It is about contribution, and it lives in the repo rather than on the web. A public product might reasonably have all three, serving three different audiences. ## Keeping it accurate The failure mode of this file is staleness. A test command that changed six months ago is worse than no test command, because an agent will run it, see it fail, and start debugging your instructions instead of the task. Treat it like any other configuration: when the commands change, update the file in the same pull request. A short accurate file beats a thorough stale one every time. ## FAQ ### Is AGENTS.md a standard? It is a convention rather than a specification. Several agent tools read it, and more keep adopting it because the format is simple and there is no competing proposal. Nothing breaks if a tool ignores it. ### Do I need one for a small project? If any agent touches the repository, yes, and it can be short. Ten lines with the test command and three conventions already prevents most of the guessing. ### Should I commit it? Yes. Its value comes from travelling with the code, so every contributor and every tool sees the same rules. ### Can I have several in a monorepo? That is the recommended pattern. One at the root for shared rules, one per package for its own commands. The closest file to the code being changed wins. ### Will agents actually follow it? Mostly, and they follow concrete instructions far better than vague ones. Commands and checklists are followed almost always; broad stylistic principles less reliably. Write rules that can be checked. ### How is this different from a contributing guide? Same intent, different reader. A contributing guide explains process to humans: how to open an issue, how review works, the code of conduct. AGENTS.md gives an agent the operational facts it needs to make a correct change. Keep both if you have both audiences. # https://lemaudit.com/tools/canonical-tag-generator.md --- title: Free Canonical Tag Generator slug: canonical-tag-generator last_reviewed: 2026-06-30 author: editorial source: LemAudit Free Tools --- ## Intro The canonical tag is one of those small pieces of HTML that quietly decides whether your site ranks or gets clobbered by duplicate-content collapse. When Google's crawler sees the same content reachable at multiple URLs — `?utm_source=x`, `/index.html` vs `/`, `www` vs apex, HTTP vs HTTPS, paginated archives, faceted product listings — it has to choose one URL to keep in the index. The canonical tag is how you tell it which. This generator outputs the three pieces Google's crawler actually checks for consistency on a canonical page: 1. **The `` tag** — the primary signal. Lives in the ``. Absolute URL, https, no fragment. 2. **The `` tag** — the Open Graph equivalent. Used by Facebook, LinkedIn, Slack, and increasingly by search engines as a corroborating signal. 3. **The JSON-LD `mainEntityOfPage` reference** — the structured-data version. Tells crawlers that the `WebPage` schema applies to *this* URL, not the variant they crawled. All three need to agree. If your `` says `https://example.com/blog/post` but your `og:url` says `https://example.com/blog/post?utm_source=newsletter`, you've handed Google an ambiguous signal and it gets to pick. Often it picks the wrong one. This generator keeps them in sync automatically. The tool runs entirely in your browser — paste your URL, get three pre-formatted snippets, copy them into your page template. No signup, no log, no network call. ## When not to use this Don't use a self-referencing canonical to "fix" duplicate content that should be handled at the routing layer. If `www.example.com` and `example.com` are both serving the same pages with different canonicals, the real fix is a 301 redirect from one to the other, not a canonical tag. Canonicals are a hint to Google; redirects are a directive. Use redirects when you can. Don't canonicalize across languages or substantially different content. A canonical tag tells Google "this is the same page, prefer this URL". If you're pointing your German page at your English page, you're telling Google your German content is a duplicate of your English content — and Google will drop it from the index. Use `hreflang` for that case instead; we have a [hreflang generator](/tools/hreflang-generator) for that. Don't canonicalize a paginated series to page 1. That was a 2014 best practice that Google publicly retired. Today, each page in the series should canonicalize to itself, and you should use `rel="next"` / `rel="prev"` (or just let Google figure it out). ## FAQ ### Can I have multiple canonical tags on one page? No. Google treats that as a conflict and may ignore both. One `` per page, in the ``, before any script that might inject another one. ### What's the difference between a canonical tag and a 301 redirect? A canonical tag is a hint — Google can ignore it if other signals strongly suggest a different canonical. A 301 redirect is a directive — the user (and Googlebot) never see the alternate URL because the server forces them to the destination. Use a redirect when you can; use a canonical when the duplicate URL needs to keep working (e.g. tracking parameters). ### Should the canonical URL include query strings? Generally no — strip tracking parameters, sort parameters, anything not required to render the page. The exception is when the query string genuinely changes the page content (e.g. `?product_id=42` on a product page). In that case the canonical should include it. ### Why include the JSON-LD snippet? Because Google's structured-data parser uses `mainEntityOfPage` to disambiguate which page the schema describes. If you have `Article` schema with `mainEntityOfPage` pointing at the canonical URL, you've added a second corroborating signal that this is the version Google should index. ### Does this generator validate the URL? Yes — it checks that the URL is absolute, prefers HTTPS, and warns if there's a fragment (`#`) that Google will ignore. It doesn't verify the URL is reachable; that's a job for the [CMS detector tool](/tools/detect-cms). ### Does this work for AMP pages? For AMP, the canonical tag on the AMP page should point at the non-AMP version (and the non-AMP page should declare the AMP version via ``). The snippet from this generator is correct for both directions — just paste the right URL. # https://lemaudit.com/tools/detect-cms.md --- title: What CMS Is This Site Using? — Free Detector slug: detect-cms last_reviewed: 2026-06-30 author: editorial source: LemAudit Free Tools --- ## Intro You can usually tell what CMS a site runs in 5 seconds by viewing the source — but only if you know the fingerprints. This tool does that automatically and adds the seven things the Wappalyzer browser extension never shows you: the site's AI-bot policy, its agent-interface readiness, its DNS email auth, its server headers, its meta-tag preview, its analytics stack, and a confidence score for the CMS detection itself. Everything runs in real time when you paste a URL. We fetch the live HTML, parse the response headers, fetch the site's `/robots.txt` and `/llms.txt`, and match the responses against a pattern library covering 60+ CMS platforms (WordPress, Shopify, Webflow, Wix, Squarespace, Ghost, Drupal, Joomla, Magento, Sitecore, Contentful, Sanity, Strapi, etc.), 30+ JavaScript frameworks, and 25+ analytics tags. The whole audit takes 4–8 seconds and costs nothing. There's no signup, no API key, no rate limit on casual use, and no email gate before you see the result. ## When not to use this This is a single-URL detection tool. If you need to build a **list** of every Shopify store on the internet, or every site that uses Klaviyo, you want a crawl-based service like [BuiltWith](https://builtwith.com), [Bloomberry](https://bloomberry.com) or [StoreLeads](https://storeleads.app) — they crawl millions of sites and let you filter and export. We're the opposite tool: one URL, deep report, no database lookups. The detection also can't catch: - Custom CMSes that don't ship any public fingerprint - Pages served from a CDN edge that strips the underlying server headers - Sites that intentionally obfuscate their stack with a reverse proxy or static export - Server-only analytics (Snowplow, Segment server-side) where the SDK never touches the browser If we report "no CMS fingerprint matched", that usually means one of those four — not that the site is broken. ## FAQ ### Is this really free? Yes, with no signup. We run the probe server-side because some checks (robots.txt, DNS, headers) can't run from a browser. Results aren't saved unless you click "Save report". ### How accurate is the CMS detection? Each match comes with a confidence score from 0 to 100%. Anything above 80% is multiple independent signals agreeing (e.g. a `wp-content/` asset URL **and** a `generator` meta tag **and** a `wp-json` REST endpoint). Below 60%, treat the result as "best guess based on one weak signal". ### Why include AI-bot policy and DNS checks? Because that's the gap competitors don't fill. Knowing the CMS is table stakes; knowing whether the site is blocking GPTBot, missing SPF, or has no `llms.txt` is what tells you whether the site is technically ready for the next two years of search. We surface those signals in the same report so you don't need three separate tools. ### Can I detect multiple URLs at once? Not from this page. For bulk detection of up to 50 domains in one batch, log into the LemAudit dashboard and use the bulk scanner — it runs the same probe per domain and gives you a CSV export. ### Does this replace the Wappalyzer browser extension? For the technology-detection slice, yes — and it adds the AI-readiness signals Wappalyzer doesn't ship. The browser extension is still nicer for casual click-through-many-sites browsing because it lives in your toolbar. We're built for the moment you've already landed on a URL and want a full audit-class report. ### How does the AI-bot policy check actually work? We fetch `/robots.txt` from the target domain and parse every `User-agent:` block. For each known AI crawler — `GPTBot`, `ChatGPT-User`, `ClaudeBot`, `Claude-Web`, `PerplexityBot`, `Google-Extended`, `CCBot`, `Bytespider`, `anthropic-ai`, and a dozen others — we resolve whether the most specific matching rule allows or disallows the agent. The result is the same allow/disallow decision the crawler itself would compute, surfaced as a per-agent table rather than a single yes/no. ### What if the site blocks my scan? Some sites return a 403 or a Cloudflare challenge to non-browser requests. When that happens we fall back to a header-only probe and flag the limitation in the report — you'll see "blocked by WAF" rather than partial data masquerading as a clean result. If you need to scan a site that aggressively blocks bots, run the audit from inside its admin panel where you control the headers. # https://lemaudit.com/tools/faq-schema-generator.md --- title: Free FAQ Schema Generator slug: faq-schema-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro FAQ schema is a block of JSON-LD that labels the questions and answers already on a page so machines can read them as structured pairs rather than guessing from headings. It uses the schema.org `FAQPage` type, sits in a script tag in your head, and takes about a minute to add. This generator takes your questions and answers in the format you probably already have them — a question on one line, its answer below — and returns valid markup. Everything happens in your browser, so nothing you paste leaves your machine. ## What changed, and why it is still worth doing Google narrowed FAQ rich results in 2023. The expandable question list under a search result is now shown mainly for well-known authoritative government and health sites, so most businesses will add this markup and see no visual change in Google's blue links. That is not an argument against adding it, for three reasons. Answer engines read it. ChatGPT, Perplexity and Google's AI surfaces parse structured question and answer pairs far more reliably than they parse an accordion built from divs. Clean pairs are the easiest possible format for a model to lift and cite. Bing still shows FAQ rich results more liberally than Google. And the markup forces a discipline that helps regardless of any rich result: writing an actual answer, in full sentences, immediately after the question. Pages structured that way perform better in every retrieval system, markup or not. ## The rule that gets sites penalised Every question and every answer in the markup must be visible to a visitor on the same page. Not behind a login, not on another page, not in an accordion that never renders. Google treats markup describing invisible content as a structured-data violation, and manual actions for it apply to the whole domain, not just the page. Accordions are fine. Content that is present in the HTML but collapsed by default counts as visible. Content injected only after a click, from a separate request, does not. ## How many questions, and which ones Three to eight questions is the useful range for one page. One or two rarely reads as an FAQ. Twenty is a sign the questions belong on their own page, or that half of them are filler. Pick the questions from evidence rather than imagination. Your support inbox and live-chat logs are the best source. Search Console's query report shows the question-shaped terms already reaching the page. The "People also ask" box on the target query shows what the engine believes is adjacent. Anything you invent to fill a slot will read like filler, because it is. ## Writing answers that get quoted Lead with the answer. A model extracting a snippet takes the first sentence, so "An audit typically takes three to five working days" beats "There are several factors affecting how long an audit takes." Keep each answer to two to four sentences, forty words minimum. One-line answers get dropped by most extractors as insufficient. Long answers get truncated at an arbitrary point, usually mid-argument. Include the specific detail a competitor would not: the actual price band, the actual turnaround, the actual limitation. Generic answers are the ones that never get cited, because there is no reason to prefer yours. Avoid links and formatting inside the answer text. The markup carries plain text; HTML inside it is either stripped or breaks parsing. ## Where the markup goes One `FAQPage` block per page. Two blocks compete and neither is guaranteed to win. Put it in the head as a `application/ld+json` script tag. It works in the body too, but head placement is conventional and easier to audit later. If the page is primarily something else — a product page, a service page — with an FAQ section at the bottom, you can still add `FAQPage` markup for that section, but check it does not conflict with your primary type. Where both matter, nest the FAQ inside the main entity rather than declaring two competing top-level types. ## Validating Two checks before you consider it done. Google's Rich Results Test confirms the syntax parses and shows what, if anything, is eligible. The schema.org validator is stricter and catches vocabulary errors the Google tool passes over. Then view the rendered page source, not your template, and confirm the script tag is actually there. Tag managers, caching layers and CMS sanitisers all strip script tags with some regularity, and a block that never reached the HTML validates perfectly in the tool and does nothing in the wild. ## FAQ ### Does FAQ schema still produce rich results? Rarely in Google, and mostly for authoritative government and health domains. Bing shows it more often, and answer engines use it heavily. Add it for machine readability rather than for the visual result. ### Can I mark up questions that appear on a different page? No. The markup must describe content visible on the page carrying it. Doing otherwise risks a manual action. ### Should every page have FAQ markup? No. Only pages with a genuine question and answer section that visitors read. Bolting an FAQ onto every page to add markup produces thin duplicated content and helps nothing. ### What is the difference between FAQPage and QAPage? `FAQPage` is for questions the site owner wrote and answered. `QAPage` is for a single user-submitted question with community answers, like a forum thread. Using the wrong one is a common validation failure. ### Can answers contain links or lists? The specification allows limited HTML, but support is inconsistent and links inside answers are usually stripped. Plain text is safer. ### Will this help my page rank higher? Structured data is not a ranking factor by itself. It affects how your content can be presented and how easily it can be extracted, which affects clicks and citations rather than position. # https://lemaudit.com/tools/hreflang-generator.md --- title: Free hreflang Tag Generator (2026) slug: hreflang-generator last_reviewed: 2026-06-30 author: editorial source: LemAudit Free Tools --- ## Intro `hreflang` is the most error-prone tag in international SEO. It tells Google which page to serve to which language and region, and it has three rules that look simple and bite hard in practice: 1. **Every variant must list every other variant**, including itself. If your German page lists the English page but the English page doesn't list the German page back, Google ignores the whole cluster. 2. **Language and region codes must be valid.** ISO 639-1 for language (lowercase, two letters), ISO 3166-1 alpha-2 for region (uppercase, two letters). `en-uk` is invalid; `en-GB` is correct (because the country code is GB, not UK). 3. **There should be an `x-default`.** This is the page Google serves when no other variant matches the user's language. Without it, users in Spanish-speaking markets you don't target see whatever Google thinks is the closest match — often wrong. This generator handles all three. Paste your `lang-REGION | URL` pairs into the textarea, pick whether you want the `` tag version (for ``) or the sitemap XML version (for `sitemap.xml`), and we'll generate reciprocal links between every pair, validate the language codes, normalize the casing, and warn you if `x-default` is missing. The sitemap XML output is what most international sites actually use in production. Repeating dozens of `` tags in every page's `` is a maintenance nightmare. Defining them once in a sitemap is the standard pattern for large multi-language sites — Google supports both equally. ## When not to use this Don't use `hreflang` to differentiate pages that aren't actually translations or regional variants of the same content. If your "US" and "UK" pages have different products, different pricing, different layouts — they're different pages, not `hreflang` variants. Tagging them as alternates can cause Google to swap them at the SERP level in confusing ways. Don't use `hreflang` as a fix for thin translations. If your "Spanish" version is auto-translated boilerplate with the same product names in English, Google's quality filters will demote the Spanish variant regardless of `hreflang`. Fix the content first. Don't use `hreflang` when a canonical tag would do the job. Two pages with substantially the same English content in different regions (US vs UK with the same SKUs) often work better as a canonical-tag pair — one canonical, two URLs with `Vary: Accept-Language`. We have a [canonical tag generator](/tools/canonical-tag-generator) for that case. ## FAQ ### What's the difference between `en` and `en-US`? `en` targets all English speakers regardless of region. `en-US` targets English speakers in the United States specifically. If you have one English page that serves everyone, use `en`. If you have a US version and a UK version, use `en-US` and `en-GB`. Don't mix — if you use `en-US`, also use `en-GB` (or `en` as a fallback) for British users. ### Why does the sitemap XML repeat every URL? Because each page in the cluster needs to list every alternate, including itself. In a `` implementation you'd repeat the same block in every page; the sitemap version is the same data in one file. There's no shortcut — Google requires the reciprocal listing. ### What about the `region` attribute by itself, like `hreflang="us"`? That's invalid. `hreflang` accepts language alone (`en`), or language-region (`en-US`). Region alone is not a supported value. Our generator will warn you and skip lines like that. ### Does Google use `hreflang` for SEO ranking? `hreflang` doesn't change rankings — it changes which URL Google serves to which user. A page with 1000 backlinks will still rank for its target market; `hreflang` just makes sure the right language version appears. ### Should I include `hreflang` on a single-language site? No. If you only serve one language to one region, `hreflang` does nothing for you. Add it the first time you launch a translated or regional variant. ### Can I use this for region-only differences (USD vs GBP)? Yes, but with a caveat: if the content is mostly identical and only currency differs, consider using one URL with currency switching via cookie or query string, and a single canonical tag. `hreflang` works for that case but is overkill. # https://lemaudit.com/tools/htaccess-redirect-generator.md --- title: Free .htaccess Redirect Generator slug: htaccess-redirect-generator last_reviewed: 2026-06-30 author: editorial source: LemAudit Free Tools --- ## Intro Most SEO traffic losses during a site migration aren't caused by content changes — they're caused by missing or broken redirects. When you move a page from `/old-blog-post` to `/blog/new-post`, every backlink, every Google index entry, every bookmark needs to forward cleanly to the new URL. Without that, Google drops the old URL from its index, the inbound link equity evaporates, and rankings collapse for a quarter or two. `.htaccess` is the Apache config file where you put those redirects. It has two formats and the choice between them matters more than most people realize: - **`Redirect`** (mod_alias) is the simple form. One line per redirect. No regex. Easy to read, easy to break — a single typo silently drops every rule below it. - **`RewriteRule`** (mod_rewrite) is the recommended form. Supports regex anchors, query-string preservation, conditional rules. More verbose, but far more robust at scale. This generator outputs either format from a simple list of `/old | /new` pairs. Pick your HTTP status code (301 for permanent SEO migrations, 302/307 for temporary, 308 if you need to preserve POST requests), choose your format, paste your pairs, copy the result into your `.htaccess`. Two technical details we handle automatically that often get wrong by hand: 1. **Regex escaping.** Paths with dots, parentheses, or `+` characters need to be escaped in `RewriteRule` patterns or they'll match unintended URLs. We escape them for you. 2. **Query-string preservation.** The `[QSA]` flag (Query String Append) on `RewriteRule` makes sure `?utm_source=x` survives the redirect. Without it, every tracking parameter gets stripped — bad for analytics, bad for campaign attribution. The output always includes a leading comment with the generation date so you can find the block later and a count of the rules included. ## When not to use this Don't use `.htaccess` redirects if you're not on Apache. Nginx, Caddy, IIS, Cloudflare Workers, Netlify, Vercel, and Fastly all have their own redirect formats and `.htaccess` files are ignored. Check your hosting provider before pasting anything from this tool. Don't use a single `.htaccess` file for hundreds of redirects. Apache reads the file on every request, so a 5000-line redirect block adds measurable latency to every page load. For migrations with thousands of URL changes, push the redirects into a database table or a Cloudflare Workers rule set, and only keep the most-trafficked rules in `.htaccess`. Don't use `.htaccess` redirects when an application-level redirect would be cleaner. If you're running WordPress, plugins like Redirection or Rank Math give you a UI for the same job and don't require server config changes. If you control the application code, returning a `301` from your router is often more maintainable than the config file. ## FAQ ### What's the difference between 301 and 308? Both are permanent redirects. 301 was the original spec and is what most CMSes default to. 308 was added in HTTP/1.1 (RFC 7538) specifically to preserve the request method. With 301, a POST request gets converted to a GET on the redirect destination. With 308, the POST stays a POST. For an SEO migration where you're redirecting GET URLs, 301 is correct and universal. For API endpoint migrations where POST matters, use 308. ### Should I use `Redirect` or `RewriteRule`? `RewriteRule` is the modern recommendation. It's more verbose but more robust and supports query-string preservation, conditional logic, and regex matching. Use `Redirect` only for very small redirect sets where readability matters more than scalability. ### Why does the generator anchor patterns with `^` and `/?$`? Without anchors, `RewriteRule old-post` would also match `/old-post-2`, `/old-post-comments`, anything containing that substring. The `^` ties the match to the start of the path; `/?$` matches an optional trailing slash at the end. Together they say "match exactly this path, with or without a trailing slash, and nothing else." ### Does this handle full-URL targets? Yes — if the target starts with `http://` or `https://`, Apache treats it as an external redirect and sends the full Location header. Use this for redirecting old URLs to a new domain. ### What about HTTPS redirects? Forcing HTTPS is a different pattern — you need a `RewriteCond %{HTTPS} off` line above the rule. That's a single-rule case better written by hand or generated by your hosting provider's tooling. ### How do I test the redirects before going live? `curl -I https://yoursite.com/old-path` and check the `Location` header in the response. Or use the redirect-checker mode in [LemAudit](/) — it crawls a list of old URLs and verifies they all return the correct status and destination. # https://lemaudit.com/tools/llms-txt-generator.md --- title: Free llms.txt Generator (2026) slug: llms-txt-generator last_reviewed: 2026-06-30 author: editorial source: LemAudit Free Tools --- ## Intro `llms.txt` is the closest thing the web has to a sitemap aimed specifically at large language models. It's a single Markdown file at the root of your site — `https://yoursite.com/llms.txt` — that tells systems like ChatGPT, Claude, Perplexity, and Gemini which pages are the canonical, authoritative reference for your product, brand, or docs. The proposal lives at [llmstxt.org](https://llmstxt.org), and adoption is climbing fast across documentation sites, SaaS marketing pages, and developer tools. The file has a fixed shape that takes about thirty seconds to learn and about thirty minutes to maintain by hand if you have any real number of resources. This generator removes both problems. You paste in the site name, an optional summary, and up to three sections of links (Docs, Examples, Optional). We output a spec-compliant Markdown file you can drop straight into your site root. Three things matter when you write `llms.txt`: 1. **One H1 with the site name.** Not a tagline. Not "Welcome to". Just the brand or product name. 2. **A blockquote summary that fits in 1–2 sentences.** This is what the LLM uses when it has to decide whether to load the rest. Treat it like a meta description. 3. **Sections that link to URLs the LLM can fetch and read.** Each link gets an optional one-line description so the model knows what the page contains without fetching it. That's it. There's no schema, no validator (yet), no Google Search Console for `llms.txt`. The whole standard fits on one page. What you get for the effort is consistent, predictable behaviour when an AI assistant is asked about your product: it loads the right docs page, quotes the right paragraph, links to the right pricing URL. ## When not to use this Don't bother with `llms.txt` if your site has fewer than five resources worth pointing to. The whole point of the file is curation — telling the model "out of these 400 pages, these 12 matter". If you only have a homepage and a contact page, the LLM will find both on its own and you're spending time on a file no one reads. Skip it too if your "docs" live inside a private dashboard behind auth. `llms.txt` can only point to publicly fetchable URLs. If your real reference is gated, build a public knowledge base first, then come back. Finally, `llms.txt` doesn't replace `robots.txt`, sitemaps, or schema markup. It supplements them. A common mistake is to ship `llms.txt` and assume that fixes "AI visibility". It doesn't. Search-style retrieval — Perplexity, ChatGPT Search, Google AI Overviews — still walks your sitemap and runs schema parsers. `llms.txt` is the curated index you maintain by hand; the rest is automatic. ## FAQ ### Where do I put the generated file? The file must live at the root of your domain — `https://yoursite.com/llms.txt`. Subdirectories don't count. If you're on WordPress, put it in the root via FTP or use a plugin that lets you serve raw files. If you're on Vercel, Netlify, or Cloudflare Pages, drop it into your `public/` or `static/` folder and redeploy. ### How do I know if anyone's actually reading it? Check your server logs for requests to `/llms.txt`. You'll see hits from `GPTBot`, `ClaudeBot`, `PerplexityBot`, `Google-Extended`, and others. If you're using a CDN, filter your access logs by that path. There's no Google-Search-Console-equivalent for `llms.txt` yet, so log analysis is the only signal. ### Does this generator save my inputs? No. The whole generator runs in your browser. Nothing is sent to our servers and nothing is logged. You can verify this in the Network tab of your browser devtools — there's no outbound request when you click "Generate". ### What's the right number of links? The spec recommends keeping the file small enough that the model can load the whole thing in a single context window — practically that's under about 50 well-chosen links. If your docs site has hundreds of pages, link to the index pages (e.g. "API Reference") rather than every endpoint. ### Should I include the optional summary description on every link? If you can write a sharp, distinctive one-liner per link, yes — it makes the index more useful. If you'd be padding, leave them blank. A clean list of titles beats a noisy list with vague descriptions. ### What's the difference between this and `robots.txt`? `robots.txt` tells crawlers what they can and can't access. `llms.txt` tells LLMs which of the things they *can* access are worth their attention. The two files have completely different jobs and should both exist on a serious site. # https://lemaudit.com/tools/local-business-schema-generator.md --- title: Free LocalBusiness Schema Generator slug: local-business-schema-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro `LocalBusiness` schema is structured data that states, in machine-readable form, who you are, where you are, when you are open and where else you exist online. For a business with a physical location or a defined service area, it is the single most useful block of markup you can add, because it connects the pages on your own site to the entity search engines already hold in their local index. This generator builds that block from a form: name, type, address, coordinates, opening hours and profile links. It runs entirely in your browser, and it flags the inconsistencies that stop the markup being trusted. ## Why the markup matters more locally Local search is entity resolution before it is ranking. Before an engine can decide whether to show you for "dentist near me", it has to be confident that the business on your website, the profile in its own index, the listing on a directory and the reviews on a third-party site are all the same organisation. Every consistent signal makes that match more confident. Structured data is the cleanest signal you control outright, because it removes the parsing step: instead of inferring an address from a footer, the engine reads a labelled `PostalAddress`. This is also why an inconsistent address does real damage. A markup block that disagrees with your Business Profile does not simply get ignored; it introduces doubt into a matching process that was previously certain. ## Choosing the right type `LocalBusiness` is the generic parent. Where a specific subtype exists — `Dentist`, `Restaurant`, `Plumber`, `LegalService`, `AutoRepair`, `HealthAndBeautyBusiness` — use it. The subtype inherits everything the parent supports and tells the engine what category of thing you are without requiring it to guess from your copy. Check the subtype exists in the schema.org vocabulary before using it. An invented type such as `SEOAgency` silently degrades to `Thing` and loses the local properties entirely. If you serve customers at their location rather than yours, the address is still needed for the entity, but you should also express a service area. A mobile business publishing a street address as its public location while hiding it in the Business Profile creates exactly the kind of contradiction to avoid. ## NAP consistency in practice Name, address, phone. The three fields that must be byte-identical across your website, your Google Business Profile, your Bing Places listing and the major directories. "Suite 4" and "Ste 4" are not the same string. Neither are "Street" and "St", a local number and its international form, or a name with and without "Ltd". None of these will break anything on their own, and all of them add friction to matching. Pick one canonical form, write it down somewhere your team can find, and use it everywhere. Then use the phone number in the markup that also appears as visible text on the page — a tracking number in the markup and a different one in the footer is a contradiction the engine can see. ## Opening hours Hours belong in `openingHoursSpecification`, with 24-hour times and full day names. The generator parses shorthand such as `Mon-Fri 09:00-17:30` and normalises it. Split shifts get two entries for the same day, which is correct and valid. Days you are closed are simply omitted rather than marked closed. Seasonal exceptions and public holidays use a separate specification with `validFrom` and `validThrough` dates, which is worth adding only if your hours genuinely vary. Wrong hours are worse than absent hours. A customer who arrives at a closed shop because your markup said otherwise leaves a review about it. ## Coordinates, images and profiles Coordinates via `geo` help when your address is ambiguous — a unit in a large complex, a rural address, a new-build street. Take them from the exact point a customer should walk to, not the centre of the postcode. `image` should be a real photograph of the premises or storefront, hosted on your domain, at a reasonable resolution. Stock photography here helps nothing. `sameAs` is the underrated field. Every URL you list is a claim that this business is that profile: your Business Profile short link, Facebook page, LinkedIn company page, industry directory listings, review-site profile. This is how a disconnected set of listings becomes one recognised entity. Only list profiles you actually control and that actually resolve. ## Multiple locations One page per location, one markup block per page, each with its own address and hours. A single page listing six branches with six markup blocks is ambiguous about which entity the page describes. Where the locations share a parent brand, mark up the parent as `Organization` on the homepage and each branch as a `LocalBusiness` on its own page, linking the branch to the parent with `parentOrganization`. That structure reflects reality and is read correctly by every consumer of the data. ## Validating and maintaining Run the output through Google's Rich Results Test and the schema.org validator, then check the rendered page source to confirm the script tag actually shipped. Then diary a review. Hours change, phone numbers change, businesses move, and stale structured data is a slow leak: nothing breaks visibly, the entity match just quietly weakens. A quarterly check against your Business Profile takes five minutes and catches all of it. ## FAQ ### Do I need this if I already have a Google Business Profile? Yes. The profile is Google's record of you. The markup is your own site confirming it independently, and it is the only version Bing, Apple and answer engines can read from your domain. ### Can I use LocalBusiness without a public address? If you serve customers at their premises, publish the service area and keep the address hidden in your Business Profile. Do not publish a home address you are hiding elsewhere — the contradiction is worse than the omission. ### Where should the script tag go? In the head of the location page, one block per page. The homepage should carry `Organization` markup instead unless you trade from a single location. ### Does this markup improve map pack rankings? Not directly. It improves the confidence of the entity match that has to happen before ranking is considered, and it makes your details harder to get wrong. ### Should the phone number include the country code? Yes. International format is unambiguous, works as a click-to-call link on every device, and matches how most directories store it. ### What if my business type is not in schema.org? Use the closest existing subtype, or the generic `LocalBusiness`. Never invent a type name — unrecognised types are discarded along with their properties. # https://lemaudit.com/tools/nginx-redirect-generator.md --- title: Free Nginx Redirect Generator slug: nginx-redirect-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro Nginx has no `.htaccess`. There is no per-directory file you can drop in to add a redirect, which surprises people moving from Apache and leads to a specific failure: Apache syntax pasted into an nginx server block, followed by a config test that refuses to reload. Redirects on nginx live in the main configuration and take effect when you reload the service. This generator turns a plain list of old and new URLs into config you can paste. It offers two shapes. Location blocks are the clearest form and read well for a handful of rules. A map block is one lookup table that nginx evaluates in constant time, which is the right choice once the list runs long. Everything happens in your browser; no URL you paste leaves the page. ## Location blocks or a map Use **location blocks** for up to roughly forty redirects. Each block is an exact match, self-documenting, and easy for the next person to edit: ```nginx location = /old-page { return 301 /new-page; } ``` The `=` matters. Without it the match is a prefix, so `/old-page` would also capture `/old-page-two` and send it somewhere wrong. Use a **map** for larger lists, especially after a migration where you have hundreds of legacy URLs. The map lives in the `http` context and the server block does one lookup: ```nginx map $request_uri $redirect_target { default off; /old-page /new-page; } ``` Nginx resolves a map as a hash rather than by walking every rule, so a thousand entries cost about the same as ten. A thousand location blocks do not. ## Use return, not rewrite The most common inherited mistake is writing redirects as rewrites: ```nginx rewrite ^/old-page$ /new-page permanent; ``` That works, and it is slower and less clear than it needs to be. `rewrite` compiles and evaluates a regular expression on every matching request; `return` does not. Use `rewrite` only when you genuinely need a captured group from the old path, and `return` for everything else. The nginx documentation makes the same recommendation. ## Choosing the status code **301** is permanent. It passes ranking signals to the destination, and browsers cache it hard, sometimes indefinitely. This is what you want for a moved page. **302** is temporary. The old URL stays in the index and the destination inherits nothing. Use it for genuine short-term diversions, such as a seasonal landing page, and nothing else. A 302 left in place for a year is one of the most common causes of a page that never quite ranks after a redesign. **307** and **308** preserve the request method. A browser following a 301 or 302 after a POST may convert it to a GET; 307 and 308 will not. They matter for API endpoints and form handlers, rarely for content pages. Because browsers cache 301s so aggressively, test with a 302 during a migration and switch to 301 once the mapping is confirmed. A wrong 301 shipped to real users is difficult to take back. ## Two failure modes worth checking **Loops.** A rule whose source and destination are the same path makes nginx return the same redirect forever, and the browser gives up with a too-many-redirects error. The generator drops those lines rather than emitting them. Loops also form across rules: `/a` to `/b` while `/b` goes to `/a`. Check your list for pairs before deploying. **Chains.** If `/a` redirects to `/b` and `/b` redirects to `/c`, every visitor pays two round trips and each hop is another chance for something to break. Point `/a` straight at `/c`. Redirect chains from successive redesigns are extremely common and are worth flattening whenever you touch the file. ## Deploying safely Always test before reloading: ```bash nginx -t && systemctl reload nginx ``` `nginx -t` parses the configuration and reports the file and line of any error. `reload` applies the new config without dropping connections, unlike `restart`. Running them together means a broken config never reaches production. After the reload, verify the status code rather than trusting the browser, which may be showing you a cached hop: ```bash curl -sI https://example.com/old-page | head -n 3 ``` ## FAQ ### Where exactly do these rules go? Location blocks go inside the `server { }` block for the site, above the catch-all `location /`. A map goes in the `http { }` context, outside any server block, and the `if` that uses it goes inside the server block. On Debian and Ubuntu the site file is usually under `/etc/nginx/sites-available/`. ### Can I put redirects in a separate file? Yes, and you should once there are more than a few. Put them in their own file and pull it in with `include /etc/nginx/redirects.conf;`. That keeps the site config readable and makes the redirect list reviewable on its own. ### How do I redirect a whole directory? Use a prefix match with `rewrite` and a capture, because you need the remainder of the path: `rewrite ^/old-section/(.*)$ /new-section/$1 permanent;`. This is the case where `rewrite` is the correct tool. ### Do redirects hurt SEO? A single well-formed 301 passes essentially all ranking signal. What hurts is chains, loops, redirecting everything to the homepage instead of the closest equivalent page, and leaving temporary codes in place after the move is permanent. ### What about www to apex? Handle it in its own server block that listens for the `www` host and returns a 301 to the apex, rather than as a per-path rule. It should be one rule covering every URL, not one rule per page. ### Is there an Apache version of this tool? Yes — our [.htaccess redirect generator](/tools/htaccess-redirect-generator) produces the equivalent rules for Apache. # https://lemaudit.com/tools/robots-txt-generator.md --- title: Free robots.txt Generator slug: robots-txt-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro `robots.txt` is the first file most crawlers request from a domain, and one of the few places where a single stray character can quietly remove a site from search. It is a plain text file at the root of your host that tells automated clients which paths they may fetch. It is not a security control, it is not an indexing directive, and it is read before anything else on your site — which is exactly why it deserves more care than it usually gets. This generator builds the file from a short form and, more usefully, tells you when what you have asked for is not what you meant. It runs entirely in your browser; nothing you type is uploaded anywhere. ## What robots.txt actually controls The file controls fetching, not indexing. That distinction causes more damage than any other misunderstanding in technical SEO. If you disallow a URL, a compliant crawler will not request it. But if other pages link to that URL, a search engine can still list it in results — it simply shows the URL with no description, because it was never allowed to read the page. Blocking a page you want removed from search therefore has the opposite effect of the one intended: it locks in the listing and destroys the snippet. To remove a page from search results, allow the crawl and serve a `noindex` meta tag or `X-Robots-Tag` header. The crawler has to be able to read the page to see the instruction. Once the page has dropped out, you can block it if you want to save crawl budget. ## Rules of precedence Within a group, the most specific matching rule wins, measured by path length. `Disallow: /blog/` and `Allow: /blog/public/` coexist happily: the longer allow rule wins for that subtree. Groups are selected by user-agent, and a crawler obeys exactly one group — the most specific one that names it. If you write a `GPTBot` group, GPTBot stops reading the `*` group entirely. This trips people up constantly: they add a two-line AI block and accidentally exempt that crawler from every rule in the default group. The generator repeats the relevant rules inside each group for that reason. ## Wildcards and anchors Two special characters are widely supported. `*` matches any run of characters, and `$` anchors the end of the URL. `Disallow: /*?sessionid=` blocks every URL carrying that parameter regardless of where it appears. `Disallow: /*.pdf$` blocks PDF files but not a page whose URL merely contains `.pdf` in the middle. Both are far better tools than listing paths one by one, and both are easy to over-apply — a wildcard rule that matches more than you expected is the second most common cause of accidental deindexing after a stray `Disallow: /`. ## Crawl-delay and crawl budget `Crawl-delay` is honoured by Bing and Yandex and ignored by Google. If Googlebot is overwhelming your server, the fix is in Search Console's crawl rate settings or, better, in your server's response times. A crawl-delay line does no harm, but do not expect it to solve a Googlebot load problem. Crawl budget matters far less than most people assume. It becomes relevant when a site has hundreds of thousands of URLs, or when faceted navigation generates near-infinite parameter combinations. For a site with a few thousand pages, blocking a handful of directories will not change how fast your content gets indexed. ## AI and LLM crawlers The crawler landscape now has three distinct populations, and treating them as one is usually a mistake. Training crawlers such as `CCBot`, `Google-Extended` and `Applebot-Extended` collect text for model training and send you nothing back. Answer engines such as `OAI-SearchBot` and `PerplexityBot` fetch pages to answer live questions, and they cite sources — which sends real traffic. On-demand fetchers such as `ChatGPT-User` fetch a page because a person asked for it specifically. Blocking all three because you object to training also removes you from the answers people are asking for right now. The generator's third option splits them: training crawlers blocked, citing engines allowed. That is the setting most businesses actually want, and it is worth revisiting every few months as new agents appear. ## The sitemap directive One line, absolute URL, and it applies to the whole file regardless of which group it sits near. Point it at your sitemap index rather than listing every shard — the index is the thing you maintain, and crawlers follow it down. The directive is not a substitute for submitting your sitemap in Search Console and Bing Webmaster Tools, but it is how any other crawler finds it, and it costs nothing. ## Before you upload Check three things. The file must be at the root of the host, at `/robots.txt`, not in a subdirectory. Each subdomain needs its own file, because `shop.example.com` does not inherit anything from `example.com`. And the response must be a 200 with a plain-text content type — a 404 means everything is allowed, while a 5xx sustained over days causes Google to stop crawling the site altogether out of caution. After you upload, fetch the live URL in a browser and read it. That thirty-second check catches template-engine mangling, HTML wrappers and stale cached copies more reliably than any validator. ## FAQ ### Does robots.txt stop a page appearing in Google? No. It stops the page being fetched. A blocked URL can still be listed, without a description, if something links to it. Use a `noindex` meta tag on a crawlable page to remove it properly. ### Is robots.txt case sensitive? The paths are. `/Blog` and `/blog` are different rules. The directive names are not — `Disallow` and `disallow` both work, but conventional capitalisation makes the file easier to read. ### Do I need a robots.txt at all? Not strictly. A missing file returns 404 and crawlers assume everything is permitted. Having one is still worth it for the sitemap directive alone. ### Can I block a specific bot that ignores the rules? Not with this file. Compliance is voluntary. Bots that ignore robots.txt have to be handled at the server or firewall level, by user-agent or IP. ### Should I block my staging site here? Block it, but do not rely on it. Use HTTP authentication as well. A robots.txt on staging routinely gets deployed to production by mistake, which is one of the most common self-inflicted deindexing events there is. ### How large can the file be? Google reads the first 500 kibibytes and ignores the rest. If you are anywhere near that, the rules are too granular and should be replaced with wildcard patterns. # https://lemaudit.com/tools/robots-txt-tester.md --- title: robots.txt Tester slug: robots-txt-tester last_reviewed: 2026-08-28 author: editorial source: LemAudit Free Tools --- ## Intro A robots.txt tester answers one question: given the file you actually serve, will a specific crawler fetch a specific URL? It is a different job from writing the file. Most mistakes we see in audits are not syntax errors — the file parses fine — they are rules that match more or less than the person who wrote them believed. Paste your file, give it a URL and pick a crawler. The tester applies the same matching rules Google documents: group selection by user-agent, longest-pattern-wins precedence, `*` and `$` wildcards, and the empty-`Disallow` special case. It runs in your browser and logs nothing. ## How crawlers actually choose which rules apply Two steps, and both surprise people. **Step one: exactly one group applies.** A crawler scans every `User-agent` line and picks the group whose token is the longest match for its own name. Googlebot reading a file with a `User-agent: *` group and a `User-agent: Googlebot` group obeys the Googlebot group and ignores the wildcard group completely — including rules that only exist in the wildcard group. If your `Disallow: /admin/` lives under `*` and you added a `Googlebot` group later to allow one image folder, you have just opened `/admin/` to Google. **Step two: within that group, the longest matching path pattern wins.** Not the first rule, not the last. `Disallow: /admin/` and `Allow: /admin/public/` both match `/admin/public/page` — the Allow is longer, so the page is crawlable. If two matching patterns are the same length, Allow wins. Order in the file is irrelevant to precedence. It only matters for grouping consecutive `User-agent` lines. ## Wildcards, and where they bite `*` matches any run of characters. `$` anchors the match to the end of the URL. `Disallow: /*?` blocks every URL containing a query string — including the faceted URLs you wanted blocked and the paginated ones you did not. `Disallow: /*.pdf$` blocks PDFs but leaves `/report.pdf?download=1` crawlable, because the query string means the URL no longer ends in `.pdf`. `Disallow: /search` blocks `/search`, `/searching`, and `/search-results`, because there is no implicit boundary at the end of a pattern. Matching runs against the path plus query string, and it is case-sensitive. `/Admin/` and `/admin/` are two different things to a crawler. ## The empty Disallow `Disallow:` with no value means "nothing is disallowed" — it is the standard way to write an explicit allow-all group. `Disallow: /` with a slash blocks everything. One character apart, opposite meanings, and it is a genuinely common typo in hand-edited files. ## Blocking is not de-indexing This is the single most expensive misunderstanding in technical SEO. A `Disallow` rule stops a crawler fetching the page. It does not remove the page from the index, and it never will, because the crawler can no longer read the page to see any instruction you put inside it. If a blocked URL has inbound links, Google can and does list it — usually with no description, sometimes with an anchor-derived title. To keep a page out of results you must let it be crawled and serve `` or an `X-Robots-Tag` header. Blocking a page you have also noindexed cancels the noindex. The same logic applies to canonical tags, hreflang and structured data: all of them are inside pages a blocked crawler cannot read. ## What to test before you ship a change Run these five through the tester after any robots.txt edit: Your homepage, for the obvious reason. One URL from each section you intended to block. One URL from a section you intended to keep, that sits close to a blocked pattern — this is where over-broad wildcards show up. A CSS and a JavaScript file, because blocking render resources makes Google evaluate your mobile layout against a page it cannot paint. And one parameterised URL, if your site has them. Test with `Googlebot` selected, then again with `*`. If the answers differ and you did not intend them to, your groups are fighting each other. ## AI crawlers The same syntax now governs a second population of crawlers, and they are separate agents: `GPTBot`, `ClaudeBot`, `PerplexityBot`, `Google-Extended` for Gemini training, `CCBot` for Common Crawl. Google-Extended is worth understanding precisely — blocking it removes you from Gemini training data but has no effect on Googlebot or on your web search ranking. Decide deliberately. Blocking all of them protects content from training use and removes you from AI answer surfaces that increasingly sit above organic results. Our [robots.txt generator](/tools/robots-txt-generator) writes the AI-crawler block for you either way, and the [CMS detector](/tools/detect-cms) reports which AI bots a live site currently allows. ## Serving rules that break otherwise-valid files The file must be at the root: `https://example.com/robots.txt`. A file at `/blog/robots.txt` is ignored. Subdomains need their own file — `shop.example.com` does not inherit from the apex. It must return HTTP 200 with `text/plain`. A 404 is treated as allow-all. A 5xx for more than a short window makes Google stop crawling the whole site rather than risk fetching something you meant to block. HTML error pages served with a 200 status are parsed as robots.txt and produce nonsense. Google reads up to 500 KiB and truncates the rest, which only matters on generated files with thousands of rules — a sign the logic belongs in meta tags instead. ## When not to use This tester answers what your rules mean, not whether Google agrees your file is being fetched at all. If a URL is missing from the index and the tester says it is allowed, the problem is elsewhere: check the live response code, the canonical tag, the meta robots tag and the URL Inspection tool in Search Console before editing robots.txt again. Do not use it as a de-indexing tool. If the goal is removing a page from search results, robots.txt is the wrong lever entirely — the [CMS detector](/tools/detect-cms) will show you what a live page currently serves, and a `noindex` on a crawlable page is the fix. And if you are writing a file from scratch rather than checking one, start with the [robots.txt generator](/tools/robots-txt-generator) and test the result here afterwards. ## FAQ ### Why does Googlebot ignore my "User-agent: *" rules? Because a more specific group exists for it. A crawler obeys exactly one group — the longest user-agent match — and ignores every other group in the file, including the wildcard. Duplicate any shared rules into the named group. ### Which wins, Allow or Disallow? The longer pattern. Only when two matching patterns are exactly the same length does Allow win by default. ### Does robots.txt remove a page from Google? No. It blocks crawling, not indexing. A blocked URL with inbound links can appear in results with no snippet. Use a `noindex` meta tag on a crawlable page instead. ### Is robots.txt case-sensitive? The paths are. Directive names are not. `Disallow: /Admin/` will not block `/admin/`. ### Do I need a separate file for each subdomain? Yes. Each host serves its own robots.txt, and protocols count too — HTTP and HTTPS are treated as distinct origins for this purpose. ### What happens if my robots.txt returns a 500 error? Google pauses crawling of the site while the error persists, on the assumption that it might otherwise crawl something you intended to block. A 404, by contrast, is safely interpreted as no restrictions. ### Should I block AI crawlers? It is a business decision, not an SEO one. Blocking `GPTBot`, `ClaudeBot` and `PerplexityBot` keeps your content out of their answers as well as their training. Blocking `Google-Extended` affects Gemini training only and leaves web search untouched. # https://lemaudit.com/tools/sitemap-index-generator.md --- title: Free Sitemap Index Generator slug: sitemap-index-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro A sitemap index is a sitemap that lists other sitemaps. You need one as soon as your site outgrows a single file, and most sites reach that point sooner than their owners expect. Google caps one sitemap at 50,000 URLs or 50MB uncompressed, whichever comes first. A store with 12,000 products, 4,000 variant pages and a blog will hit the size cap long before the URL cap, because product entries carry image and video tags that make each line long. There is a second reason to split, and it matters more than the caps. Search Console reports coverage per sitemap. If every URL on your site sits in one file, the report tells you that 8,000 of 20,000 URLs are indexed and nothing else. Split the same URLs into `sitemap-products.xml`, `sitemap-blog.xml` and `sitemap-pages.xml`, and the same report tells you products are 95% indexed while the blog is at 12%. That is a diagnosis rather than a number. The shards cost nothing to create and they turn a vague metric into a specific one. This generator builds the index file. Paste one child sitemap URL per line, optionally with a real last-modified date, and it returns a valid `sitemapindex` document. Everything runs in your browser; no URL you type is sent anywhere. ## What the tool checks Four rules break sitemap index files in practice, and the generator flags all four as you type. **Absolute URLs only.** Relative paths are invalid in a sitemap index. Every `loc` must be a full URL with a scheme. This is the single most common reason a hand-written index gets rejected. **One host.** A sitemap index may only point at sitemaps on the same host as the index itself. Cross-host references are ignored unless you have verified both hosts in Search Console and set up cross-submission deliberately. If you list a mix of `www` and apex URLs, half your file quietly does nothing. **The 50,000 cap applies to the index too.** An index may list at most 50,000 child sitemaps. Very large publishers nest a second level of index files, which Google accepts. **Dates must be W3C format.** `2026-08-01` is valid. `01/08/2026` is not, and an invalid date makes Google discard the whole `lastmod` element for that entry. ## The lastmod trap The generator lets you omit `lastmod` entirely, and for many sites that is the right choice. `lastmod` is meant to record when the content of a sitemap's URLs last changed in a way that matters. What most build pipelines do instead is stamp today's date on every entry at deploy time. Google has been explicit about the consequence: when every date in a file moves in lockstep on every deploy, the signal carries no information and gets ignored. Worse, once a site has trained Google to distrust its dates, an accurate date later on is discounted as well. So supply a date when you have a real one, from a content timestamp in your database or CMS. Leave it out when your only candidate is the build clock. A file with no `lastmod` is treated as unknown, which is honest and costs you nothing. A file full of fabricated dates is treated as noise. ## Submitting the index Submit the index file, not the shards. In Search Console, go to Sitemaps and add the index URL. Google discovers every child from it and reports each one separately. Then add one line to `robots.txt`: ```text Sitemap: https://example.com/sitemap.xml ``` That line is how every other crawler — Bing, and the AI crawlers that now matter for citation traffic — finds the file, since most of them have no submission interface at all. ## FAQ ### How many URLs should each child sitemap hold? Anything up to 50,000, but split by content type rather than by count where you can. Grouping by type is what makes the coverage report useful. If one type still exceeds the cap, number the shards: `sitemap-products-1.xml`, `sitemap-products-2.xml`. ### Can a sitemap index point at another sitemap index? Google accepts nested index files, though the specification does not describe the case. Very few sites are large enough to need it. If you are considering it, first check whether your shards are grouped sensibly, because most nesting is a symptom of poor grouping. ### Do I need to resubmit after adding a shard? No. Google re-fetches the index on its own schedule and picks up new children. Resubmitting does nudge it, which is worth doing after a large launch or a site migration. ### Should the index list gzipped sitemaps? Yes, if you serve them. Both `.xml` and `.xml.gz` are valid, and gzip is worth it for large files. Make sure the server sends the correct `Content-Encoding` header, or the crawler receives a file it cannot parse. ### Does a sitemap guarantee indexing? No. A sitemap is a discovery aid, not an instruction. It helps Google find URLs it might otherwise reach slowly or not at all. Whether those URLs get indexed depends on their quality, their internal links and the crawl budget your site earns. A page that only a sitemap links to is usually a page nothing else on your site considers important. ### What about image and video sitemaps? They are child sitemaps like any other and belong in the index. For video specifically, the extra elements have their own rules; our [video sitemap generator](/tools/video-sitemap-generator) handles those. # https://lemaudit.com/tools/twitter-card-generator.md --- title: Free Twitter Card Generator slug: twitter-card-generator last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro A Twitter card is the preview box that appears when someone shares your link on X. Get it right and a link becomes a headline, a summary and a large image, which is roughly three times the visual space of a bare URL. Get it wrong and the post shows a naked link, which people scroll past. The tags themselves are simple: a card type, a title, a description, an image. What makes them fiddly is that X falls back to Open Graph tags when a `twitter:` tag is absent, so a page can end up with two competing sources of truth. If your `og:title` is the site name and your `twitter:title` is the article headline, different surfaces show different things. This generator writes both blocks from one set of answers, so they cannot drift. Everything runs in your browser. Nothing you type is sent to a server or logged. ## Choosing a card type **summary_large_image** is the default for almost everything: a full-width image above the title and description. Use it for articles, tools, product pages and landing pages. The image needs to be at least 300 by 157 pixels, and 1200 by 630 renders cleanly at every size. Keep the file under 5MB. **summary** shows a small square thumbnail beside the text. It suits pages where the image is a logo or an avatar rather than a scene, and it takes far less vertical space in a feed. The minimum is 144 by 144. **player** embeds a video or audio player inline. It requires extra tags for the player URL and its dimensions, and X reviews player cards manually before they render for anyone but you. Treat it as a project, not a checkbox. **app** promotes a mobile app install. It needs app IDs per platform and ignores your image entirely. ## The rules that actually break previews **HTTPS, always.** X will not fetch an image over plain HTTP. This is the most common cause of a card that works locally and disappears in production. **Absolute URLs.** A relative image path resolves against nothing on X's crawler. Always include the scheme and host. **Length limits.** Titles are truncated around 70 characters, descriptions around 200. The generator counts as you type. Front-load the meaning so the truncated version still reads well. **The crawler must be allowed in.** X reads your page with a bot called `Twitterbot`. If `robots.txt` blocks it, or a firewall rule challenges unknown user agents, no tags are read and no card renders regardless of how correct your markup is. **Caching is aggressive.** Once X has scraped a URL, it holds the preview for days. Change an image and the old one keeps appearing. Force a refresh through the X card validator, or append a harmless query parameter to the shared URL for a one-off test. ## Alt text is not optional `twitter:image:alt` is read aloud by screen readers and shown when an image fails to load. It takes ten seconds to write and is skipped on the overwhelming majority of sites. Describe what the image shows, not what the page is about: "Bar chart showing 68% of audited sites missing structured data" rather than "SEO audit tool". ## Where to put the tags In the ``, alongside your other meta tags, and rendered server-side. This is the part that trips up single-page applications. Tags injected by JavaScript after the page loads are invisible to X's crawler, because it does not execute JavaScript. If your framework only sets meta tags on the client, every link you share will show the same default preview no matter what the page is. Server rendering or a pre-render step is the only real fix, and it is worth knowing before you spend an afternoon debugging your tags rather than your delivery. ## FAQ ### Do I still need twitter tags if I have Open Graph? Not strictly. X reads `og:title`, `og:description` and `og:image` when the twitter equivalents are absent. Add `twitter:card` at minimum, because that is what selects the large-image layout; without it you get the small summary style. ### Why does my card show the wrong image? Almost always the cache. X keeps a previous scrape for days. Run the URL through the card validator to force a refresh, and check that the new image is absolute, HTTPS and under 5MB. ### Can I use a different image for X than for Facebook? Yes. Set `og:image` for Facebook and LinkedIn, and `twitter:image` for X. That is the main reason to output both blocks rather than relying on the fallback. ### Does the card affect SEO? Not directly. Google does not rank pages on Twitter tags. It affects click-through on shared links, which drives traffic and, over time, links. The effect is real but indirect. ### What size image should I use? 1200 by 630 for summary_large_image. It downscales cleanly, matches the ratio X crops to, and doubles as your Open Graph image so you only make one file. ### My card works for me but not for others. Why? Player and app cards need approval from X before they render for other accounts. For summary cards, this pattern usually means the page is behind authentication or a bot challenge, so the crawler sees a login screen while you see the page. # https://lemaudit.com/tools/utm-builder.md --- title: Free UTM Builder slug: utm-builder last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro A UTM builder appends five or six named parameters to a link so your analytics can tell where a visitor came from. Without them, a click from an email newsletter and a click typed into the address bar look identical: both land in direct traffic, and the campaign you spent a week on reports nothing. This builder produces the tagged URL, preserves any query string already on the destination, normalises case, and warns you about the specific mistakes that corrupt attribution. It runs in your browser; no link you build is logged. ## The parameters, and what each is really for `utm_source` is the specific origin: `newsletter`, `linkedin`, `partner-name`. Name the property, not the category. `utm_medium` is the channel type: `email`, `cpc`, `social`, `referral`, `affiliate`. Analytics tools group by this field, so an invented value creates a new channel group that no report expects. Stick to the conventional set unless you have a deliberate reason not to. `utm_campaign` is the initiative both of the above belong to. Use the same value across every link in one campaign, or you cannot total it. `utm_term` was built for paid keywords and is largely vestigial outside search ads. `utm_content` distinguishes two links to the same page in the same email: `header-cta` against `footer-link`. It is the parameter that tells you which creative worked, and the one most often left empty. `utm_id` ties the click to a row in your ad platform or CRM. If you reconcile spend against sessions, this is what makes the join possible. ## The rule people break most Never tag internal links. A UTM parameter on a link between two pages of your own site tells analytics a new campaign session has begun, which ends the current session and reattributes everything after it to that campaign. The conversion that came from paid search gets credited to your own navigation. It happens most often when someone copies a tagged URL out of a campaign to use as a menu link. Once it is in a template it can distort reporting for months before anyone notices, because the numbers look plausible — they just belong to the wrong channel. ## Case, spaces and naming `Email`, `email` and `EMAIL` are three different sources in most tools. So are `facebook` and `Facebook`. Split reporting from inconsistent case is the second most common attribution problem after internal tagging, and it is entirely avoidable: lowercase everything, always. The builder does this by default. Spaces become `%20` and make links ugly and fragile in email clients that wrap them. Use hyphens. Agree a naming convention and write it down: which sources exist, which mediums are allowed, how campaign names are structured. A shared sheet listing approved values beats any tooling, because the failure mode here is people improvising, not people lacking a builder. ## Where UTMs do not belong Do not tag links you are asking other sites to publish as backlinks. The parameters create a distinct URL, they encourage the exact-URL to be shared with tracking attached, and they add noise to your canonical picture. Do not tag your Google Ads final URLs manually if auto-tagging is enabled — the two conflict and one of them wins unpredictably. Do not tag links in printed material or anywhere a human types the URL. Use a short redirect that carries the parameters instead. And do not put anything identifying in a parameter. UTMs end up in referrer headers, browser history, shared screenshots and third-party logs. An email address or customer ID in a `utm_content` value is a data leak that will eventually surface somewhere you did not plan for. ## Canonicals and duplicate URLs Tagged URLs are distinct URLs. Most analytics platforms strip UTM parameters when reporting pages, but search engines do not automatically know they are equivalent. A self-referencing canonical tag on every page solves this — the canonical points at the clean URL, so any tagged variant that gets crawled or linked consolidates back to the original. If you are not sure your canonicals are set correctly, our [canonical tag generator](/tools/canonical-tag-generator) covers the rules. For high-volume paid traffic it is also worth confirming your analytics is configured to exclude the parameters from page paths, or your top-pages report fragments into dozens of near-identical rows. ## An audit worth running once Export the last quarter's traffic grouped by source and medium. Three things usually fall out. Values that differ only by case or spelling, which should be merged and prevented at the source. A direct traffic figure far larger than plausible, which usually means a channel is untagged entirely. And medium values outside the conventional set, which are silently sitting outside your channel groupings and therefore outside every summary report a stakeholder reads. Fixing those three costs an afternoon and makes every subsequent campaign measurable. ## FAQ ### Do UTM parameters hurt SEO? Not if your canonical tags are correct. The tagged URL consolidates to the clean one. Problems arise only when canonicals are missing and both versions get indexed. ### Which parameters are required? Source and medium in practice. Campaign is required to compare links within one initiative. Term, content and id are optional and situational. ### Can I use UTMs on internal links? No. It restarts the session and reattributes the visit to your own site. Use an internal event or a click listener instead. ### Does capitalisation matter? Yes. Most analytics tools treat values case-sensitively, so mixed case splits one channel into several. Lowercase everything. ### Should I shorten tagged links? For anything human-visible, yes — a shortener keeps the link tidy and preserves the parameters on redirect. Confirm your shortener passes the query string through rather than dropping it. ### Will UTMs still work as third-party cookies disappear? Yes. They are query parameters read at page load, not cookies. They are becoming more important as other attribution signals get weaker, not less. # https://lemaudit.com/tools/video-sitemap-generator.md --- title: Free Video Sitemap Generator slug: video-sitemap-generator last_reviewed: 2026-06-30 author: editorial source: LemAudit Free Tools --- ## Intro A video sitemap is the only reliable way to get your self-hosted (non-YouTube) video content indexed in Google's Video search vertical. Without one, Google might still discover your videos through a regular sitemap or page crawl — but indexing is slow, thumbnails are inconsistent, and the rich video result on the SERP often doesn't appear at all. With a proper video sitemap, the videos show up in the dedicated Video tab in Google Search Console within days and start collecting impressions almost immediately. The format is fussy. Google's [video sitemap spec](https://developers.google.com/search/docs/crawling-indexing/sitemaps/video-sitemaps) requires five fields per video — page URL, thumbnail URL, title, description, and either a content URL or a player URL — plus a long list of optional metadata fields (duration, publication date, family-friendly flag, restriction tags, etc.). Get any of the required fields wrong and Google silently drops the entry from the index. This generator handles the spec for you. You paste one row per video — pipe-delimited columns covering the five required fields and two optional ones (duration in seconds, ISO publication date) — and we produce a valid `` XML file ready to submit to Google Search Console. A few small choices the generator makes for you: - **Player vs content URL.** Google accepts either, but uses them differently. If the URL looks like a YouTube embed, a Vimeo player, or has `/embed/` or `/player/` in the path, we use ``. Otherwise we use `` (which means a direct link to an `.mp4`, `.webm`, or similar). Get this wrong and Google can't render a preview. - **XML escaping.** Titles and descriptions with apostrophes, ampersands, or angle brackets need to be escaped or the file won't parse. We escape every text field automatically. - **Validation.** We warn (but don't block) when titles exceed Google's 100-char display limit, when descriptions exceed the 2048-char hard cap, and when durations fall outside Google's 1-second to 8-hour valid range. After generating, you upload the file to your site (typically as `/sitemap-videos.xml`) and submit it in Google Search Console under Sitemaps. Google starts crawling within hours. ## When not to use this Don't use a video sitemap for YouTube-hosted videos that aren't embedded on your own pages. If your videos live entirely on YouTube and you have no companion landing pages, YouTube's own indexing handles them. A video sitemap only helps when there's a public page on your domain that hosts or embeds the video — Google indexes the page, not the video file itself. Don't generate a video sitemap for fewer than three videos. Google's video search vertical favours sites that publish video content regularly. A one-off video on a landing page is better served by an `Article` schema with a `video` property than by a dedicated sitemap. Don't use this tool to game search results with thin video content. Google's video search uses click-through and dwell-time signals; pages where users abandon within a few seconds get demoted out of video search regardless of how well-formed the sitemap is. The sitemap solves the "Google can't find my videos" problem, not the "my videos aren't interesting" problem. ## FAQ ### Where do I put the file? Anywhere on your domain that's publicly accessible. Common convention is `/sitemap-videos.xml`. After uploading, add the URL to your `robots.txt` as `Sitemap: https://yoursite.com/sitemap-videos.xml` and submit it in Google Search Console. ### Can I have one big sitemap with both pages and videos? Yes — Google accepts a sitemap that mixes regular `` entries and `` entries with `` children. But for clarity and maintenance, most sites keep them separate. ### What's the difference between `content_loc` and `player_loc`? `content_loc` points at the raw video file (`.mp4`, `.webm`). Google can fetch it directly to validate. `player_loc` points at an embeddable player URL (a YouTube `/embed/` URL, a Vimeo player URL). Use `content_loc` for self-hosted videos and `player_loc` for embedded third-party players. ### Does the publication date matter? Yes — Google uses it to sort video results by recency. For evergreen content, set it to the original publish date. For news or time-sensitive content, keep it updated whenever you make a substantial revision. ### How often should I regenerate the file? Every time you add or remove a video. Google re-crawls submitted sitemaps automatically, but you can force a refresh in Search Console under Sitemaps → Refresh. ### Does this tool support video transcripts or chapters? Not in this version. The Google video sitemap spec doesn't include transcripts or chapters as official fields — those are surfaced through YouTube's own metadata or through structured data on the host page using `Clip` and `SeekToAction` schema. If you need rich chapter markers in Google Search, add those alongside the sitemap. # https://lemaudit.com/tools/white-label-rank-tracker.md --- title: White Label Rank Tracker Report Generator slug: white-label-rank-tracker last_reviewed: 2026-08-09 author: editorial source: LemAudit Free Tools --- ## Intro A white label rank tracker is a ranking report that carries your agency's name instead of a software vendor's. The client sees the keywords, the positions and the movement; they do not see a third-party logo, a login screen, or a product they could go and buy directly. This generator produces that report from whatever ranking data you already have. Paste a keyword list with current and previous positions, add your agency name and the client's, and you get a formatted report with the summary numbers calculated for you — top-3 count, top-10 count, average position, gains, losses, and keywords that entered or left the top 100. Choose Markdown when the report goes into a document, an email or a PDF, or CSV when the client wants to open it in a spreadsheet. Everything runs in your browser. No keyword, client name or domain typed into this page is transmitted anywhere. ## What the report contains The header names the client, the domain, the reporting period and your agency. That last line is the whole point of white labelling: it is the only attribution on the page. The summary block converts the raw table into the four or five numbers a client can hold in their head. Most people cannot read a forty-row ranking table, but they can read "eleven keywords in the top ten, up from seven". The generator computes these rather than asking you to, which removes the arithmetic mistake that creeps into hand-built reports the month a keyword drops out of the top 100. The table lists every keyword with its current position, its previous position, and the change. The change column is signed towards improvement: `+5` means the keyword moved five places closer to position 1, not five places away. Reports that print the raw subtraction get this backwards and confuse the reader every single month. The method note at the bottom states what a position means and how change is calculated. Include it. Ranking data varies by location, device and personalisation, and a client who understands that in month one does not open a dispute in month four. ## Input format One keyword per line, comma or tab separated: ```text conveyancing solicitor manchester, 4, 9 family law manchester, 11, 8 probate solicitor near me, 2, 2 employment lawyer manchester, NR, 34 ``` The first value is the keyword, the second is the current position, the third is the previous position, and an optional fourth is the ranking URL. Only the keyword and current position are required. Use `NR`, `-` or `>100` for keywords outside the top 100. Because it accepts tab separation, you can copy a block of cells straight out of Google Sheets or Excel and paste it in. A header row is detected and skipped when the second column is a label rather than a number. Duplicate keywords are dropped with a warning rather than double-counted in the summary — a duplicated row is the most common way a hand-assembled report reports a top-10 count that is one too high. ## How positions and "not ranked" are handled Keywords outside the top 100 are the awkward case. Treating them as zero flatters the average; excluding them hides a real loss. This generator counts a not-ranked keyword as position 101 when calculating the average, which keeps the number honest and stable — a keyword that falls from 98 to nowhere moves the average slightly, not dramatically. Keywords that entered or left the top 100 are also counted separately so the client can see the difference between a keyword sliding and a keyword disappearing. A keyword with no previous position is reported as new rather than as an infinite gain. A keyword with a position this period and none last period appears under "new in the top 100". ## Where the ranking data comes from This tool formats data; it does not query Google. That distinction matters when you choose a stack, and it is why the tool is free. Most agencies pull positions from Search Console's performance report, from a rank tracker on a paid plan, or from a spreadsheet a junior maintains manually. Search Console average position is the cheapest honest source: it reflects impressions you actually received rather than a simulated check from an arbitrary location, and it costs nothing. Its weakness is that it only covers queries where you already appeared, so keywords you do not yet rank for are silently absent — export it, then add the untracked targets as `NR` rows so the client sees the full target list. Paid rank trackers add scheduled checks, location and device granularity, and historical charts. If you are already paying for one, its export drops straight into this tool: keyword, position, previous position, URL is the column order most of them use by default. ## Reporting cadence and what clients actually read Monthly is the right interval for almost every engagement. Weekly ranking reports invite reaction to noise; SERPs move a few places daily for reasons no one can act on, and a client watching that churn will ask you to explain fluctuations that mean nothing. Keep the tracked list short enough to be read. Twenty to thirty keywords covering the money terms, the service lines and a handful of local variants tells the story. A hundred-keyword report signals volume rather than progress and gets skimmed. Put the commentary field to work. The table shows what happened; the commentary explains why and what happens next. In practice it is the section clients read first and the one that renews contracts — a decline with a stated cause and a plan reads as control, while the same decline unexplained reads as drift. ## Pairing the report with a site audit Rankings tell you where you stand; they do not tell you what to fix. When a report shows several keywords sliding on the same template — service pages, location pages, product pages — the cause is usually technical or on-page rather than competitive. Run a [free SEO audit](/free-audit) on the client domain in the same session as the report and attach the findings. If you deliver reports under your own brand regularly, the [white label SEO audit](/white-label-seo-audit) setup puts your logo and domain on those reports too, so the ranking table and the audit that explains it arrive looking like one document from one agency. ## Frequently asked questions **Does this tool check rankings for me?** No. It formats ranking data you supply. Live position checking at scale requires paid SERP data, and any free tool claiming to do it either samples very lightly or is short-lived. **Is my client data sent anywhere?** No. The generator runs entirely in your browser. Nothing is logged, stored or transmitted. **Can I add my logo?** Not in the generated text — it is Markdown or CSV. Paste the Markdown into your own branded template or export it to a document that carries your letterhead, and the agency name in the header and footer stays intact. **What if a keyword has no previous position?** It is reported as new rather than as a gain, and counted in the "new in the top 100" line of the summary. **Why does the average position include not-ranked keywords?** Because excluding them would make a report improve every time a keyword dropped out. They are counted as 101, which keeps the trend honest. # https://lemaudit.com/compare/moz-vs-semrush.md --- title: "Moz Pro vs Semrush (2026): Honest Comparison" slug: moz-vs-semrush last_reviewed: 2026-06-30 author: editorial source: LemAudit Editorial --- ## Intro Moz invented the modern SEO industry's vocabulary — Domain Authority, MozBar, the "Whiteboard Friday" school of teaching — and was the default SEO tool for years. In 2026 it's the underdog, and the question every prospective buyer asks is: is Moz Pro still worth it, or has Semrush just out-built it? We ran the same workflows in both tools on `stripe.com`, `notion.so`, and `shopify.com` the same week in June 2026 — keyword research, on-demand site audit, backlink check, rank tracking setup, and an on-page grader pass. The comparison table records what we saw; pricing is the public vendor pricing on the test date. Short version: **Moz Pro is still the best value for a solo SEO who wants Domain Authority on tap and clean basics on a $49–$99 budget**. **Semrush is a substantially deeper tool** with a broader feature surface (PPC, local, social, content) at roughly 3× the entry price. If your bottleneck is breadth, Semrush wins. If your bottleneck is cost and you mostly want familiar metrics, Moz still earns its keep. ## When not to use either - **You need the deepest backlink index possible.** Ahrefs still leads on that single metric. See our [Semrush vs Ahrefs comparison](/compare/semrush-vs-ahrefs). - **You need agency-grade white-label prospect audits.** Neither does this. That's what [LemAudit](https://lemaudit.com) is for. - **You only need rank tracking.** Cheaper, sharper tools exist (AccuRanker, SerpRobot, Wincher). ## Verdict by use case - **Solo SEO consultant on a budget** → Moz Pro Standard at $49/mo. DA, MozBar, basic audit, basic rank tracking. - **Content marketer who needs Topic Research, SEO Writing Assistant, and content audits** → Semrush. Moz's content tooling is much thinner. - **Agency running PPC + SEO + local listings** → Semrush. Moz Local is sold separately and isn't a full ad-platform competitor. - **You're committed to using DA as your authority metric** → Moz Pro. Authority Score works but isn't the industry's lingua franca. - **You want one tool for an SEO team of 3+** → Semrush. Per-seat economics and feature breadth justify the premium. Honest disclosure: this page is published by LemAudit. We don't compete with Moz or Semrush and we have no affiliate relationship with either vendor as of the date stamped above. If you spot a factual error, email us — we re-test quarterly. ## FAQ ### Is Moz really cheaper than Semrush? Yes, substantially. Moz Pro Standard is $49/mo vs Semrush Pro at $139.95/mo — Moz is roughly one-third the price at the entry tier. The catch is that Moz Standard has tight quotas (3 campaigns, 300 tracked keywords, 100k pages crawled). If you'd outgrow those quickly, the per-feature cost gap narrows. ### Is Domain Authority still relevant in 2026? DA is still the most widely-cited link-authority score in client conversations and link-building outreach. Whether it's *predictive* of rankings is the long-running debate; it correlates loosely but isn't a Google signal. We treat it like a credit score — useful as a shorthand, not a ground truth. ### Can I get Moz's Domain Authority without paying for Moz Pro? Yes. The free MozBar Chrome extension shows DA on any site, and the Moz Link Explorer free tier gives you 3 queries per day at moz.com. If DA is all you need, you don't need the paid tier. ### Does Moz have any features Semrush doesn't? A few worth naming: MozBar (free browser overlay; Semrush has one but it's less loved), the On-Page Grader as a quick standalone tool, and a cleaner UX out of the box. Semrush has more total surface area, but Moz's individual tools are often easier for newcomers. ### What about Ahrefs? Ahrefs is the third member of the "big three" suite. Compared to Moz it has a much bigger link index and content explorer; compared to Semrush it's lighter on PPC/local and heavier on backlinks. See [Semrush vs Ahrefs](/compare/semrush-vs-ahrefs) and [Ubersuggest vs Ahrefs](/compare/ubersuggest-vs-ahrefs). # https://lemaudit.com/compare/screaming-frog-vs-sitebulb.md --- title: "Screaming Frog vs Sitebulb (2026): Crawler Showdown" slug: screaming-frog-vs-sitebulb last_reviewed: 2026-06-30 author: editorial source: LemAudit Editorial --- ## Intro Screaming Frog SEO Spider and Sitebulb are the two desktop crawlers every technical SEO knows by name. They look like they do the same thing — they both crawl your site and tell you what's broken — but they're optimised for genuinely different workflows. Screaming Frog is a sharp knife: fast, raw, infinitely configurable, and assumes you know what you're looking at. Sitebulb is a guided audit: slower, prettier, prioritises issues with explanations, and assumes you might need to hand the report to a client. We crawled `stripe.com`, `notion.so`, and `shopify.com` in both tools during the same week of June 2026 — same crawl depth, same JS rendering settings, same integrations. Comparison below. Pricing is the public vendor pricing on the test date. The short version: **Screaming Frog if you're a solo technical SEO who lives in spreadsheets**, **Sitebulb if you're an agency that hands audit reports to clients**. Many teams own both: Screaming Frog for daily extraction work, Sitebulb for quarterly deep audits. ## When not to use either - **You need to crawl prospect sites at scale for lead generation.** Both are desktop-first; spinning them up per prospect doesn't scale. That's what [LemAudit](https://lemaudit.com) does (we built it for this exact gap). - **You need a cloud-native, always-on monitor.** Look at Ahrefs Site Audit or ContentKing for that. - **You only want to find broken links.** Free tools (Dr. Link Check, Ahrefs Broken Link Checker) cover that single use case for free. ## Verdict by use case - **Solo technical SEO, daily power user** → Screaming Frog. Faster, scriptable, cheaper, and you can wire it into anything. - **Agency presenting audits to non-technical clients** → Sitebulb. Hints + visualisations communicate findings without you writing an essay. - **Need scheduled cloud crawls without a dedicated machine** → Sitebulb Cloud. Screaming Frog can schedule, but needs a machine. - **Heavy custom extraction (XPath, regex, structured data debug)** → Screaming Frog. Its custom extraction is more extensive for this workflow. - **Tight budget, occasional crawls** → Screaming Frog free tier (500 URLs) or paid (£199/yr). Honest disclosure: this page is published by LemAudit. We don't compete with either crawler (we audit prospect sites at scale, not your own) and we have no affiliate relationship with either vendor. If we got a fact wrong, email us — we re-test quarterly. ## FAQ ### Which is faster, Screaming Frog or Sitebulb? Screaming Frog. On the same 1,000-URL crawl with default settings and no JS rendering, Screaming Frog finished noticeably ahead of Sitebulb in our June 2026 tests. Sitebulb is slower because it runs additional analysis passes after the crawl to build the Hints and visualisations. ### Is Sitebulb's "Hints" system actually useful? Yes, especially if you're handing the report to anyone non-technical. Hints group raw issues into prioritised categories with plain-English explanations and a severity score. In Screaming Frog you get the raw data and you do the prioritisation yourself. ### Can I JS-render with both? Yes — both ship with optional headless Chromium rendering. JS rendering slows the crawl substantially in both tools (factor of 3–10× depending on the site). Use it for SPAs, skip it for traditional server-rendered sites. ### What's the cheapest way to get unlimited crawling? Screaming Frog at £199/yr (~$255/yr) is the cheapest "unlimited URLs" option by a wide margin. Sitebulb Lite at $13.50/mo caps you at 10k URLs per crawl, which is fine for most SMB sites but not enterprise. ### Will either crawler get me blocked by the target site? Both respect robots.txt by default and both let you set a custom User-Agent and crawl delay. If you crawl aggressively on a small site, yes you can get rate-limited or IP-blocked — set a sensible crawl delay and identify yourself in the User-Agent if you're not the site owner. # https://lemaudit.com/compare/semrush-vs-ahrefs.md --- title: "Semrush vs Ahrefs (2026): Tested Side-by-Side" slug: semrush-vs-ahrefs last_reviewed: 2026-06-30 author: editorial source: LemAudit Editorial --- ## Intro Semrush and Ahrefs are the two suites every serious SEO team eventually evaluates against each other, and the answer is almost never "they're the same — pick the cheaper one". They overlap heavily on the headline features (keyword research, backlink analysis, site audit, rank tracking) but they're built for different jobs and they price for different buyers. We ran the same workflows against `stripe.com`, `notion.so`, and `shopify.com` in both tools the same week in June 2026 — keyword discovery, link-gap analysis, on-demand site audit, position tracking setup, and a small content brief. The comparison table below captures what we actually saw. Below that, the pricing snapshot is the public vendor pricing on the test date; both vendors run discounts and bundle changes through the year, so always click through to the vendor page before you buy. The honest short version: **pick Semrush if you live in PPC + local + SEO and need one tool for the whole department**; **pick Ahrefs if your day is keyword + content + backlinks and you want the cleanest dataset behind every screen**. Both are excellent; neither replaces a dedicated technical crawler like Screaming Frog or Sitebulb, and neither is good at converting prospect audits into leads (that's what we build). ## When not to use either - **You're a solo founder spending less than $100/mo.** Both entry tiers are expensive. Look at Ubersuggest, Mangools, or the free Ahrefs Webmaster Tools tier for your own sites. - **You only need a technical crawl.** Both have site audit modules, but a dedicated crawler is faster, deeper, and cheaper for that single job. - **You're an agency selling SEO and want to capture leads with white-label audits of prospects' sites.** Neither does this. That's why we built [LemAudit](https://lemaudit.com). - **Your sole need is rank tracking.** SerpRobot, AccuRanker, or Wincher are cheaper and better at that one job. ## Verdict by use case - **Agency selling full-funnel marketing** → Semrush. The PPC suite, listing management, and social tooling save you a stack of separate tools. - **In-house SEO team at a content-led company** → Ahrefs. Content Explorer + cleaner UI + deeper link index pay for themselves. - **Link builders** → Ahrefs. The link index is the product. - **Local SEO agency** → Semrush. Listing Management + Map Rank Tracker exist; in Ahrefs, they don't. - **Mostly-technical SEO** → Either, plus a dedicated crawler. Pick on PPC needs. Honest disclosure: this page is published by LemAudit. We don't compete with Semrush or Ahrefs (we don't do keyword research or backlink data) and we have no affiliate relationship with either vendor as of the date stamped on this page. If you find a factual error, email us — we keep the changelog in git and re-test quarterly. ## FAQ ### Is Semrush actually cheaper than Ahrefs? At entry tier, Ahrefs Lite ($129/mo) is slightly cheaper than Semrush Pro ($139.95/mo). At every tier above that, Semrush is cheaper for what you get if (and only if) you use the PPC, local, and social modules — otherwise you're paying for stuff you don't use. ### Which has the bigger backlink index in 2026? Semrush states 43+ trillion backlinks, Ahrefs 35+ trillion (vendor self-reported as of 2026-06-30). In practice, both find the high-authority links that matter; index size is mostly a vanity number above a certain threshold. Crawl freshness is the more useful metric, and both are competitive there. ### What about Authority Score vs Domain Rating? They measure roughly the same thing (link-based authority on a 0–100 scale) using different formulas. Neither is "right" — they're internal metrics, not Google's actual ranking signals. Use whichever your team is used to; don't switch tools just to chase a different score. ### Can I run both in parallel for a month to compare? Yes — both offer 7-day trials (Semrush) or a 30-day money-back guarantee (Ahrefs). The trick is to define three concrete workflows you'll run in each tool on the same data and score them on outcome, not aesthetics. Most teams that "evaluate" both end up renewing whichever one their lead SEO learned first; that's fine. ### What about Moz, Mangools, SE Ranking? Moz is the legacy player; cleaner UI, smaller index, cheaper entry tier — see our [Moz vs Semrush comparison](/compare/moz-vs-semrush). Mangools is an Ubersuggest-tier price with a friendlier UI. SE Ranking is a credible mid-market alternative at ~$65/mo entry. None match Ahrefs or Semrush on data depth, and most agencies that try them eventually upgrade. # https://lemaudit.com/compare/surfer-vs-clearscope.md --- title: "Surfer vs Clearscope (2026): Content Optimisation Compared" slug: surfer-vs-clearscope last_reviewed: 2026-06-30 author: editorial source: LemAudit Editorial --- ## Intro Surfer and Clearscope are the two best-known SERP-driven content optimisation tools. They both take a target keyword, scrape the current top-ranking pages, extract the terms those pages cover, and grade your draft against that benchmark. The differences are in philosophy, polish, and price. We optimised the same three article briefs in both tools during the same week of June 2026, then ran the same drafts through each grader. The comparison table records what we found; pricing is the public vendor pricing on the test date. Short version: **Surfer is the volume-and-velocity choice** — broader features, AI writer included, multi-language, $99/mo entry. **Clearscope is the editorial quality choice** — tighter term recommendations, cleaner briefs, mature Google Docs integration, $189/mo entry. If you publish 30+ pieces a month, Surfer's economics make sense. If you publish 5 high-stakes pieces a month, Clearscope's signal-to-noise wins. ## When not to use either - **You publish fewer than 4 long-form pieces a month.** Either tool is overkill. Use Google's `intitle:` operator, Also Asked, and a strong editor instead. - **You're optimising for AI Overviews and LLM citations primarily.** Neither tool has shipped a strong AI-visibility module as of mid-2026. Pair your content tool with [LemAudit's AI visibility check](https://lemaudit.com/ai-visibility-check) for that gap. - **You need keyword research, not optimisation.** Use Ahrefs, Semrush, or Ubersuggest first; come back to Surfer/Clearscope once you've picked the targets. ## Verdict by use case - **Content agency producing 30+ articles/mo across multiple clients** → Surfer. Per-article cost is much lower; Surfer AI handles drafting if you want it. - **In-house editorial team at a SaaS company optimising 4–8 cornerstone pieces a month** → Clearscope. Briefs are tighter, term scoring is more transparent, and its Google Docs workflow is stronger for this use case. - **Multi-language publisher (German, Spanish, French content)** → Surfer. Localisation coverage is genuinely broader. - **You want one bundled AI writer + optimiser** → Surfer with the Scale AI plan. - **You want the most editor-friendly experience** → Clearscope. Surfer's editor has more UI to learn. Honest disclosure: this page is published by LemAudit. We don't compete with Surfer or Clearscope (we don't optimise content; we audit and capture leads) and we have no affiliate relationship with either vendor as of the date stamped above. Found a factual error? Email us; we re-test quarterly. ## FAQ ### Is Surfer's AI writer good enough to publish from? In our June 2026 testing, Surfer AI produces a usable structural draft — outline, headings, on-topic prose — but every piece still needed human editing for voice, accuracy, and fresh examples. Treat it as a first-draft accelerator, not a publish-ready writer. Google's [Helpful Content Update](https://developers.google.com/search/blog/2022/08/helpful-content-update) penalises unedited AI sludge, and you don't want your domain near that. ### Why is Clearscope so much more expensive? You're paying for sharper term recommendations and a Google Docs integration that's been polished for years. The cost difference is real and worth it for teams where each piece is high-stakes; it's hard to justify when you're churning out high volume. ### Can I use both? Yes, and some teams do — Surfer for first-pass drafting at scale, Clearscope for final editorial polish on flagship pieces. Most teams pick one to keep the workflow simple. ### Do either of these replace an editor? No. Both grade against SERP terms; neither evaluates clarity, accuracy, originality, brand voice, or whether the piece actually helps the reader. Term coverage is a floor, not a ceiling. Google's quality raters explicitly look for [E-E-A-T signals](https://developers.google.com/search/blog/2022/12/google-raters-guidelines-e-e-a-t) that no SERP-grading tool can manufacture. ### What about Frase, MarketMuse, NeuronWriter? Frase is a cheaper Surfer competitor with a better question-research module. MarketMuse is the enterprise pick — much pricier, deeper topic modelling. NeuronWriter is the budget option (~$23/mo entry) and is surprisingly good for the price. We'll publish dedicated comparisons for each. # https://lemaudit.com/compare/ubersuggest-vs-ahrefs.md --- title: "Ubersuggest vs Ahrefs (2026): Honest, Tested Comparison" slug: ubersuggest-vs-ahrefs last_reviewed: 2026-06-30 author: editorial source: LemAudit Editorial --- ## Intro Ubersuggest and Ahrefs both call themselves "all-in-one SEO platforms", and they both technically are. The honest answer to "which one should I use" depends on three things: how much you can spend each month, whether you do link-building seriously, and whether you have the team to use a more complex tool. We tested both on the same three reference sites (`stripe.com`, `notion.so`, `shopify.com`) in June 2026 — same queries, same workflows, same week. The comparison table below records what we saw. Below that, the pricing snapshot is the public vendor pricing on the test date; both vendors change pricing fairly often, so click through to the vendor site before you buy. The short version: Ahrefs has a much deeper backlink index, much better content research, and much higher prices. Ubersuggest has a free tier, a much shallower index, and a UX designed for people who don't already know SEO. Neither is "better" in the abstract. The pick depends on whether your SEO bottleneck is data (Ahrefs wins) or budget (Ubersuggest wins). ## When not to use this Neither tool is the right pick in three situations we kept hitting during testing: - **You only need to run technical SEO audits.** Both include a site auditor as an afterthought, and both are worse at it than a dedicated crawler like [Screaming Frog](https://screamingfrog.co.uk/seo-spider/) or [Sitebulb](https://sitebulb.com). If audit depth is the job, pick a crawler. - **You need real, recent SERP data with question-keyword clustering.** Neither tool focuses on this workflow in 2026. We use Semrush or Keyword Insights for clustering and SERP feature mapping. - **You're an agency selling SEO retainers and need to capture leads with white-label audits.** Neither does this — they audit your own sites, not your prospects'. That's the job of a tool like [LemAudit](https://lemaudit.com), which is what we build. Honest disclosure: this page is published by LemAudit. We don't compete directly with Ubersuggest or Ahrefs (we don't do keyword research or backlink data), and we don't have an affiliate relationship with either vendor as of the date stamped on this page. If you find a factual error in the comparison above, email us — we keep the changelog in git and re-test quarterly. ## FAQ ### Is Ubersuggest really worth it over the free version of Ahrefs Webmaster Tools? For a single site you own, the free Ahrefs Webmaster Tools tier (AWT) gives you site audit and limited backlink data on **your own verified sites** for free. If your only use case is monitoring your own domain, AWT is the better free option than paying Ubersuggest $29/mo. Ubersuggest is worth it when you need keyword and competitor research on sites you don't own. ### Is Ahrefs really 4× the price of Ubersuggest? What do you get for it? You get roughly 35× more backlinks in the index, full historical data, a content explorer that estimates traffic on any URL, and a UI built for daily power use. If you'll log in three times a week and depend on the data for client decisions, Ahrefs pays for itself fast. If you log in once a month to check rankings, you're overpaying for the headroom. ### Can I cancel either after one month? Yes — both bill month-to-month. Ahrefs offers annual discounts (~17% off) if you commit. Ubersuggest has a lifetime plan option (currently around $290 one-time at the Individual tier) that's good value if you'll definitely use it for over a year. ### Which one is better for AI search visibility / GEO? Neither has shipped a strong AI-visibility feature as of June 2026. Ahrefs added basic LLM citation tracking to its Site Explorer in Q1 2026, but it's limited to a handful of engines. For real AI-search work in 2026 we recommend pairing your SEO tool with a dedicated AI-visibility tool — we built [LemAudit's free AI visibility check](https://lemaudit.com/ai-visibility-check) for exactly this gap. ### What about Semrush, Moz, Mangools? Semrush sits between Ubersuggest and Ahrefs on price (~$140/mo entry) and rivals Ahrefs on database size but has a steeper learning curve. Moz is the legacy player and has fallen behind on data depth. Mangools (KWFinder, SERPChecker, etc.) is a credible Ubersuggest competitor at a similar price point — friendlier UI than Ubersuggest, slightly worse data. We'll publish dedicated comparisons for each of these. # https://lemaudit.com/white-label-ahrefs-alternative.md --- title: A white label alternative when Ahrefs reports cannot carry your brand slug: white-label-ahrefs-alternative last_reviewed: 2026-08-04 author: editorial --- ## Intro Ahrefs is very good at what it does. It is not a white label product, and it has never claimed to be. Its reports, share links and exports carry Ahrefs branding, because the company sells access to a crawler and an index rather than a client deliverable. Agencies looking for a "white label Ahrefs" are usually looking for something Ahrefs deliberately does not build. That leaves a real gap. You want Ahrefs-grade research for your own analysis and an unbranded, client-ready deliverable to send out. Those are two different jobs, and trying to force one tool to do both is why so many agencies end up rebuilding reports by hand in a slide deck every month. The workable arrangement is to keep the research tool and add a client-facing layer. Use Ahrefs, Semrush or Moz for the link graph, keyword research and competitive analysis you need internally. Use a [white label SEO audit service](/white-label-seo-audit) for the thing the client actually receives: a branded technical and on-page audit, hosted on your report subdomain, exported as a branded PDF, delivered from your sending domain, with your commentary in it. That is the role we fill. We score six pillars — performance, technical, on-page, mobile, security and AI search readiness — and every client-visible surface is yours. We do not maintain a backlink index and we do not report authority-style metrics, and we say so plainly rather than reselling someone else's numbers with our logo over them. If backlink data belongs in your client report, export it from your research tool and place it alongside; do not expect it from us. The [white label reporting workflow](/white-label-seo-reporting) explains how the client-facing report, branded domain and ongoing commentary fit together. The economics also differ. Research platforms price on index access and start around $99–$129/mo for a single seat. A client-deliverable layer prices on the number of audits and brands, starting at $49/mo with white labelling included. Running both is common and still cheaper than most single-vendor plans that bolt on a branding add-on. The last difference is direction of use. Research tools are inbound to you; audit tools point outbound to prospects. Our widget sits on your website and converts visitors into scored leads. No research platform does that, and no amount of rebranding would turn one into a lead source. ## When not to use this - **You genuinely need the index.** If your deliverable is a backlink audit, a link gap analysis or a disavow file, this is not a substitute. Keep Ahrefs. - **You want a single vendor.** Running a research tool and a delivery tool means two subscriptions and two logins. Some teams would rather accept vendor branding than manage that. - **Your clients are technical enough to want raw data.** In-house SEO teams often prefer the original tool's export over any curated report. - **You are evaluating rank tracking.** We do not track daily keyword positions. That is a separate category with separate pricing. ## FAQ ### Can I rebrand Ahrefs reports directly? No. Ahrefs share links and PDF exports carry Ahrefs branding, and their terms do not provide a white label mode. Any service claiming to rebrand Ahrefs output is either screenshotting it or breaching those terms. ### Do you provide backlink or domain authority metrics? No, by design. We do not license a link index, so we do not publish authority scores. Our audit covers on-site health, performance, security and AI search readiness. ### Is this cheaper than Ahrefs? Different products, so the comparison is imperfect: our entry tier is $49/mo against roughly $129/mo for an Ahrefs starter seat. Most agencies keep both rather than swapping one for the other. ### Can I put my own analysis into the report? Yes. Each pillar accepts a commentary block, so you can paste findings pulled from your research tool into the same branded document the client receives. ### What about Semrush and Moz? The same reasoning applies. Both are research platforms with fixed vendor branding on client-facing output. Our comparison pages cover how they differ from each other if you are still choosing a research tool. # https://lemaudit.com/white-label-seo-audit-tool.md --- title: A white label SEO audit tool you embed on your own site slug: white-label-seo-audit-tool last_reviewed: 2026-08-04 author: editorial --- ## Intro There is a meaningful difference between an SEO audit tool you log into and one your prospects use. The first is an internal utility. The second is a lead source that runs while you sleep. The embeddable white label audit tool is one script tag. Drop it on your homepage, your services page, or a dedicated landing page, and it renders in whichever mode fits the layout: inline inside a section, a floating button anchored to a corner, or a popup triggered by a click. The styling inherits what you configure — brand colour, corner radius, font, headline, sub-headline, button label, and the copy of the email capture step. There is no vendor chrome, no iframe border, and no third-party name in the markup a visitor can view-source. Mechanically it is straightforward. The visitor enters a domain. The audit fetches the page, runs the technical checks, calls the free Google PageSpeed endpoint for performance data, and returns a scored result in under a minute. Before the full report unlocks, the visitor supplies an email address with an explicit consent checkbox, recorded against the lead for GDPR purposes. That submission creates a scored lead in your pipeline with the audit attached, plus any UTM parameters present on the embedding page, so you can attribute which campaign produced which prospect. Two details matter more than they sound. The first is spam handling: a honeypot field plus rate limiting keeps bot submissions out without inflicting a CAPTCHA on genuine prospects, which is the single biggest killer of conversion on tools like this. The second is A/B testing, built into the widget, so you can run two headline or button variants and see which converts rather than guessing. Installation is documented per platform rather than generically. WordPress covers block themes through the Site Editor, classic themes through the theme file, and the WPCode plugin path. Shopify, Squarespace, Framer and Webflow each have their own steps. An install verification check confirms the widget is live on your domain and fires a first-install event so you know the setup actually worked, instead of discovering three weeks later that the tag never fired. Once installed, the conversion funnel view shows widget views, audit starts, completions, email captures and outreach sent, so you can see where visitors drop rather than only counting leads. ## When not to use this - **You do not want prospects self-serving.** Some agencies prefer a consultative first touch and consider an instant audit a discount on their expertise. That is a legitimate positioning choice, and the tool works against it. - **Your site has strict CSP rules you cannot amend.** The widget loads a script from our domain. If your security policy forbids third-party scripts and cannot be extended, this will not run. - **You need audits behind a login.** The embedded tool is public by design. For internal-only auditing, use the dashboard rather than the widget. - **You want a crawl of the whole site on the public widget.** Public audits are page-level plus an optional shallow sitemap sweep. Deep multi-page crawls belong in the authenticated product because of the runtime cost. ## FAQ ### Where does the script go? Immediately before the closing body tag on any page where the widget should appear, or in your platform's global custom-code slot. The install page has copy-paste steps for WordPress, Shopify, Squarespace, Framer and Webflow, and a verification check to confirm it is live. ### Will it slow my site down? The script loads asynchronously and defers its work until the widget is visible or triggered, so it does not block rendering or affect your own Core Web Vitals in normal use. ### Do I collect the email, or do you? You do. Leads belong to your account, appear in your pipeline, and are pushed to your systems through webhooks. Consent state is recorded per lead so your data processing record stays defensible. ### Can I change the wording? Yes. Headline, sub-headline, button labels, the consent text and the post-submit message are all overridable per brand, and you can A/B test variants of them. ### What happens after a visitor finishes an audit? They can view the full branded report and start another audit for a different domain without reloading. You receive a notification, the lead is scored, and any configured webhook fires. # https://lemaudit.com/white-label-seo-audit.md --- title: White label SEO audit services agencies resell under their own brand slug: white-label-seo-audit last_reviewed: 2026-08-28 author: editorial --- ## Intro A white label SEO audit service is one you sell under your own name while someone else runs the engine. Your client receives an audit with your agency's name on it, not your vendor's. The analysis engine belongs to someone else; the experience belongs to you. That distinction sounds cosmetic until you send a proposal and the prospect notices a third-party logo on page one of the document they are being asked to pay for. Agencies buy white labelling for three reasons. The first is positioning: if the report carries a vendor mark, the prospect can price-shop your vendor instead of buying your judgement. The second is consistency: a report that matches your site, your deck and your invoices reads as one coherent service. The third is retention: when a client sees your brand every month in their inbox, the relationship is with you. Most tools sold as white label only handle the first layer, a logo swap. The report still lives on the vendor's domain, the share link still exposes the vendor name, the export still ships in vendor colours, and the emails still come from a vendor sending address. Every one of those is a place where the illusion breaks in front of a paying client. LemAudit was built the other way around. The audit engine scores six pillars — performance, technical health, on-page structure, mobile experience, security, and AI search readiness — and everything a client can see is yours. Your logo, your colour, your typography, your custom report subdomain after a CNAME and TXT verification, your sending domain for digests, and an embeddable audit widget on your own site that carries no vendor chrome at all. The workflow is deliberately short. You connect a brand, style the widget, and drop one script tag on your site. A prospect enters a domain, the audit runs in under a minute, and the result becomes a scored lead in your pipeline with contact details, severity-ranked findings, and an estimated revenue impact you can quote in the first sales call. On the Agency plan you can run three separate brands from one account, which matters if you operate a main agency plus one or two niche sub-brands. What you do not get is a proprietary backlink index or rank-tracking database. We do not resell third-party metrics, and we say so on every page, because an audit product that pretends to own an index it licenses is exactly the kind of thing that gets found out during a client QBR. ## When not to use this White labelling is the wrong purchase in a few clear cases. - **You are an in-house team.** If nobody outside your company sees the report, you are paying for a branding layer that adds nothing. Use the underlying audit and skip the brand configuration entirely. - **You need link-graph research.** Competitive backlink analysis, keyword gap work and rank tracking are different products. Ahrefs, Semrush and Moz own that space with crawler infrastructure we do not attempt to replicate. Several agencies run one of those alongside us and only white-label the client-facing deliverable. - **You want a fully bespoke report format.** Our template is configurable — reorder sections, hide pillars, insert your own commentary — but it is a template. If your differentiator is a wholly custom report layout, budget for a build rather than a subscription. - **You audit a handful of sites per year.** Below roughly five audits a month, the free tier plus manual formatting is cheaper than any subscription, ours included. ## FAQ ### Does the client ever see the vendor name? No. There is no "powered by" footer, no vendor logo, and no vendor domain in the share link once you have verified a custom report domain. The only place our name appears is your own billing. ### Can I host reports on my own domain? Yes. Add a CNAME record pointing your chosen subdomain — commonly reports.youragency.com — at our endpoint, then a TXT record to prove ownership. Once verification passes, every share link generated for that brand routes through your domain automatically. ### How many brands can one account hold? Three independent brands on the Agency plan, each with separate logos, colours, widget copy, report domains and notification settings. Lower tiers hold one brand. ### What does a white label SEO audit cost? White labelling is included from the $49/mo Starter tier rather than sold as an upgrade. Multi-brand support and higher audit volumes sit on the $199/mo Agency tier. You can run audits free before paying anything. ### Can I export a branded PDF? Yes. The report has print-optimised styling, so the PDF keeps selectable text and your brand colours instead of exporting as a flattened screenshot. # https://lemaudit.com/white-label-seo-reporting.md --- title: White label SEO reports, generated and delivered under your brand slug: white-label-seo-reporting last_reviewed: 2026-08-28 author: editorial --- ## Intro A white label SEO report is the deliverable, not the tool. Your client never logs into a dashboard, never learns a vendor name, and never sees a metric they cannot act on. They receive a document — a link, a PDF, or both — that reads as though your agency wrote it from scratch. White label SEO reporting is what happens when that document stops being a task someone remembers to do and becomes a scheduled output. Getting the report itself right is mostly about removing things. Most SEO tools were designed for practitioners, so their default export is a wall of crawl data: 412 URLs with a missing meta description, 89 images without alt text, a Core Web Vitals table with no interpretation. That output is useful to you and close to meaningless to a marketing director who has to justify a retainer to a CFO. The reports we generate are structured the way an agency actually presents work. A plain-language executive summary sits at the top with a single score and the three things that matter most. Below it, six scored pillars — performance, technical health, on-page structure, mobile experience, security and AI search readiness — each with findings ranked critical, warning or passed. Passed checks stay visible on purpose: showing what is already healthy is what makes the failures credible. Every finding carries a fix instruction written for the client's stack. If we detect WordPress, the instruction references the plugin or theme setting; if we detect Shopify, it references the theme editor. That single detail is the difference between a report that gets forwarded to a developer and one that gets filed. ### Branding runs deeper than the cover page Your logo and brand colour apply across the header, the score dials, the section rules and the PDF export. You can reorder or hide any pillar, insert your own commentary blocks between sections, and set the contact block that appears in the footer. The share link resolves on your verified report domain, and the PDF uses dedicated print styling, so text stays selectable and links stay clickable rather than being rasterised at a fixed width. ### Reporting on a schedule you control Assembling a monthly document by hand costs several hours per client and produces something the client skims for thirty seconds. Automating it needs three moving parts: an audit that re-runs on its own, a diff that says what changed since last time, and a delivery mechanism that sends the result from your brand rather than a vendor's. Our re-audit loop runs on a 30-day cycle per tracked domain, unattended. When it completes, the new score is compared against the previous run and the report surfaces the delta per pillar — performance up four points, technical down two, three new critical findings, five resolved. That diff is the actual content of a monthly report. A client does not need the same 120 checks restated; they need to know what moved and why. For clients who want a tighter loop, the weekly digest is opt-in per lead and sends a short change summary. It is throttled to at most one send per seven days per domain so a busy week cannot flood an inbox, and it sends from your verified domain under your brand and sending address. ### Delivery and the signal that follows it Delivery is not limited to email. Reports can push to Slack for internal visibility and to an arbitrary webhook for CRM automation, and a separate event fires when a client actually opens the report. That last signal is the most useful one in the product: a report opened twice in an afternoon is usually a client about to ask a question, and getting there first reads as attentiveness. Underneath all of it, the trend chart keeps the last twenty audits per domain. That history is what turns reporting from an obligation into a renewal argument, because a nine-month upward line is a more persuasive artefact than any single month's numbers. Nothing in the delivery chain — report domain, sending domain, logo, colours, copy — identifies the underlying platform. ## When not to use this - **Your clients want a bespoke deck.** Automated reporting produces a consistent document. If each client gets a hand-built narrative presentation, use this as the data source and keep building the deck. - **Your reporting is channel-wide.** If clients expect one document covering paid, social, email and organic together, an SEO report is a component, not a replacement. Multi-channel reporting needs a dedicated platform pulling from those APIs. - **You need live rank tracking inside the report.** We report on-site health and AI search readiness. Daily keyword positions come from a rank tracker; if that is the centre of your retainer, keep the tracker and use this for the technical half. - **The client wants raw crawl data.** Enterprise in-house teams sometimes want the full URL-level export to load into their own warehouse. Our report is curated by design and is a poor fit for that. - **Compliance requires reports to originate from your own infrastructure.** We send from your verified domain, but the sending infrastructure is ours. Some regulated clients will not accept that. ## FAQ ### Can I add my own commentary to the report? Yes. Each pillar accepts a custom commentary block that renders above the findings, so you can frame the data in your own words before the client reads the detail. ### Is the PDF a real PDF or a screenshot? A real PDF. The report has dedicated print styling, so text stays selectable, links stay clickable and the layout reflows rather than being rasterised at a fixed width. ### Do clients need an account to open the report? No. Share links are public by design so a prospect can open them from an email without friction. Links are unguessable tokens, and you can regenerate a token to revoke access. ### How often do audits re-run? Every 30 days per tracked domain by default, executed by a scheduled job rather than a manual trigger. You can also run an audit on demand at any point without disturbing the schedule. ### What exactly is in the diff? Overall score change, per-pillar movement, findings newly failing, and findings resolved since the previous audit — with the previous and current values shown side by side. ### How do I know if the client read it? An outbound webhook fires on the first report open, and the same event appears in your analytics funnel alongside widget views and lead creation. Agencies typically wire that webhook into a CRM task. ### Does the email come from my domain? Yes, once you have verified a sending domain. Until then, digests are held rather than sent from a fallback address, so a client never receives an email from an unfamiliar sender. ### Can I stop reporting for one client without cancelling everything? Yes. Scheduling is per lead and per domain, so you can pause or disable a single client's cycle while leaving the rest running. # https://lemaudit.com/white-label-seo-software.md --- title: White label SEO software built around agency lead generation slug: white-label-seo-software last_reviewed: 2026-08-04 author: editorial --- ## Intro Most software marketed as white label SEO software is a reporting layer with a logo upload. It assumes you already have the client and just need to show them numbers each month. That covers half an agency's problem. The harder half is filling the pipeline in the first place, and almost nothing in this category is designed for it. LemAudit is built for the acquisition half and then covers the reporting half. The centre of the product is not a dashboard; it is an embeddable audit widget that sits on your own website. A prospect types their domain, gets a genuinely useful audit in under a minute, and in exchange you get a scored lead with contact details, detected CMS, a severity-ranked list of problems, and an estimated revenue impact. Those leads land in a pipeline, not a CSV. From there the platform behaves the way agency software should. Three independent brands on the Agency plan, each with its own logo, colours, widget copy, report domain and notification routing — useful when you run a parent agency plus niche sub-brands. Team members inherit the account owner's plan tier rather than being billed per seat. Outbound webhooks fire on new lead, hot lead and report opened, so your CRM stays authoritative instead of your SEO tool becoming a second one. There is an AI layer, and it is aimed at sales rather than novelty. A sales copilot drafts a sixty-second pitch from the audit findings, written against the detected CMS so the fixes are specific. Outreach drafts are generated per lead. Industry percentile scoring puts a prospect's result in context — "worse than 78% of dental practices we have audited" moves a conversation faster than a raw number does. We also publish a public MCP server with per-agency bearer keys, so AI assistants can run audits, fetch results, list recent leads and compare competitors on your behalf. As buying research moves into assistants, being machine-callable is turning into a distribution channel rather than a curiosity. On cost: white labelling is not an upsell here. It is included from the $49/mo tier. The Agency tier at $199/mo adds multi-brand support, higher audit volume, bulk domain scanning up to fifty domains per batch, and the MCP keys. Competing platforms commonly start at $99–$299/mo and then charge again for the branding layer. ## When not to use this - **You need an all-in-one marketing suite.** If you want SEO, PPC reporting, social scheduling and call tracking in one bill, buy a suite. We are deliberately narrow. - **Your differentiator is proprietary link data.** We do not license or resell a backlink index, and we do not report domain authority style metrics. If your pitch depends on those, keep the tool that provides them. - **You have no website traffic to convert.** The widget converts existing visitors. If your site sees a handful of sessions a month, fix distribution first; a conversion tool cannot manufacture demand. - **You are a single freelancer running two audits a quarter.** The free tier will cover you. Subscribe when the volume justifies it. ## FAQ ### Is white labelling included or an add-on? Included from the first paid tier. There is no separate branding fee and no vendor mark on client-facing surfaces at any plan level. ### How many team members can I add? Team members inherit the owner's subscription tier, so you are not charged per seat. Practical limits scale with plan-level audit volume rather than headcount. ### Does it integrate with my CRM? Through outbound webhooks on new lead, hot lead and report-opened events, plus Slack and email notifications. Anything that accepts an inbound webhook can consume them directly. ### What is the MCP server for? It exposes audits as callable tools for AI assistants using per-agency bearer keys, covering run audit, get audit, list recent leads and compare competitors. It is useful if your team works inside an assistant or you want to automate audits from a script. ### Can I run more than one agency brand? Three on the Agency plan, each fully independent — separate branding, separate report domain, separate notification routing. # https://lemaudit.com/help/advanced/how-do-i-manage-multiple-agency-brands.md --- title: "How do I manage multiple agency brands" category: advanced slug: how-do-i-manage-multiple-agency-brands canonical_url: https://lemaudit.com/help/advanced/how-do-i-manage-multiple-agency-brands last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I manage multiple agency brands? Open **Multi-Brand** in the sidebar (Agency plan), click **New brand**, and configure 1 logo, 2 colors, 1 Calendly URL, and 1 widget script per brand. Up to 3 brands per account, each fully isolated — leads, reports, and outreach drafts all scope to the brand that captured them. ## What "isolated" actually means Each brand profile is a self-contained identity. Brand A's [widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) embedded on bulldogagency.com captures leads tagged for Brand A. Those leads use Brand A's [logo](/help/branding/how-do-i-add-my-agency-logo) on their [public report](/help/reports/how-do-public-audit-reports-work), Brand A's [colors](/help/branding/how-do-i-customize-brand-colors), and Brand A's voice in the [outreach drafts](/help/outreach/how-do-ai-outreach-emails-work). Brand B's leads are invisible to Brand A's pipeline filter — they cannot accidentally email a Brand B prospect under Brand A's signature. Think of it like running 3 phone lines in 1 office. Same staff, same building, callers always hear the right greeting. ## How LemAudit keeps them apart Brands are rows in the brand_profiles table tied to your account_id. The brand-config edge function looks up the brand from the embed script URL on every widget load. Two different scripts on two different sites never cross-pollinate. The [pipeline view](/help/leads/how-does-the-lead-pipeline-work) gains a brand filter when a second profile exists, and the [Dashboard](/help/getting-started/what-does-the-dashboard-show) splits its tiles per brand. The [webhook integration](/help/integrations/how-do-webhook-notifications-work) carries a `brand_id` field on every payload so your downstream automation can route correctly too. For full domain swap (loading Brand B widget script from reports.brandb.com), point a CNAME at our edge per brand — see the white-label widget setup. ## Worked example A holding company runs 3 niche shops: dental, legal, and home-services. They created 3 brand profiles on day 1 and embedded each widget on the matching niche site. Within 4 weeks they captured 31 / 24 / 19 leads. All visually correct, all routed to the right inbox via 3 separate webhooks into 3 different HubSpot pipelines. ## When this isn't right The 3-brand cap is intentional. For "100 reseller sub-brands" SaaS resale, contact support about an enterprise tier. If you only need to swap a logo per client (not run separate widgets), use the standard [logo](/help/branding/how-do-i-add-my-agency-logo) panel. Ship per-client public report links instead. Much less setup. *Category: Advanced* ## Related - [Can I manage multiple brands](https://lemaudit.com/help/branding/can-i-manage-multiple-brands) - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) - [How do I customize brand colors](https://lemaudit.com/help/branding/how-do-i-customize-brand-colors) --- For the interactive version visit https://lemaudit.com/help/advanced/how-do-i-manage-multiple-agency-brands # https://lemaudit.com/help/advanced/how-does-automatic-re-auditing-work.md --- title: "How does automatic re-auditing work" category: advanced slug: how-does-automatic-re-auditing-work canonical_url: https://lemaudit.com/help/advanced/how-does-automatic-re-auditing-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How does automatic re-auditing work? Toggle **Auto re-audit** on any lead and LemAudit re-runs the [audit pipeline](/help/audits/how-do-seo-audits-work) every 30 days. The new score and findings overwrite the current set; the previous version stays in the lead's audit history chart for trend comparison. ## What auto re-auditing is for The job is freshness. A lead audited 6 months ago and never refreshed is a stale lead. The prospect may have fixed everything, or made it worse. Your [outreach draft](/help/outreach/how-do-ai-outreach-emails-work) will then reference issues that no longer exist. A 30-day cadence keeps the data current enough to pitch from without burning your [audit quota](/help/billing/what-are-audit-limits-per-plan) every week. Think of it like an automatic credit-score check. You do not need it daily; you need it before you ask the bank a question. ## How LemAudit schedules it A daily cron at 3am UTC runs the auto-reaudit-loop edge function. It selects every lead with auto_reaudit = true and last_audit_at older than 30 days, then queues each one through the same run-audit pipeline a [manual re-audit](/help/audits/can-i-re-audit-a-lead-s-website) would. We rate-limit to 100 re-audits per agency per night to avoid quota spikes; overflow rolls into the next night's batch. Each completed re-audit fires the same [webhook](/help/integrations/how-do-webhook-notifications-work) (`audit.completed`) so your downstream tools see the refresh too. The audit_history table keeps the last 20 runs per lead, which powers the trend chart on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show). ## Worked example A B2B agency turned auto re-audit on for 80 cold leads from a Q1 batch. 30 days later they got an alert (via webhook) for 6 leads whose scores had dropped by more than 10 points. They opened 1 — a coaching site that had added a heavy unoptimised video — and used the score drop as the hook of a follow-up email. The prospect replied within 4 hours and booked a call. ## When this isn't right Auto re-auditing every lead in your pipeline burns through quota fast — limit it to high-value Hot leads or active outreach targets, not the whole list. For sub-30-day cadences (e.g. weekly), do them manually; the cron is fixed at 30 days to keep LemAudit from looking like a misbehaving crawler to your prospects' analytics tools. For pure rank-tracking (positions in SERPs), use a dedicated tool — LemAudit measures site health, not Google ranks. *Category: Advanced* ## Related - [Can I re-audit a lead's website](https://lemaudit.com/help/audits/can-i-re-audit-a-lead-s-website) - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [What are audit limits per plan](https://lemaudit.com/help/billing/what-are-audit-limits-per-plan) --- For the interactive version visit https://lemaudit.com/help/advanced/how-does-automatic-re-auditing-work # https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work.md --- title: "How does the Bulk Scanner work" category: advanced slug: how-does-the-bulk-scanner-work canonical_url: https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How does the Bulk Scanner work? Open **Bulk Scanner** in the sidebar. Upload a CSV with 1 domain per row (max 50 per batch) and click **Start Scan**. LemAudit audits each domain in parallel and creates 1 lead per row in your pipeline. A 50-domain batch finishes in 6–10 minutes. ## What "bulk" actually does The scanner runs the same [audit pipeline](/help/audits/how-do-seo-audits-work) for each row in your CSV. Every row becomes 1 row in your [leads table](/help/leads/how-does-the-lead-pipeline-work). It carries the same [health score](/help/audits/how-is-the-health-score-calculated), the same [findings list](/help/audits/what-types-of-issues-does-the-audit-find), and the same [AI outreach drafts](/help/outreach/how-do-ai-outreach-emails-work) a manual audit would produce. The only difference is throughput. Think of it like batch-printing photos. Same printer, same paper, you just queue 50 in one go instead of clicking print 50 times. ## How LemAudit processes the batch CSV uploads land in the bulk_scans table with status = 'queued'. The bulk-scan-runner edge function processes rows in chunks of 5 in parallel. Each audit has a 30-second hard timeout, so 1 stuck domain cannot stall the whole batch. Failed rows are marked but do not stop the run. You see them in the result table with a red error badge. [Re-audit](/help/audits/can-i-re-audit-a-lead-s-website) them later when you fancy. Every row counts toward your [monthly audit cap](/help/billing/what-are-audit-limits-per-plan), including failures. Bulk scanning is gated to Growth and Agency plans; Starter sees the menu item with an upgrade link. ## Worked example A B2B agency targeting independent insurance brokers exported 47 domains from a directory site, pasted them into a CSV, and uploaded. Total wall-clock: 7 minutes 42 seconds. 41 audits succeeded, 6 failed (4 sites returned 403, 2 timed out on Cloudflare). Of the 41 successful audits, 12 scored under 60 — they emailed those 12 first and booked 3 calls within the week. ## When this isn't right 50 is the per-batch cap; for 500-domain lists, run 10 batches over a few days to avoid burning your monthly quota in 1 sitting. If your CSV came from a discovery tool that already has email addresses (Apollo, Hunter), you do not need LemAudit to find the contact. Just use the audit data. For ongoing scheduled rescans, use the [automatic re-audit loop](/help/advanced/how-does-automatic-re-auditing-work) instead of re-uploading the same CSV. *Category: Advanced* ## Related - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) - [What are audit limits per plan](https://lemaudit.com/help/billing/what-are-audit-limits-per-plan) --- For the interactive version visit https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work # https://lemaudit.com/help/audits/can-i-re-audit-a-lead-s-website.md --- title: "Can I re-audit a lead's website" category: audits slug: can-i-re-audit-a-lead-s-website canonical_url: https://lemaudit.com/help/audits/can-i-re-audit-a-lead-s-website last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Can I re-audit a lead's website? Yes. Open any lead, click **Re-Audit** at the top, and a fresh scan runs in 12–25 seconds. The new score and findings overwrite the old ones, but the previous run is kept in the audit history chart for trend comparison. ## What re-auditing is for A re-audit answers 1 of 3 questions: did the prospect fix anything since I last looked? does the score look the same a week later (so I can pitch with confidence)? did a recent site redesign break something I can lead with? The same audit pipeline runs every time, so 2 audits 30 days apart are directly comparable. Think of it like reweighing yourself the next morning. Same scale, same conditions, real movement. ## How it works in LemAudit Click **Re-Audit** on the lead detail page and the request hits the run-audit edge function with the lead's stored URL. The latest run becomes the "current" row in the audits table; older runs stay around and feed the historical trend chart you see on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show). The [score](/help/audits/how-is-the-health-score-calculated) and [issue list](/help/audits/what-types-of-issues-does-the-audit-find) update on the same page within 30 seconds. For batch refreshes across many leads, the [automatic re-audit loop](/help/advanced/how-does-automatic-re-auditing-work) re-runs scheduled leads at 3am UTC daily. ## Worked example An agency audited a dental practice on day 1 (score 41) and pitched a 3-month engagement. The dentist passed. Day 18, the agency clicked **Re-Audit** before a follow-up call. Score had dropped to 36 because the dentist had added 6MB of unoptimised photos. The agency opened the call with that exact change, and closed a $2,400 retainer. ## When this isn't right Re-auditing more than once a day on the same URL is wasted budget; nothing meaningful changes that fast. Each re-audit counts toward your [monthly audit limit](/help/billing/what-are-audit-limits-per-plan). For long-term tracking across many leads, a dedicated rank tracker is a better tool than weekly re-audits. *Category: SEO Audits* ## Related - [How do SEO audits work](https://lemaudit.com/help/audits/how-do-seo-audits-work) - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How does automatic re-auditing work](https://lemaudit.com/help/advanced/how-does-automatic-re-auditing-work) --- For the interactive version visit https://lemaudit.com/help/audits/can-i-re-audit-a-lead-s-website # https://lemaudit.com/help/audits/how-do-seo-audits-work.md --- title: "How do SEO audits work" category: audits slug: how-do-seo-audits-work canonical_url: https://lemaudit.com/help/audits/how-do-seo-audits-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do SEO audits work? An audit fetches the target site's HTML once, runs a free Google PageSpeed check on it, and scores 5 categories: SEO, performance, security, mobile, accessibility. The full run takes 12–25 seconds and produces 1 health score from 0 to 100. ## What an audit actually checks Each audit looks at the homepage by default. On Growth and Agency plans it also fetches the top 5 or 10 internal pages. LemAudit reads the rendered HTML, the response headers, and the free PageSpeed report. There is no crawler that hammers the whole site, no third-party DA/DR API, and no paid metric. Every signal comes from the page itself or from Google's free APIs. Think of it like a 20-point pre-purchase car inspection. Quick, cheap, and good enough to spot the deal-breakers. ## How LemAudit runs it The pipeline lives in the run-audit edge function. It opens the URL with a strict 10-second HTML timeout and 25-second PageSpeed timeout (so 1 slow site cannot stall the queue). Each check writes a row into the audits table, then the [scoring engine](/help/audits/how-is-the-health-score-calculated) collapses them into the headline score. The full [issue list](/help/audits/what-types-of-issues-does-the-audit-find) shows which checks failed at which severity. ## Worked example A regional bakery's homepage runs through the audit at 2:14pm. HTML fetch takes 1.8s, PageSpeed takes 9.2s, scoring takes 0.4s. Final score: 54. The 3 critical findings are no HTTPS redirect, missing meta description, and an LCP of 6.1s. That report becomes the lead's first sales asset. ## When this isn't right Sites behind login walls, paywalls, or aggressive bot protection (Cloudflare challenge pages, hCaptcha) cannot be audited because LemAudit never sees the real HTML. For those, [re-audit](/help/audits/can-i-re-audit-a-lead-s-website) after the prospect lifts the block. Or run the audit manually from a logged-in browser session and paste the URL of a public page. *Category: SEO Audits* ## Related - [How is the health score calculated](https://lemaudit.com/help/audits/how-is-the-health-score-calculated) - [What types of issues does the audit find](https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find) - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) --- For the interactive version visit https://lemaudit.com/help/audits/how-do-seo-audits-work # https://lemaudit.com/help/audits/how-is-the-health-score-calculated.md --- title: "How is the health score calculated" category: audits slug: how-is-the-health-score-calculated canonical_url: https://lemaudit.com/help/audits/how-is-the-health-score-calculated last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How is the health score calculated? The health score is a weighted average of 5 category scores, each on a 0–100 scale: SEO 30%, performance 25%, security 20%, mobile 15%, accessibility 10%. Sites scoring under 60 are flagged as **Hot** leads in the pipeline. ## What the score is for The score is a single number you can put on a slide, in an email subject line, or on a public report. It is not a Google ranking prediction. It is a fix-priority signal: a 38 means "many concrete things are broken right now". A 92 means "this site is in good shape, your sales pitch needs to be different". Think of it like a credit score. Useful for a 5-second triage call, not a substitute for reading the [full issue list](/help/audits/what-types-of-issues-does-the-audit-find). ## How LemAudit computes it The math lives in the score-audit edge function. Each category check returns a 0–100 sub-score. The function multiplies each by its weight and sums. If a category cannot be measured (PageSpeed timed out, accessibility skipped), LemAudit drops that category. It then re-normalises the remaining weights so the score still sums to 100. That is why an audit with no PageSpeed data can still produce a number. The Hot threshold of 60 maps to the same cutoff used by the [lead pipeline](/help/leads/how-does-the-lead-pipeline-work) and the [pipeline filters](/help/leads/how-do-i-identify-the-best-leads). ## Worked example A roofing site scores 71 SEO, 38 performance, 100 security, 64 mobile, 80 accessibility. Math: 71×0.30 + 38×0.25 + 100×0.20 + 64×0.15 + 80×0.10 = 21.3 + 9.5 + 20 + 9.6 + 8 = 68.4 → 68. Performance drags it down. The opening line of the outreach email writes itself: "your homepage takes 6 seconds to load on mobile". ## When this isn't right The score is a heuristic. A site can score 85 and still rank badly because of off-page factors LemAudit does not measure (backlinks, brand searches, local citations). For competitive markets, pair the score with a manual SERP check and a backlink tool before pitching. *Category: SEO Audits* ## Related - [How do SEO audits work](https://lemaudit.com/help/audits/how-do-seo-audits-work) - [What types of issues does the audit find](https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find) - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) --- For the interactive version visit https://lemaudit.com/help/audits/how-is-the-health-score-calculated # https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find.md --- title: "What types of issues does the audit find" category: audits slug: what-types-of-issues-does-the-audit-find canonical_url: https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find last_reviewed: 2026-05-04 source: LemAudit Help Center --- # What types of issues does the audit find? Each audit returns a list of findings tagged with 1 of 5 severities: critical, high, medium, low, info. Every finding ships with a 1-sentence fix hint. The 2 highest tiers are what your outreach email should quote first. ## What counts as a finding A finding is a single rule that failed on the page. We run about 60 rules per audit. Each rule sits in 1 of the 5 groups the [score](/help/audits/how-is-the-health-score-calculated) is built from. Critical and high findings are the ones a business owner grasps in a sentence. Medium and low ones are for whoever does the work. Think of it like a dentist's chart. Cavities (critical) get the call. Plaque buildup (medium) gets the next cleaning. ## How LemAudit grades severity The severity table lives in src/config/audit-checks.ts. A few examples: - 🔴 **Critical** — no HTTPS, noindex on homepage, broken meta title. - 🟠 **High** — LCP over 4s, no H1, missing structured data, blocked robots. - 🟡 **Medium** — missing alt text, redirect chain over 3 hops, unoptimised images. - 🔵 **Low** — duplicate meta description, missing favicon, no Open Graph image. - ℹ️ **Info** — security headers like CSP not set. Each finding card on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show) shows the rule name, the value that failed, the limit it should meet, and a fix hint. The [outreach email writer](/help/outreach/how-do-ai-outreach-emails-work) takes the top 3 critical and high findings and builds the email around them. ## Worked example A used-car dealer site returned 4 critical findings: no HTTPS, missing meta description, robots.txt blocking the sitemap, and a 1.2MB hero image. The agency's first outreach email led with the HTTPS one because it reads as a trust risk to a buyer. Reply rate that week: 22%, vs the agency's 9% baseline on generic cold mail. ## When this isn't right The audit only sees what the public page returns. JavaScript-only content, gated docs, and tracking-blocker bypasses can produce false positives. Treat any single audit as evidence, not proof — confirm with browser devtools before claiming "your site is broken" in a sales call. *Category: SEO Audits* ## Related - [How do SEO audits work](https://lemaudit.com/help/audits/how-do-seo-audits-work) - [How is the health score calculated](https://lemaudit.com/help/audits/how-is-the-health-score-calculated) - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) --- For the interactive version visit https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find # https://lemaudit.com/help/billing/can-i-cancel-my-subscription.md --- title: "Can I cancel my subscription" category: billing slug: can-i-cancel-my-subscription canonical_url: https://lemaudit.com/help/billing/can-i-cancel-my-subscription last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Can I cancel my subscription? Yes. Open **Settings → Plans → Manage subscription**, click **Cancel plan**, and confirm. You keep full access until the end of the period you already paid for. There is no fee, no phone call, and no extra form. ## What "cancel" really means here Cancelling stops the next charge. It does not delete your account or your data. Your leads, audits, reports, widget script, and brand settings stay where they are. Once the paid period ends, your account drops to a read-only state. You can sign in and look at past leads. New audits and the widget stop firing until you resubscribe. Think of it like turning off a streaming service. The library you built up stays on the shelf. You just lose the ability to add new things until you turn it back on. ## How it works in LemAudit Open **Settings → Plans** in the left sidebar, then click **Manage subscription**. That opens the secure Stripe billing portal in a new tab. Click **Cancel plan**. Stripe asks for 1 confirmation and then sends a receipt email within 1 minute. The cancel call goes through our stripe-portal edge function. We lock Stripe to the API version 2024-12-18.acacia for stability. Cancellations always take effect at period end, never mid-cycle, so you keep the days you paid for. The end date shows in **Settings → Plans** right away. See [what plans are available](/help/billing/what-plans-are-available) if you want to switch instead of cancel. ## Worked example A 2-person agency on the [Growth plan](/help/billing/what-plans-are-available) cancels on day 12 of their cycle. They keep the full 200 monthly audits and the widget for the remaining 18 days. On day 30 the plan flips to read-only. Their 47 captured leads stay searchable. When they resubscribe 2 months later, the widget starts firing on the next page view with the same script tag and brand colors. ## When this isn't right If you only need a short break, **pause** is usually a better fit than **cancel**. Pause keeps the widget live but freezes the [audit counter](/help/billing/what-are-audit-limits-per-plan). If you want your data fully removed instead of just access ended, email support@lemaudit.com to request a GDPR account deletion. Stripe refunds follow their standard terms, and we do not pro-rate cancellations ourselves. *Category: Plans & Billing* ## Related - [What plans are available](https://lemaudit.com/help/billing/what-plans-are-available) - [Is there a free trial](https://lemaudit.com/help/billing/is-there-a-free-trial) --- For the interactive version visit https://lemaudit.com/help/billing/can-i-cancel-my-subscription # https://lemaudit.com/help/billing/is-there-a-free-trial.md --- title: "Is there a free trial" category: billing slug: is-there-a-free-trial canonical_url: https://lemaudit.com/help/billing/is-there-a-free-trial last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Is there a free trial? Yes — 14 days of the Growth plan, no credit card required. You get 200 audits, the bulk scanner, the widget, the AI outreach drafts, and white-label reports. After day 14 the account pauses until you pick a [paid plan](/help/billing/what-plans-are-available). ## What the trial gives you The trial is the full Growth feature set, not a stripped-down preview. That covers everything a 2–5 person agency would use. The [audit widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website). The [bulk scanner](/help/advanced/how-does-the-bulk-scanner-work) for 50-domain batches. The [AI email + LinkedIn drafts](/help/outreach/how-do-ai-outreach-emails-work). And white-labeled [public reports](/help/reports/how-do-public-audit-reports-work). The only ceiling during trial is the 200-[audit cap](/help/billing/what-are-audit-limits-per-plan), which resets on conversion. Think of it like a 2-week test drive. Same car you would actually buy, returned at the end if it does not click. ## How LemAudit runs the trial A signup creates an entitlement row with status = 'trialing' and trial_ends_at = signup + 14 days. No payment method is collected at sign-up; we never charge surprise fees. On day 12 we send a 1-line reminder email; on day 15 the account flips to 'paused'. Paused accounts can still sign in, see existing leads, and download [PDF exports](/help/reports/can-i-export-audit-reports-as-pdf), but new audits and the widget stop firing until they convert via Stripe. If you convert mid-trial, your trial ends and the paid period starts immediately; LemAudit does not waste your remaining trial days. ## Worked example A new agency signed up Monday morning, installed the widget by lunch, and ran a 25-domain bulk scan that afternoon. Day 4 they had 31 leads and had sent 9 outreach emails, with 2 replies. Day 11 they converted to Growth before the reminder even fired. Their 200-audit counter reset on conversion, giving them a full month of headroom. ## When this isn't right If you only need a 1-time site audit with no outreach or lead capture, the trial is overkill. Use a free Lighthouse run instead. If you need more than 200 audits in 14 days for evaluation (e.g. testing a 500-prospect list), email support and we will extend the trial cap rather than make you upgrade just to evaluate. *Category: Plans & Billing* ## Related - [What plans are available](https://lemaudit.com/help/billing/what-plans-are-available) - [Can I cancel my subscription](https://lemaudit.com/help/billing/can-i-cancel-my-subscription) - [How do I set up my agency](https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency) --- For the interactive version visit https://lemaudit.com/help/billing/is-there-a-free-trial # https://lemaudit.com/help/billing/what-are-audit-limits-per-plan.md --- title: "What are audit limits per plan" category: billing slug: what-are-audit-limits-per-plan canonical_url: https://lemaudit.com/help/billing/what-are-audit-limits-per-plan last_reviewed: 2026-05-04 source: LemAudit Help Center --- # What are audit limits per plan? Starter gives you 50 audits/month, Growth 200, Agency unlimited. The counter resets on your billing date. Bulk scans, widget submissions, and manual audits all draw from the same bucket — 1 audit fired = 1 unit. ## What counts as 1 audit Anything that runs the [audit pipeline](/help/audits/how-do-seo-audits-work) end-to-end counts as 1 unit, including failed runs that returned a real error (timeouts, blocked sites). Re-audits of the same lead count separately each time. The [outreach draft](/help/outreach/how-do-ai-outreach-emails-work) regeneration is free; only the audit step itself is metered. Think of it like printing pages. The size of the page does not matter, but every press of "print" counts. ## How LemAudit tracks the counter Each successful or failed audit writes a row into audit_usage tagged with your account_id and the current billing period. The Dashboard shows the live counter (used / cap) and turns red at 90%. When the counter hits the cap, the run-audit edge function returns a quota_exceeded error instead of running the scan. The [widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) shows a soft "at capacity" message to visitors. Leads still get captured; they just do not get an instant audit. Manual audits and [bulk scans](/help/advanced/how-does-the-bulk-scanner-work) get the standard quota_exceeded error in the UI with a one-click upgrade link to the [plans page](/help/billing/what-plans-are-available). The counter resets at midnight UTC on your renewal date. ## Worked example A solo agency on Starter ran 38 manual audits and a 14-domain bulk scan in week 3: 52 total. They hit the cap and got the upgrade link in the bulk scanner. They clicked into Growth. Stripe pro-rated. Their counter reset to 0 on the new plan with 200 available. The bulk scan finished the remaining 12 domains within 4 minutes. ## When this isn't right Volume needs over 1,000/month sit better on a custom enterprise tier — contact support. If you only audit a handful of clients per month and want zero limit, the Agency plan "unlimited" is fair-use capped. The cap sits at roughly 5,000 to prevent scrape abuse. Need 10,000+? Talk to us. *Category: Plans & Billing* ## Related - [What plans are available](https://lemaudit.com/help/billing/what-plans-are-available) - [How does the Bulk Scanner work](https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work) - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) --- For the interactive version visit https://lemaudit.com/help/billing/what-are-audit-limits-per-plan # https://lemaudit.com/help/billing/what-plans-are-available.md --- title: "What plans are available" category: billing slug: what-plans-are-available canonical_url: https://lemaudit.com/help/billing/what-plans-are-available last_reviewed: 2026-05-04 source: LemAudit Help Center --- # What plans are available? 3 plans: Starter at $49/mo (50 audits), Growth at $99/mo (200 audits), Agency at $199/mo (unlimited audits + webhooks + multi-brand). All 3 include the widget, AI outreach drafts, and white-label reports. ## What each plan includes The pricing tiers map to volume and team needs, not feature gating of the basics. Every plan includes the [audit widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website), the [lead pipeline](/help/leads/how-does-the-lead-pipeline-work), the [AI outreach drafts](/help/outreach/how-do-ai-outreach-emails-work), and white-label branding. The differences: - **Starter ($49/mo)** — 50 [audits/month](/help/billing/what-are-audit-limits-per-plan). 1 brand. Email-only support. Right for solo freelancers testing the channel. - **Growth ($99/mo)** — 200 audits/month. [Bulk Scanner](/help/advanced/how-does-the-bulk-scanner-work) (50-domain batches). Up to 2 brands. Priority email support. Right for 2–5 person agencies. - **Agency ($199/mo)** — Unlimited audits. [Webhook integrations](/help/integrations/how-do-webhook-notifications-work). Up to 3 brands via [multi-brand](/help/branding/can-i-manage-multiple-brands). Dedicated Slack support channel. Right for established lead-gen shops. Think of it like phone plans. Same network, different volume buckets. ## How upgrades and downgrades work Subscription state lives in the subscriptions table and is mirrored from Stripe via the stripe-webhook edge function. We lock the Stripe API to 2024-12-18.acacia for stability. Upgrades take effect immediately and are pro-rated; downgrades take effect at the end of the current billing period. The [cancel flow](/help/billing/can-i-cancel-my-subscription) keeps your data and drops you to read-only at period end. A 14-day [free trial](/help/billing/is-there-a-free-trial) of Growth covers any tier for evaluation. ## Worked example A 4-person agency started on Starter, hit 50 audits in 11 days, upgraded to Growth mid-cycle. Stripe pro-rated the difference; their next invoice was $58.40. 3 months later they crossed 200 audits and moved to Agency for the webhook channel into their HubSpot pipeline. ## When this isn't right If you need over 1,000 audits/month with team SSO and an account manager, the Agency plan is too small — contact support about an enterprise tier. If you only need 5 audits/month for personal projects, LemAudit is overkill — Lighthouse CLI runs free locally for occasional one-off scans. *Category: Plans & Billing* ## Related - [What are audit limits per plan](https://lemaudit.com/help/billing/what-are-audit-limits-per-plan) - [Can I cancel my subscription](https://lemaudit.com/help/billing/can-i-cancel-my-subscription) - [Is there a free trial](https://lemaudit.com/help/billing/is-there-a-free-trial) --- For the interactive version visit https://lemaudit.com/help/billing/what-plans-are-available # https://lemaudit.com/help/branding/can-i-manage-multiple-brands.md --- title: "Can I manage multiple brands" category: branding slug: can-i-manage-multiple-brands canonical_url: https://lemaudit.com/help/branding/can-i-manage-multiple-brands last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Can I manage multiple brands? Yes, on the Agency plan. Open **Multi-Brand** in the sidebar to create up to 3 brand profiles, each with its own logo, color set, widget script, and report theme. Leads stay scoped to the brand that captured them. ## What each brand profile is A brand profile is a self-contained white-label identity. It has 1 logo, 2 colors, 1 Calendly URL, 1 widget embed snippet, and its own report theme. When a visitor submits the widget under brand A, the lead lands tagged for brand A. The [outreach drafts](/help/outreach/how-do-ai-outreach-emails-work) use brand A voice. The [public report](/help/reports/how-do-public-audit-reports-work) uses brand A colors. Switching context in the sidebar swaps every prospect-facing surface in one click. Think of it like running 2 storefronts off 1 inventory system. Same backend, different front doors. ## How LemAudit keeps brands separate Each brand is 1 row in the brand_profiles table tied to your agency_id. The brand-config edge function looks up the brand from the embed URL on every widget load, so 2 different scripts on 2 different sites never cross-pollinate. The [pipeline view](/help/leads/how-does-the-lead-pipeline-work) gains a brand filter when a second profile is created, and the [Dashboard](/help/getting-started/what-does-the-dashboard-show) splits its tiles per brand. For full domain isolation, point a CNAME at our edge per brand. The widget script then loads from reports.brandb.com instead of widget.lemaudit.com — see [white-label widget setup](/help/branding/is-the-audit-widget-white-labeled). ## Worked example A holding company runs 3 niche agencies: dental, legal, and home-services. Each has its own logo and palette. They created 3 brand profiles on day 1 and embedded each widget on the matching niche site. Within 4 weeks they captured 31 / 24 / 19 leads. All were visually correct. All routed to the right inbox via [webhooks](/help/integrations/how-do-webhook-notifications-work). ## When this isn't right The 3-brand cap on the Agency plan is intentional; we do not currently support "100 reseller sub-brands". For true multi-tenant SaaS resale, contact support about an enterprise tier. If you only need to swap a logo per client (without separate widgets), use the standard [logo](/help/branding/how-do-i-add-my-agency-logo) panel and ship per-client public report links instead. *Category: White-Label & Branding* ## Related - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) - [How do I customize brand colors](https://lemaudit.com/help/branding/how-do-i-customize-brand-colors) - [Is the audit widget white-labeled](https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled) --- For the interactive version visit https://lemaudit.com/help/branding/can-i-manage-multiple-brands # https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo.md --- title: "How do I add my agency logo" category: branding slug: how-do-i-add-my-agency-logo canonical_url: https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I add my agency logo? Open **Branding → General**, drop a PNG or SVG into the logo box, and click **Save**. The logo appears on the audit widget, the public report page, and the PDF export within 1 minute. ## What the logo controls Your logo is the single highest-impact white-label element. It shows in 4 places. The top-left of the [audit widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) header. The top of every [public report page](/help/reports/how-do-public-audit-reports-work). The cover of the [PDF export](/help/reports/can-i-export-audit-reports-as-pdf). The signature image of the [outreach drafts](/help/outreach/how-do-ai-outreach-emails-work). Think of it like printing your name on the front of a folder. Same content inside, but it now comes from you. ## How LemAudit stores it The upload writes to Supabase storage in the agency-assets bucket and saves the public URL into agencies.logo_url. The brand-config edge function reads that URL and ships it with the widget bootstrap. A new logo reaches every embed without needing to re-paste the script. For best fit, use a horizontal logo at least 400px wide on a transparent background. SVG is preferred — it stays sharp on retina screens and PDF exports. Square logos render but get cropped to a 4:1 frame in the widget header. ## Worked example A 1-person agency uploaded a 600x150px PNG of their logotype on signup. Their first widget impression an hour later showed the logo on a prospect's homepage in Bristol. The prospect replied to the agency's outreach email saying "I thought you guys were a big firm" — the logo did the trick. ## When this isn't right If you operate under multiple identities (white-label resale, niche sub-brands), do not overwrite the main logo every time. Use the [multi-brand panel](/help/branding/can-i-manage-multiple-brands) to keep separate logo + color sets per brand. Bitmap logos under 200px wide will look fuzzy on retina screens and in printed PDFs — re-export at 2x scale or as SVG. *Category: White-Label & Branding* ## Related - [How do I customize brand colors](https://lemaudit.com/help/branding/how-do-i-customize-brand-colors) - [Is the audit widget white-labeled](https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled) - [How do I set up my agency](https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency) --- For the interactive version visit https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo # https://lemaudit.com/help/branding/how-do-i-customize-brand-colors.md --- title: "How do I customize brand colors" category: branding slug: how-do-i-customize-brand-colors canonical_url: https://lemaudit.com/help/branding/how-do-i-customize-brand-colors last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I customize brand colors? Open **Branding → General**, set 2 hex colors (primary and accent), and click **Save**. The new colors apply to your widget, public reports, and PDF exports on the next page view. ## What the 2 colors control **Primary** is the loud one: buttons, the score ring, the call-to-action. **Accent** is the quiet one: hover states, link underlines, badge backgrounds. The pair replaces our default colors on every page a prospect sees. Your own dashboard stays neutral, so nothing looks jarring while you work. Think of it like picking a flag. 2 colors, used consistently, do all the work. ## How LemAudit applies them Both hex values are saved to your brand record. They are sent out as 2 CSS variables (`--brand-primary`, `--brand-accent`), which the [widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) and the [public report page](/help/reports/how-do-public-audit-reports-work) read. We also pick a text color, white or dark, for each one. That way text on top stays easy to read and you never pick a third color. The change applies on the next page load. To force-refresh the widget on a client site, hard-reload the host page (Ctrl+Shift+R). For the [PDF export](/help/reports/can-i-export-audit-reports-as-pdf), the next generated PDF picks up the colors; existing downloaded PDFs do not change. ## Worked example A green-and-orange agency entered #1f7a5a (primary) and #f5b800 (accent). The widget's submit button turned green; the score ring used the same green; the orange showed up as a hover underline on the public report. They tested contrast on a 60-year-old prospect's screen — both passed WCAG AA against white. Total time: 2 minutes. ## When this isn't right Avoid very pale colors (pastel pink, light yellow) for the primary — buttons fail contrast and look broken. If you use the [multi-brand](/help/branding/can-i-manage-multiple-brands) panel, set colors per brand there instead of overwriting the main set. For full theme replacement (dark mode, gradient buttons, custom typography), fork the open-source widget repo or contact support — LemAudit does not expose CSS overrides directly. *Category: White-Label & Branding* ## Related - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) - [Is the audit widget white-labeled](https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled) - [Can I manage multiple brands](https://lemaudit.com/help/branding/can-i-manage-multiple-brands) --- For the interactive version visit https://lemaudit.com/help/branding/how-do-i-customize-brand-colors # https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled.md --- title: "Is the audit widget white-labeled" category: branding slug: is-the-audit-widget-white-labeled canonical_url: https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Is the audit widget white-labeled? Yes. The widget shows your logo, your brand colors, your agency name, and your Calendly link. There is no LemAudit branding visible to your prospect anywhere in the flow. ## What "white-label" means here The widget runs entirely under your visual identity. The launcher button uses your [primary color](/help/branding/how-do-i-customize-brand-colors). The form header shows your [logo](/help/branding/how-do-i-add-my-agency-logo). The result page uses your accent color for the score ring. The "Book a call" CTA links to your Calendly. The HTML title in the iframe says "Free SEO audit by [Your Agency]". A prospect inspecting the page sees your domain in the network tab too — the script loads from widget.lemaudit.com but the displayed copy is yours. Think of it like a private-label coffee bag. Same beans inside, your label outside. ## How LemAudit delivers it When the embed script loads, it calls the brand-config edge function with your agency ID. The response carries your logo URL, hex colors, agency name, and booking URL. The widget renders using those values; LemAudit never inserts a "powered by" footer in any plan tier. For full domain swap (loading the widget script from your own subdomain), see the [custom domain setup](/help/advanced/how-do-i-manage-multiple-agency-brands) — Cloudflare CNAME + TXT verification in under 30 minutes. The widget passes captured leads back to your dashboard via the [pipeline](/help/leads/how-does-the-lead-pipeline-work) within 2 seconds. ## Worked example A reseller agency runs the widget under "Acme SEO Tools" branding. The widget script loads from widget.lemaudit.com but every visible string says Acme. A curious prospect View-Sourced the embed and saw the script src; they emailed Acme asking what platform powered it. Acme replied with a benefits list, never named the underlying vendor, and closed a $1,200/mo retainer. The prospect did not push it. ## When this isn't right If your brand requires that the script src domain itself be yours (regulated industry, paranoid client), use the custom-domain CNAME setup. The free Starter plan does include white-label. Advanced theming (custom CSS, custom fonts) is not exposed. For that, fork the open-source widget repo and host the build yourself. *Category: White-Label & Branding* ## Related - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) - [How do I customize brand colors](https://lemaudit.com/help/branding/how-do-i-customize-brand-colors) --- For the interactive version visit https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled # https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead.md --- title: "How do I get my first lead" category: getting-started slug: how-do-i-get-my-first-lead canonical_url: https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I get my first lead? Run a manual audit from the Dashboard against any URL — that one action creates your first lead in under 60 seconds. From there, install the widget for passive capture or upload a CSV to the Bulk Scanner for active prospecting. ## What "a lead" means in LemAudit A lead is one row in your pipeline that ties together a website URL, a contact email, an audit score, and an activity timeline. LemAudit creates a lead every time an audit runs, whether you triggered it or a visitor did. There is no separate "import contacts" flow because every contact comes attached to a real audit. Think of leads like inbound trial signups, except each one already came with a free diagnostic of their problem. ## How LemAudit captures them There are 3 capture paths, in increasing order of effort: 1. **Manual audit** — Type a URL into the Dashboard search box and press enter. The audit runs in 12–25 seconds and a new lead row appears. 2. **Widget** — Paste the [embed script](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) on your site. Visitors enter their URL and email; LemAudit captures both as a lead. 3. **Bulk Scanner** — Upload a CSV of up to 50 domains; the [scanner](/help/advanced/how-does-the-bulk-scanner-work) creates 1 lead per row. All 3 paths write into the same leads table, so the [pipeline view](/help/leads/how-does-the-lead-pipeline-work) treats them identically. ## Worked example A new agency on the Growth plan signed up at 10am. By 10:02am they ran a manual audit on a local plumber site scoring 47/100 — first lead. By 10:30am the widget was live on their homepage. By end of day they had 6 leads: 1 manual, 2 widget, 3 from a 25-row bulk scan of competitors' clients. ## When this isn't right Manual audits work well for testing but do not scale past 5–10/day. If you have a niche prospect list ready, the [Bulk Scanner](/help/advanced/how-does-the-bulk-scanner-work) is faster. If you have website traffic but no list, the widget compounds over weeks. Cold email tools like Apollo are a better fit when you need a leads-only flow with no audit attached. *Category: Getting Started* ## Related - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How does the Bulk Scanner work](https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work) --- For the interactive version visit https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead # https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website.md --- title: "How do I install the audit widget on my website" category: getting-started slug: how-do-i-install-the-audit-widget-on-my-website canonical_url: https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I install the audit widget on my website? Copy the 1-line script from **Widget → Install** in the LemAudit sidebar and paste it just before `` on every page where you want the audit form. The script is under 40KB and starts capturing leads on the next page view. ## What the widget actually is The widget is a small button that sits in the corner of your site. When a visitor clicks it, a form opens asking for their website and email. LemAudit runs a free SEO audit on that website and shows them a short score. Their email and the audit result land in your dashboard as a new lead. Think of it like a contact form. The form gives the visitor something useful first. You get a qualified lead in return. ## How to install it (3 minutes) 1. In LemAudit, open **Widget → Install** in the left sidebar. 2. Click **Copy script**. The tag looks like ``. 3. Paste it into your site's HTML, just before the closing `` tag. On WordPress, use **Appearance → Theme File Editor → footer.php**. On Webflow, use **Project Settings → Custom Code → Footer**. On Shopify, use **Online Store → Themes → Edit code → theme.liquid**. 4. Open your site in a fresh browser tab. The button shows up in the bottom-right corner. The script is unique to your agency. It carries your logo and colors automatically — see [how to customize brand colors](/help/branding/how-do-i-customize-brand-colors) if those look wrong. ## Worked example A plumbing-niche agency installed the script on their homepage and 1 service page. In the first 7 days they captured 14 leads, of which 4 scored as **Hot** (site health below 60). At their usual close rate of 1 in 8, that is almost 2 retainers from a 3-minute install. ## When this isn't right Static-only platforms with no `` access (some single-page Notion sites) will not work — use the [hosted audit page](/help/getting-started/how-do-i-get-my-first-lead) instead. If your site runs a strict CSP, allow `widget.lemaudit.com` in `script-src`. The widget needs HTTPS; it refuses to load on HTTP origins. *Category: Getting Started* ## Related - [How do I set up my agency](https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency) - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) - [How do I customize brand colors](https://lemaudit.com/help/branding/how-do-i-customize-brand-colors) --- For the interactive version visit https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website # https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency.md --- title: "How do I set up my agency" category: getting-started slug: how-do-i-set-up-my-agency canonical_url: https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I set up my agency? Open **Branding** in the left sidebar, upload a logo, set 2 brand colors, and paste a Calendly link. The whole setup takes 5 minutes and turns on the audit widget and white-label reports. ## What "agency setup" means here Your agency profile is the layer LemAudit wraps around every client-facing surface: the [audit widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website), the public report page, the outreach email signature, and the booking CTA. Until you set it up, your prospects see LemAudit branding instead of yours. Think of it like setting up a coffee shop. The espresso machine works on day 1, but if the cup has no logo, no one knows it came from your shop. ## How LemAudit stores it Your settings live in the agencies table and load on every public route through the brand-config edge function. The Branding page writes 4 fields: logo_url (file in storage), primary_hex, accent_hex, and booking_url. Open **Branding → General**, drop a PNG or SVG into the logo box, pick a primary color and an accent color. Paste your Calendly URL into **Booking CTA**. Click **Save**. The widget script and report pages pick up the change on the next page view. ## Worked example A 3-person SEO agency signed up at 9:14am on a Monday. By 9:21am they had uploaded their logo, set primary #1f7a5a and accent #f5b800, and added their Calendly link. They installed the widget on their homepage at 9:30am and captured 2 leads before lunch, both showing their brand, not ours. ## When this isn't right If you run multiple brands under one account, set up the primary brand here first, then use the [multi-brand panel](/help/branding/can-i-manage-multiple-brands) to add the others. Solo freelancers selling under their own name can skip the logo and use a simple wordmark — the brand color settings still apply. *Category: Getting Started* ## Related - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) --- For the interactive version visit https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency # https://lemaudit.com/help/getting-started/what-does-the-dashboard-show.md --- title: "What does the dashboard show" category: getting-started slug: what-does-the-dashboard-show canonical_url: https://lemaudit.com/help/getting-started/what-does-the-dashboard-show last_reviewed: 2026-05-04 source: LemAudit Help Center --- # What does the dashboard show? Open the **Dashboard** from the left sidebar to see four live tiles: total leads, hot leads, recent activity, and your conversion funnel. Each tile updates within 30 seconds of a new audit. ## What the dashboard is The Dashboard is your daily home screen in LemAudit. Think of it like the front page of a sales CRM, but built around one job: turn a website visitor into a paying client. Every number on this page comes from a real audit captured by your widget or a bulk scan. There is no demo data and no smoothing. Each tile answers one question. **Total leads** tells you how many people you have. **Hot leads** tells you who to call first. **Recent activity** tells you what changed today. **Conversion funnel** tells you where deals are stuck. ## How LemAudit builds it The Dashboard reads from 3 tables: leads, audits, and lead_events. The hot-lead tile filters leads where the audit health score is below 60, which is the same threshold used by the [lead pipeline](/help/leads/how-does-the-lead-pipeline-work) and the [scoring engine](/help/audits/how-is-the-health-score-calculated). The funnel chart groups leads by their current stage: new, contacted, replied, converted. You move a lead between stages on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show). Recent activity lists the last 20 events: new lead, report opened, email sent, stage changed. ## Worked example A 2-person agency opens the Dashboard on day 14 of using LemAudit. They see 47 total leads, 9 hot, and 3 in the "replied" funnel stage. Recent activity shows 2 reports opened in the last 4 hours. They open the 2 hottest replies first, book 1 call, and close 1 retainer that week. ## When this isn't right The Dashboard is a snapshot, not a report. For trend analysis across months, open the [audit history](/help/audits/how-do-seo-audits-work) page or pull the data through the [webhook integration](/help/integrations/how-do-webhook-notifications-work) into your own BI tool. Numbers can lag by up to 60 seconds while the queue catches up. *Category: Getting Started* ## Related - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) --- For the interactive version visit https://lemaudit.com/help/getting-started/what-does-the-dashboard-show # https://lemaudit.com/help/integrations/how-do-i-connect-calendly.md --- title: "How do I connect Calendly" category: integrations slug: how-do-i-connect-calendly canonical_url: https://lemaudit.com/help/integrations/how-do-i-connect-calendly last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I connect Calendly? Open **Branding → Booking CTA**, paste your Calendly URL (e.g. https://calendly.com/your-agency/30min), and click **Save**. The "Book a call" button now shows on your widget result screen and on every public report. ## What "connect Calendly" does We do not pull events from your Calendly account or sync attendees. We just embed your booking link as the primary call-to-action on every prospect-facing surface. When a prospect clicks **Book a call**, they go straight into the Calendly flow. They pick a time, add their email, and get a confirmation. The same flow as on calendly.com. Think of it like adding a "phone number" field on a business card. The card does not make calls; it tells people how to reach you. ## How LemAudit embeds it The URL writes to agencies.booking_url and is read by the brand-config edge function. From there it lights up 3 places: the widget's post-audit result screen, the [public report page](/help/reports/how-do-public-audit-reports-work) header, and the closing line of every [outreach email draft](/help/outreach/how-do-ai-outreach-emails-work). When you change the URL, the new link replaces the old one within 60 seconds across every embed and every newly generated email — no redeploy needed. For multiple booking pages per brand (sales vs onboarding), use the [multi-brand panel](/help/branding/can-i-manage-multiple-brands) and assign a different Calendly URL per profile. ## Worked example A consultant pasted their 30-minute discovery URL into the Booking CTA field on day 1. Across the next 30 days, 47 prospects opened their public report and 9 clicked **Book a call**. Of those 9, 6 booked a slot. Calendly's own analytics showed the booking source as the consultant's domain, confirming the link tracked correctly through the embed. ## When this isn't right If you use a different tool (Cal.com, SavvyCal, Chili Piper, HubSpot Meetings), paste that link instead. The field is a plain URL and takes any booking tool. For sales teams that use round-robin assignment, Calendly Teams works the same way. Just paste the team page URL. LemAudit does not yet support inline Calendly embeds. The booking opens in a new tab. We kept it simple to avoid CSP clashes on host pages. *Category: Integrations* ## Related - [How do I set up my agency](https://lemaudit.com/help/getting-started/how-do-i-set-up-my-agency) - [Is the audit widget white-labeled](https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled) - [How do public audit reports work](https://lemaudit.com/help/reports/how-do-public-audit-reports-work) --- For the interactive version visit https://lemaudit.com/help/integrations/how-do-i-connect-calendly # https://lemaudit.com/help/integrations/how-do-webhook-notifications-work.md --- title: "How do webhook notifications work" category: integrations slug: how-do-webhook-notifications-work canonical_url: https://lemaudit.com/help/integrations/how-do-webhook-notifications-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do webhook notifications work? Paste a webhook URL into **Branding → Notifications → Webhook URL**. LemAudit POSTs a JSON payload to it every time a lead is captured, an audit completes, or a report is opened. Use it to push leads into Zapier, Slack, HubSpot, or any tool that listens for HTTPS POST. ## What gets sent 3 events fire by default: `lead.created`, `audit.completed`, and `report.opened`. Each POST carries a stable JSON shape: event name, timestamp, lead_id, lead email, audit URL, [health score](/help/audits/how-is-the-health-score-calculated), and the top 3 [findings](/help/audits/what-types-of-issues-does-the-audit-find). Hot-lead flagging is included on lead.created so your downstream automation can route urgent leads differently. Think of it like SMS forwarding. LemAudit keeps the original; your other tool gets a copy in real time. ## How LemAudit delivers it Each event queues through the dispatch-webhook edge function. We POST with a 5-second timeout. On 5xx errors we retry 3 times with backoff (1s, 4s, 16s). 4xx responses are treated as permanent failures and not retried — fix the URL and replay manually from **Branding → Notifications → Recent deliveries**. The payload is signed with HMAC-SHA256 in the `X-LemAudit-Signature` header; verify it with the secret shown next to your webhook URL. For Slack delivery (a formatted message, not raw JSON), use the Slack toggle in the same panel. It wraps the payload into Slack Block Kit for you. For more granular control, point Zapier at the webhook URL and route from there. The [pipeline view](/help/leads/how-does-the-lead-pipeline-work) shows the same lead.created event in the activity timeline so you can confirm delivery without leaving LemAudit. ## Worked example A 5-person agency pointed their webhook at a Zapier Catch Hook, then mapped `lead.created` to a HubSpot "Create Contact" action and a Slack #leads channel post. From day 1, every new lead landed in HubSpot with the audit score as a custom field, and the team saw a real-time Slack ping. Their median response time dropped from 4 hours to 11 minutes. ## When this isn't right Webhooks are an Agency-plan feature; lower [tiers](/help/billing/what-plans-are-available) get email alerts only. For inbound integrations (e.g. importing leads from another tool into LemAudit), webhooks are the wrong direction — use the Bulk Scanner CSV upload instead. If your tool needs a strict OpenAPI contract or rate-limit headers, contact support. The webhook is light by design and not a full REST API. *Category: Integrations* ## Related - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How do I connect Calendly](https://lemaudit.com/help/integrations/how-do-i-connect-calendly) --- For the interactive version visit https://lemaudit.com/help/integrations/how-do-webhook-notifications-work # https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads.md --- title: "How do I identify the best leads" category: leads slug: how-do-i-identify-the-best-leads canonical_url: https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do I identify the best leads? Sort the **Leads** table by health score ascending and start at the top. Anything under 60 with at least 2 critical findings is a Hot lead — that is where the close rate is 3–4x your baseline. ## What "best" means here A best-lead has 3 traits. First: room to improve (low score). Second: real money on the line (active business site, not a hobby blog). Third: reachable (email captured or public WHOIS contact). All 3 matter. A 12-score on a parked domain is worthless. Think of it like fishing. The signal is not the biggest splash, it is the right kind of splash in the right water. ## How LemAudit flags Hot leads The Hot tag is computed every time the [scoring engine](/help/audits/how-is-the-health-score-calculated) returns a score under 60 and the audit found ≥ 2 critical-severity items in the [issue list](/help/audits/what-types-of-issues-does-the-audit-find). The flag is stored on leads.is_hot and surfaces as a red badge in the pipeline. Sorting by **Health score ascending** in the [pipeline view](/help/leads/how-does-the-lead-pipeline-work) puts your highest-effort, highest-payoff leads at row 1. The [outreach generator](/help/outreach/how-do-ai-outreach-emails-work) leans on the same signals: it quotes the top 3 critical findings as the opening hook. ## Worked example A B2B agency ran a 50-domain bulk scan on local insurance brokers. 31 came back with scores under 60. Of those, 9 were Hot (≥ 2 critical, real broker site, reachable). They emailed only those 9, replied within 48 hours to all 4 responses, and booked 2 calls. Their close rate on Hot-only outreach: 22%, vs 4% on the full 50-list a month earlier. ## When this isn't right Score-based sorting biases toward broken sites. Some markets (legal, finance) score high because the sites were built well. They still need help with content or local SEO. Work those leads from a keyword-research tool, not from this score alone. Avoid pitching leads under score 25 unless you also see real revenue signals; very low scores often mean the business is already gone. *Category: Leads & Pipeline* ## Related - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How is the health score calculated](https://lemaudit.com/help/audits/how-is-the-health-score-calculated) - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) --- For the interactive version visit https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads # https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work.md --- title: "How does the lead pipeline work" category: leads slug: how-does-the-lead-pipeline-work canonical_url: https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How does the lead pipeline work? Open **Leads** in the sidebar. Every captured lead lives in 1 of 4 stages: New, Contacted, Qualified, Converted. You move a lead between stages from its detail page; the Dashboard funnel updates within 30 seconds. ## What the pipeline is The pipeline is a simple 4-column kanban that mirrors how an agency actually works a list: capture, reach out, get a reply, close. Each stage exists because a different next-action lives there. New = audit and send mail. Contacted = wait or follow up. Qualified = book a call. Converted = stop selling, start delivering. Think of it like a 4-bucket inbox. Email goes from Inbox to Replied to Booked to Done. ## How LemAudit tracks stage moves Stage lives in the leads.stage column. Every move writes a row into lead_events with the timestamp and the user who made the change. The [dashboard funnel chart](/help/getting-started/what-does-the-dashboard-show) groups by current stage; the [conversion funnel analytics](/help/leads/how-do-i-identify-the-best-leads) reads the events table to show drop-off rates between stages over time. The [outreach email generator](/help/outreach/how-do-ai-outreach-emails-work) reads stage when picking which template variant to use, so a Qualified lead gets a different draft than a New one. ## Worked example An agency captured 40 leads in week 1: 40 New. By Friday they had emailed 28, moving them to Contacted. 6 replied, moving to Qualified. 2 booked calls and signed, moving to Converted. The funnel chart on the Dashboard read 12 / 22 / 4 / 2. The 22% New→Contacted gap told them their bottleneck was outreach speed, not reply rate. ## When this isn't right The pipeline is a sales tool, not a project tracker. Once a lead is Converted, manage delivery in your project management app of choice (Notion, ClickUp, Asana). For complex multi-step deals (legal, RFPs), a dedicated CRM like HubSpot maps better to your stages — pipe LemAudit leads in via the [webhook integration](/help/integrations/how-do-webhook-notifications-work). *Category: Leads & Pipeline* ## Related - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) --- For the interactive version visit https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work # https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show.md --- title: "What information does a lead detail page show" category: leads slug: what-information-does-a-lead-detail-page-show canonical_url: https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show last_reviewed: 2026-05-04 source: LemAudit Help Center --- # What information does a lead detail page show? Click any lead row in the **Leads** table to open its detail page. You see the contact info, the full audit, the AI-drafted email and LinkedIn note, the activity timeline, and a **Re-Audit** button. Everything you need to send 1 message in under 60 seconds. ## What is on the page The detail page is the working surface for 1 prospect. It collapses 5 things into 1 view. Who they are: email, URL, capture date. What is broken on their site (the [issue list](/help/audits/what-types-of-issues-does-the-audit-find) and [health score](/help/audits/how-is-the-health-score-calculated)). The message you should send. What has happened so far (timeline). The controls to update the lead. Think of it like the back of a baseball card. All the stats in 1 place so you can pitch without flipping pages. ## How LemAudit assembles it The page reads from 4 tables: leads (contact info), audits (current scan), audit_findings (the issue rows), and lead_events (timeline). The [outreach drafts](/help/outreach/how-do-ai-outreach-emails-work) live alongside the lead and regenerate when you click **Re-Audit**. Stage moves from the [pipeline view](/help/leads/how-does-the-lead-pipeline-work) write to the same lead_events table that drives the timeline, so the page always reflects the latest state without a refresh. The "Public report" button copies the same shareable link covered in [how public reports work](/help/reports/how-do-public-audit-reports-work). ## Worked example An agency opens the detail page for a roofer scoring 47. The audit panel shows 4 critical findings; the AI email draft already quotes 3 of them. The timeline shows the lead was captured 2 hours ago via the widget. The agency edits 2 lines of the draft, hits send, and updates the stage from New to Contacted. Total time on page: 90 seconds. ## When this isn't right The page is built for 1 prospect at a time. For tasks across many leads (bulk-tagging, mass status changes), use the bulk actions in the [pipeline view](/help/leads/how-does-the-lead-pipeline-work) instead. For long-term account management with multiple contacts per company, push the lead to a CRM via the [webhook integration](/help/integrations/how-do-webhook-notifications-work). Treat LemAudit as the top-of-funnel only. *Category: Leads & Pipeline* ## Related - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) - [What types of issues does the audit find](https://lemaudit.com/help/audits/what-types-of-issues-does-the-audit-find) --- For the interactive version visit https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show # https://lemaudit.com/help/outreach/can-i-customize-outreach-templates.md --- title: "Can I customize outreach templates" category: outreach slug: can-i-customize-outreach-templates canonical_url: https://lemaudit.com/help/outreach/can-i-customize-outreach-templates last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Can I customize outreach templates? Yes. Every draft is fully editable inline on the lead detail page — change the subject, body, or LinkedIn note and click **Save**. Edits are stored per-lead, so your changes never overwrite the AI draft on other leads. ## What you can change The AI draft has 3 editable parts: subject line, email body, and LinkedIn note. Edit any of them, all of them, or none. LemAudit does not enforce a tone or structure on your edits. The original AI version stays cached, so a later **Regenerate** restores it if you decide your edit went too far. Think of it like Google Docs suggestion mode. The base text is there; your edits live on top. ## How LemAudit stores edits Edits write to leads.outreach_email_draft (and leads.outreach_linkedin_draft) and trigger a "draft_edited" event in the [activity timeline](/help/leads/what-information-does-a-lead-detail-page-show). Re-auditing the lead does not overwrite your edited draft — LemAudit keeps your version unless you click **Regenerate**. For agency-wide changes (a different brand voice across every new lead), edit the prompt template in **Settings → Outreach → AI prompt**. That changes how every future [email](/help/outreach/how-do-ai-outreach-emails-work) and [LinkedIn note](/help/outreach/does-lemaudit-generate-linkedin-messages) is generated for new leads, without touching existing drafts. ## Worked example An agency targeting law firms found the default tone too casual. They edited the prompt template once. The note read: "use a formal, third-person voice. No contractions. Reference the practice area when possible." From then on, every new draft for a law-firm domain opened with "Smith & Co — our analysis indicates…". The old "Hi — we noticed…" was gone. Reply rates from that vertical went from 6% to 14% over 4 weeks. ## When this isn't right If you rewrite every draft from scratch, the prompt is the wrong fit, not the AI. Tweak the prompt instead of editing every lead. For other languages (Spanish, French), edit the prompt with the target language. Gemini Flash translates well but it defaults to English. *Category: AI Outreach* ## Related - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) - [Does LemAudit generate LinkedIn messages](https://lemaudit.com/help/outreach/does-lemaudit-generate-linkedin-messages) - [What information does a lead detail page show](https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show) --- For the interactive version visit https://lemaudit.com/help/outreach/can-i-customize-outreach-templates # https://lemaudit.com/help/outreach/does-lemaudit-generate-linkedin-messages.md --- title: "Does LemAudit generate LinkedIn messages" category: outreach slug: does-lemaudit-generate-linkedin-messages canonical_url: https://lemaudit.com/help/outreach/does-lemaudit-generate-linkedin-messages last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Does LemAudit generate LinkedIn messages? Yes. Every audit produces a 280-character LinkedIn connection request alongside the email draft. Open the lead, copy the message, paste it into the connection note on LinkedIn. Email + LinkedIn together typically lifts reply rates by 1.5–2x over email alone. ## What the LinkedIn draft is for LinkedIn caps connection notes at 300 characters. It rewards a soft, human first touch. The draft is intentionally not a sales pitch — it is 2 short sentences that name the prospect's domain, mention 1 thing you noticed, and ask to connect. The hard sell happens in the [follow-up email](/help/outreach/how-do-ai-outreach-emails-work) once they accept. Think of it like saying hello at a conference. You do not pitch in the hallway; you ask for a coffee. ## How LemAudit writes it The same generate-outreach edge function that writes the [email draft](/help/outreach/how-do-ai-outreach-emails-work) emits a second, shorter output for LinkedIn. It uses our AI gateway (Gemini Flash). It reads the top 1 finding from the [issue list](/help/audits/what-types-of-issues-does-the-audit-find). It renders a 2-sentence note under 280 characters, leaving a 20-character buffer for safety. You will find the message under the **LinkedIn** tab on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show). Click **Copy** and paste it into the connection request note. ## Worked example An agency paired the email and LinkedIn drafts on a batch of 18 dental practices. They sent the LinkedIn note first, waited 24 hours, then sent the email only to leads who had not yet accepted. Acceptance rate: 11 of 18. Email reply rate from the remaining 7: 3 of 7. Total bookings from 18 prospects: 4 calls, vs 1 from email-only the prior week. ## When this isn't right LinkedIn limits free accounts to roughly 100 connection requests per week. It rate-limits paste-and-send patterns. For high-volume outreach, use a Sales Navigator account and pace requests. For B2C prospects (restaurants, salons, plumbers) the owner is rarely on LinkedIn. Skip this draft and lean on [email](/help/outreach/how-do-ai-outreach-emails-work) only. *Category: AI Outreach* ## Related - [How do AI outreach emails work](https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work) - [Can I customize outreach templates](https://lemaudit.com/help/outreach/can-i-customize-outreach-templates) - [How do I identify the best leads](https://lemaudit.com/help/leads/how-do-i-identify-the-best-leads) --- For the interactive version visit https://lemaudit.com/help/outreach/does-lemaudit-generate-linkedin-messages # https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work.md --- title: "How do AI outreach emails work" category: outreach slug: how-do-ai-outreach-emails-work canonical_url: https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do AI outreach emails work? Every audit triggers a personalised email draft that quotes the prospect's top 3 findings, names 1 quick win, and ends with a Calendly CTA. The draft sits on the lead detail page; you can send it as-is or edit any line first. ## What the AI actually does The generator reads the audit's [critical and high findings](/help/audits/what-types-of-issues-does-the-audit-find). It picks the 3 best ones. It writes a 4-paragraph email around them. It puts the prospect's domain in the subject line. It names 1 finding in the opening line. There is no generic template — 2 leads with different findings get different emails. Think of it like a cover letter. The bones are repeatable, the details are not. ## How LemAudit generates it The draft is created by the generate-outreach edge function, which calls our AI gateway (Gemini Flash) with the audit's findings as context. Output lands in the leads.outreach_email_draft column and renders on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show). It regenerates automatically when you [re-audit](/help/audits/can-i-re-audit-a-lead-s-website) the lead, so the email always matches the latest scan. If your agency profile has a Calendly link saved on the [Branding](/help/getting-started/how-do-i-set-up-my-agency) page, the CTA links to it. Otherwise it falls back to a "reply to this email" CTA. ## Worked example A flower-shop site scored 52 with critical findings: no HTTPS, missing meta description, LCP of 5.4s. The generated email opened: "Hi — your bouquetshop.com loads in 5.4 seconds on mobile. That is roughly when half of visitors give up." That single line got a reply from 4 of 11 sends in the agency batch. Reply rate: 36%, well above their 8% baseline on generic mail. ## When this isn't right The AI is a starting point, not a sender. For lists over 50 prospects, use a cold-email tool (Smartlead, Instantly) for sending, deliverability, and inbox rotation. LemAudit only writes the draft. The drafts are tuned for SMB owners. For enterprise outreach, [edit the templates](/help/outreach/can-i-customize-outreach-templates) to match a formal voice. *Category: AI Outreach* ## Related - [Does LemAudit generate LinkedIn messages](https://lemaudit.com/help/outreach/does-lemaudit-generate-linkedin-messages) - [Can I customize outreach templates](https://lemaudit.com/help/outreach/can-i-customize-outreach-templates) - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) --- For the interactive version visit https://lemaudit.com/help/outreach/how-do-ai-outreach-emails-work # https://lemaudit.com/help/reports/can-i-export-audit-reports-as-pdf.md --- title: "Can I export audit reports as PDF" category: reports slug: can-i-export-audit-reports-as-pdf canonical_url: https://lemaudit.com/help/reports/can-i-export-audit-reports-as-pdf last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Can I export audit reports as PDF? Open any lead, click **Download PDF** in the top right. LemAudit renders a branded PDF using your logo and colors in 3–6 seconds. Attach it to a proposal, paste it into a Notion doc, or email it as a follow-up. ## What the PDF contains The PDF carries the same content as the [public report page](/help/reports/how-do-public-audit-reports-work), styled for print. It opens with a cover that pairs your logo with the prospect domain. Inside: the [health score](/help/audits/how-is-the-health-score-calculated) ring, the category breakdown, the full [issue list](/help/audits/what-types-of-issues-does-the-audit-find) with fix hints, and a closing page with your contact info. Page count is usually 4–7 depending on how many findings the audit produced. Think of it like printing a Google Doc. Same body, different binding. ## How LemAudit renders it The export hits the render-pdf edge function. It loads the public report URL in headless Chromium, applies a print-optimised CSS sheet (`@media print`), and saves the result back to storage. The download starts as soon as the file is ready. PDFs are not cached server-side; each click renders a fresh copy, so the latest [re-audit](/help/audits/can-i-re-audit-a-lead-s-website) data is always in the export. The branding pulled into the cover comes from your [logo](/help/branding/how-do-i-add-my-agency-logo) and [color settings](/help/branding/how-do-i-customize-brand-colors), so a brand swap in the dashboard reflects on the next PDF you generate. ## Worked example A B2B agency exported PDFs for 9 enterprise prospects on a Friday afternoon. They attached each one to a Monday-morning email. Average file size: 380KB. Average render time: 4.1 seconds. Of the 9, 5 prospects forwarded the PDF internally to a colleague. The agency tracked who replied, which is the whole point. A PDF survives the inbox-to-meeting handoff better than a link does. ## When this isn't right For very long audits (multi-page sites with 100+ findings), the PDF can run to 20+ pages and become a wall of text. In that case, send the [public link](/help/reports/how-do-public-audit-reports-work) instead — the web view supports collapse, scroll, and search. PDFs are not editable; if your prospect needs a co-edit, send a Google Doc summary alongside. *Category: Reports & Sharing* ## Related - [How do public audit reports work](https://lemaudit.com/help/reports/how-do-public-audit-reports-work) - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) - [What information does a lead detail page show](https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show) --- For the interactive version visit https://lemaudit.com/help/reports/can-i-export-audit-reports-as-pdf # https://lemaudit.com/help/reports/how-do-public-audit-reports-work.md --- title: "How do public audit reports work" category: reports slug: how-do-public-audit-reports-work canonical_url: https://lemaudit.com/help/reports/how-do-public-audit-reports-work last_reviewed: 2026-05-04 source: LemAudit Help Center --- # How do public audit reports work? Every audit has a public link you can share without a login. Open a lead, click **Copy report link** at the top, and send it. The page loads in under 2 seconds and uses your agency logo and brand colors. ## What a public report is A public report is a read-only web page that shows one prospect their full audit. The link looks like https://reports.lemaudit.com/r/abc123. Anyone with the link can open it. Nobody can edit it, leave comments, or see your other leads. Think of it like a Google Doc set to "anyone with the link can view". You stay in control. You can revoke the link at any time from the lead detail page, and the URL stops working within 5 minutes. ## How LemAudit builds it The link is a signed slug stored in the lead row. When a prospect opens it, our edge function fetches the audit results, applies your [brand logo and colors](/help/branding/how-do-i-customize-brand-colors), and renders the same scoring breakdown the [scoring engine](/help/audits/how-is-the-health-score-calculated) used. Anonymous read access is the only RLS rule that allows it, scoped to the single signed slug. When the prospect opens the link, LemAudit fires a "report_opened" event into the lead timeline. You see it on the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show) within 30 seconds, which is your cue to send the follow-up email. ## Worked example A web agency emails a public report to a roofing company on a Tuesday. The roofer opens it 3 hours later and spends 4 minutes on the page. The agency sees the open event, sends a 2-line follow-up that night, and books a 30-minute call on Thursday. Time from audit to booked call: 48 hours. ## When this isn't right If the prospect needs an offline copy, send a [PDF export](/help/reports/can-i-export-audit-reports-as-pdf) instead. Public links should not contain client-confidential data because anyone with the URL can view the page. For NDA work, keep the audit private and walk the client through it on a screen-share. *Category: Reports & Sharing* ## Related - [Can I export audit reports as PDF](https://lemaudit.com/help/reports/can-i-export-audit-reports-as-pdf) - [How do I add my agency logo](https://lemaudit.com/help/branding/how-do-i-add-my-agency-logo) - [What information does a lead detail page show](https://lemaudit.com/help/leads/what-information-does-a-lead-detail-page-show) --- For the interactive version visit https://lemaudit.com/help/reports/how-do-public-audit-reports-work # https://lemaudit.com/help/troubleshooting/an-audit-failed-what-should-i-do.md --- title: "An audit failed. What should I do" category: troubleshooting slug: an-audit-failed-what-should-i-do canonical_url: https://lemaudit.com/help/troubleshooting/an-audit-failed-what-should-i-do last_reviewed: 2026-05-04 source: LemAudit Help Center --- # An audit failed. What should I do? Click **Re-Audit** once. 7 in 10 failed audits succeed on the second try because the cause is a transient network blip. If it fails again, the URL is almost certainly behind a bot block, a login wall, or is offline. ## What "failed" actually means A failed audit is any run where the [run-audit edge function](/help/audits/how-do-seo-audits-work) could not produce a [health score](/help/audits/how-is-the-health-score-calculated). The function returns 1 of 4 reasons: HTTP fetch timeout (10 seconds), PageSpeed timeout (25 seconds), DNS resolution error, or HTTP status >= 400 from the target. The error appears as a red banner on the lead detail page with the specific reason. Think of it like a pizza driver who could not deliver. The address was wrong, the road was closed, or no one answered. ## How to diagnose in 30 seconds Walk these 4 checks in order: 1. **Open the URL in your browser.** If it does not load for you, it will not load for LemAudit. 2. **Check for a Cloudflare or hCaptcha challenge.** If a "verify you are human" page appears, LemAudit sees that page, not the real site, and abandons. 3. **Confirm HTTPS.** `http://` URLs that 301 to `https://` work; pure-HTTP sites with no redirect fail. 4. **Check your [audit quota](/help/billing/what-are-audit-limits-per-plan).** If you are at the cap, every new audit fails immediately with a quota message. If all 4 pass and the audit still fails, the [widget troubleshooter](/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong) covers the related case where audits run from the embedded widget specifically. ## Worked example An agency saw 4 failed audits in a row on a regional law firm's site. Browser load worked. Reason: Cloudflare bot fight mode was on. The agency emailed the firm asking them to whitelist crawler.lemaudit.com for 5 minutes; the next audit completed in 14 seconds and scored 62. They closed the deal a week later. ## When this isn't right Some sites are genuinely unauditable: behind SSO, IP-allowlisted, or Cloudflare zero-trust gated. For those, screenshot the prospect's homepage manually and write outreach without an audit. Tools like Lighthouse CLI run from your own machine bypass remote bot blocks; that is a fair fallback when LemAudit cannot reach the site at all. *Category: Troubleshooting* ## Related - [How do SEO audits work](https://lemaudit.com/help/audits/how-do-seo-audits-work) - [What are audit limits per plan](https://lemaudit.com/help/billing/what-are-audit-limits-per-plan) - [The widget isn't showing on my website. What's wrong](https://lemaudit.com/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong) --- For the interactive version visit https://lemaudit.com/help/troubleshooting/an-audit-failed-what-should-i-do # https://lemaudit.com/help/troubleshooting/i-m-not-getting-any-leads-what-should-i-do.md --- title: "I'm not getting any leads. What should I do" category: troubleshooting slug: i-m-not-getting-any-leads-what-should-i-do canonical_url: https://lemaudit.com/help/troubleshooting/i-m-not-getting-any-leads-what-should-i-do last_reviewed: 2026-05-04 source: LemAudit Help Center --- # I'm not getting any leads. What should I do? Submit your own real audit through the widget on the host page. If your test lead lands in the dashboard within 30 seconds, the widget works — your problem is traffic, not the tool. If it does not, the widget is misconfigured. ## What "no leads" really means Empty pipeline has 2 root causes. Either the capture path is broken (widget not loading, audit endpoint rejecting submissions). Or the capture path is fine but no one is using it. The fix for each is completely different, so diagnose first. Think of it like an empty fishing net. Either the net has a hole, or there are no fish in this pond. ## How to diagnose in 5 minutes Walk these 4 checks in order: 1. **Confirm the widget loads.** Visit your site as a stranger. Do you see the launcher button? If not, see [the widget troubleshooter](/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong). 2. **Submit a real test.** Use a separate email address and your own real domain. The lead should appear in **Leads** within 30 seconds. If not, check **Branding → Notifications** to confirm the agency is active. 3. **Check your traffic.** A widget on a 200-visit/month page captures roughly 2–6 leads/month. If your traffic is under 100/month, the widget alone will not feed you — pair it with active outreach. 4. **Run a [bulk scan](/help/advanced/how-does-the-bulk-scanner-work)** of 25 prospect domains. That gives you 25 immediate leads with no traffic dependency, which is the right move when the widget is healthy but slow. If your dashboard shows leads but [notification emails are missing](/help/troubleshooting/lead-notification-emails-aren-t-arriving-why), the capture is fine; only the alerting is broken. ## Worked example An agency installed the widget on their homepage and waited 2 weeks. 0 leads. Their analytics showed 18 homepage visitors in that period. The widget was working — there was nothing wrong. They ran a 40-domain bulk scan of local plumbers, got 40 leads same day, and used the [outreach drafts](/help/outreach/how-do-ai-outreach-emails-work) to email 12 of them. 2 replied. 1 booked. The pipeline was full inside 72 hours. ## When this isn't right If you are paying for LemAudit but have neither traffic nor a target list, the [widget](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) is the wrong product fit. Build a prospect list first (Apollo, Sales Navigator, Yell scrape) and then use the Bulk Scanner. LemAudit is a lead-quality engine, not a lead-discovery engine. *Category: Troubleshooting* ## Related - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) - [How does the Bulk Scanner work](https://lemaudit.com/help/advanced/how-does-the-bulk-scanner-work) --- For the interactive version visit https://lemaudit.com/help/troubleshooting/i-m-not-getting-any-leads-what-should-i-do # https://lemaudit.com/help/troubleshooting/lead-notification-emails-aren-t-arriving-why.md --- title: "Lead notification emails aren't arriving. Why" category: troubleshooting slug: lead-notification-emails-aren-t-arriving-why canonical_url: https://lemaudit.com/help/troubleshooting/lead-notification-emails-aren-t-arriving-why last_reviewed: 2026-05-04 source: LemAudit Help Center --- # Lead notification emails aren't arriving. Why? Check 3 things in this order: your spam folder, the **Branding → Notifications** toggle, and the reply-to address. 9 in 10 missing-email reports are a spam filter or a typo. New leads still show in your dashboard within 30 seconds. ## What "missing" usually means A lead notification is one short email LemAudit sends each time a new lead lands. It comes from no-reply@lemaudit.com. If you do not see it, the email almost always arrived but landed somewhere you did not look. Less often, the toggle is off, or your mail server bounced it because the reply-to address is broken. Think of it like a doorbell. The doorbell rings every time, but if your phone is on silent, you only hear it when you check. ## How LemAudit sends and tracks it Each lead capture queues an email through our send-email edge function, which uses Resend with the lemaudit.com sender domain. We log the attempt in lead_events with one of 3 outcomes: sent, bounced, or skipped. Open the [lead detail page](/help/leads/what-information-does-a-lead-detail-page-show) and look at the timeline to see which one fired for that specific lead. Notification toggles live in **Branding → Notifications**. The reply-to address sits in the same panel. If the reply-to is invalid, Resend bounces the email and marks the lead_event as "bounced" within 60 seconds. The [webhook channel](/help/integrations/how-do-webhook-notifications-work) is a good backup: it fires even when email is paused. ## Worked example An agency stopped seeing notifications on day 12. They opened 1 lead, saw a "bounced" event, and noticed the reply-to was set to "owner@" without the domain. They fixed the address, clicked **Send test email**, and got the test in 8 seconds. The next 14 leads all delivered. ## When this isn't right If you have checked the toggle, the spam folder, and the reply-to, the next likely cause is your own mail server. Corporate filters sometimes drop bulk senders silently. In that case, switch the alert channel to a [Slack webhook](/help/integrations/how-do-webhook-notifications-work) or check the [pipeline view](/help/leads/how-does-the-lead-pipeline-work) every 5 minutes until IT whitelists the sender. *Category: Troubleshooting* ## Related - [How do I get my first lead](https://lemaudit.com/help/getting-started/how-do-i-get-my-first-lead) - [How does the lead pipeline work](https://lemaudit.com/help/leads/how-does-the-lead-pipeline-work) - [How do webhook notifications work](https://lemaudit.com/help/integrations/how-do-webhook-notifications-work) --- For the interactive version visit https://lemaudit.com/help/troubleshooting/lead-notification-emails-aren-t-arriving-why # https://lemaudit.com/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong.md --- title: "The widget isn't showing on my website. What's wrong" category: troubleshooting slug: the-widget-isn-t-showing-on-my-website-what-s-wrong canonical_url: https://lemaudit.com/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong last_reviewed: 2026-05-04 source: LemAudit Help Center --- # The widget isn't showing on my website. What's wrong? Open browser devtools (F12) on the host page and look at the **Console** tab. 9 of 10 missing-widget cases are 1 of 3 things. Wrong paste spot, a site CSP that blocks the script, or an HTTP page instead of HTTPS. ## What "missing" usually means The widget renders by injecting a small button into the host page right before ``. If the script never loads, never executes, or executes but cannot mount the button, you see nothing. The script itself is under 40KB and load time is around 80ms on a fast connection. Think of it like a doorbell. The wires are there, but if the breaker is off, no chime. ## How to diagnose in 60 seconds Run these 4 checks in order: 1. **View source on the page** and confirm the `` line is present, just before ``. If it sits inside `` or in a comment, it will not run. See [install steps](/help/getting-started/how-do-i-install-the-audit-widget-on-my-website). 2. **Hard refresh** with Ctrl+Shift+R (Cmd+Shift+R on Mac). 1 in 4 reports turn out to be a stale cache. 3. **Check the Console for "Refused to load"** messages. If your site has a Content-Security-Policy header, add `widget.lemaudit.com` to `script-src`. 4. **Confirm the page URL starts with https://**. The widget refuses to mount on HTTP origins because lead emails would travel in plaintext. If those pass and the button is still invisible, a competing script may be hiding it with CSS. Search the page for `#lemaudit-widget` to confirm the element exists in the DOM. ## Worked example A WordPress agency installed the script via Elementor's "Custom Code → Footer". The widget did not show. Devtools revealed the script was wrapped in an `` because the editor escaped angle brackets. They re-pasted in the **Theme File Editor → footer.php** instead. The button appeared on the next page load. ## When this isn't right Single-page apps with strict client-side routing (some Webflow templates, Next.js apps) sometimes unmount the widget during route changes. For those, install via your tag manager (GTM) and reload on route change. Or use the [hosted audit page](/help/getting-started/how-do-i-get-my-first-lead) and link to it from a regular button instead of embedding the widget. *Category: Troubleshooting* ## Related - [How do I install the audit widget on my website](https://lemaudit.com/help/getting-started/how-do-i-install-the-audit-widget-on-my-website) - [Is the audit widget white-labeled](https://lemaudit.com/help/branding/is-the-audit-widget-white-labeled) - [An audit failed. What should I do](https://lemaudit.com/help/troubleshooting/an-audit-failed-what-should-i-do) --- For the interactive version visit https://lemaudit.com/help/troubleshooting/the-widget-isn-t-showing-on-my-website-what-s-wrong