Skip to content
Methodology

Proof you can inspect. Logic we protect.

Every finding traces to a named rule, an observable public signal, and an evidence packet. The scoring implementation stays proprietary so the system remains useful and harder to game.

43 named checksPublic-page evidenceSamples labeledPrivate results
Rule coverage43 named checks
AI Crawler Access4Structured Data9HTML Markup11Security3Email Deliverability3Privacy + Consent4Tech Stack2SEO + Metadata7
Evidence dossierSample
61/100Action required
Booking
Trust
AI read
Mobile
Follow-up
CriticalRV-BKG-014Primary booking path stops before confirmationEvidence captured
HighRV-TRU-003Proof is missing before the paid askReview
MediumRV-AIR-002Service scope is unclear to answer enginesClarify
LowRV-FUP-004No fallback for a not-ready visitorQueue
43 named public checksWeights and anti-gaming logic remain proprietary
Evidence, not opinion

See the break. See the next action.

Every finding links an observable buyer-path issue to evidence, an affected step, and a verification action.

Impact
High · primary action blocked
Confidence
High · reproducible on mobile
Effort
Moderate
buyer-path replay · sample
yourbusiness.example

Book your service

Embedded scheduler stops before confirmation.

How to verify the fix
  1. Replace the blocked handoff with a mobile-safe route.
  2. Keep form state through the transition.
  3. Confirm success on iOS and Android.
  4. Re-scan the public buyer path.
VerificationPending re-scan

Three rules we don't bend.

  • Public pages only: no logins, dashboards, analytics, or private data
  • We show our work: every score traces to a named rule and evidence
  • No fake proof: no invented logos, testimonials, metrics, or urgency; samples labeled everywhere
What we measure

Eight dimensions, one measured layer.

  1. 01Booking friction
  2. 02Local visibility
  3. 03AI readiness
  4. 04Mobile
  1. 05Trust
  2. 06CTA clarity
  3. 07Follow-up readiness
  4. 08Service-page quality
The measured layer

Lighthouse performance, Accessibility (WCAG), SSL & certificate, Security headers, Broken links, AI-crawler access, Structured data, Mobile rendering

How the score works.

  1. 01Each dimension checked against named rules, scored 0–100.
  2. 02Priority reflects action risk: a blocked transaction path outranks cosmetic polish.
  3. 03Combined into one revenue-capture score.
  4. 04Severity sets the fix order.
  5. 05Impact is expressed as severity and confidence unless customer-owned revenue inputs are supplied.
Severity scale
  • CriticalThe money path is broken now.
  • HighQuietly bleeding bookings or trust.
  • MediumWorth fixing, not an emergency.
  • HealthyHolding up. No action needed.
The rule taxonomy

Every finding traces to a named rule and evidence.

Inspectable rule chain

From observation to fix order.

Sample
01SourceStructured-data analyzer

The public-page scan observes visible structured data and checks required public properties.

02Rulestructured-data.localbusiness.incomplete

LocalBusiness schema exists, but name, address, or telephone is missing.

03EvidenceLocalBusiness block present but missing: telephone, address.

This exact evidence pattern is exposed in the public rule taxonomy.

04Fix orderHigh severity -> structured data repair

The report keeps this below broken checkout/contact paths, but above polish.

The stack is illustrative. The rule id and evidence pattern come from the public taxonomy; scoring weights and detection implementation remain proprietary.

43 named checks. Each maps to a real rule in the scan engine — same id, same severity range, nothing invented.

AI Crawler Access4 rules
  • AI crawler disallowed by robots.txtHigh
    CRAWLER_BLOCKED_BY_ROBOTS_TXT

    If a search or answer engine's crawler is disallowed in robots.txt, that engine cannot read your pages and you become invisible to its results — including AI answer surfaces that are sending an increasing share of buying traffic.

    Observes
    • robots.txt fetched from the domain root
    • per-bot Allow/Disallow evaluation via robots-parser
    • the matched robots.txt line number for the blocking rule
    Evidence example

    GPTBot is disallowed by robots.txt rule at line 14; source: robots.txt.

    Does not measure

    Detects only what robots.txt declares for the named bots Revvye tracks; it does not verify whether the engine actually honored the rule, nor whether the bot was blocked by a firewall/WAF the scanner cannot see.

  • Crawler blocked by meta robots noindexHigh
    CRAWLER_BLOCKED_BY_META_ROBOTS

    A noindex directive tells engines not to list the page at all. On a homepage this removes you from results entirely — a silent, total loss of organic and AI-answer visibility.

    Observes
    • <meta name="robots"> and bot-specific <meta name> directives in the homepage HTML
    • content values containing 'noindex' or 'none'
    Evidence example

    Homepage <meta name="robots" content="noindex"> blocks Googlebot; source: meta.

    Does not measure

    Reads the meta directives present in the served HTML for the homepage only; it does not crawl interior pages or evaluate per-section indexing.

  • Crawler blocked by X-Robots-Tag headerHigh
    CRAWLER_BLOCKED_BY_X_ROBOTS_HEADER

    An X-Robots-Tag noindex header suppresses the page in search and answer engines even when the HTML looks fine — a common, easily-missed misconfiguration that quietly removes you from results.

    Observes
    • the X-Robots-Tag HTTP response header
    • global and per-user-agent 'noindex'/'none' directives in that header
    Evidence example

    X-Robots-Tag: noindex on the homepage response blocks PerplexityBot; source: header.

    Does not measure

    Inspects the header on the fetched response only; it cannot tell whether the header was set intentionally or by a misconfigured CDN/edge rule.

  • Per-engine AI crawler access matrixHighHealthy
    CRAWLER_ACCESS_MATRIX

    Different engines use different bots. A site can be visible to Google yet invisible to ChatGPT or Perplexity. The matrix shows exactly which buying-intent surfaces can and cannot reach you.

    Observes
    • allowed/blocked status for each of the 14 named crawlers (OpenAI, Anthropic, Perplexity, Google, Microsoft, DuckDuckGo, Mistral, You.com)
    • the source of each decision (robots.txt, meta, header, or default-allowed)
    • the crawler's stated purpose (search, training, user-action, ads)
    Evidence example

    11 of 14 tracked AI crawlers allowed; 3 blocked (ClaudeBot, anthropic-ai, Google-Extended) via robots.txt.

    Does not measure

    Covers only the explicitly tracked crawler list; access can change between scans and the scan cannot confirm an engine actually fetched the page.

Structured Data9 rules
  • No structured data (JSON-LD) foundHigh
    structured-data.absent

    Without JSON-LD the page cannot qualify for any Google rich result and gives AI answer engines no machine-readable description of your business — you are harder to find and harder to cite.

    Observes
    • count of <script type="application/ld+json"> blocks in the HTML
    Evidence example

    0 application/ld+json blocks present on the homepage.

    Does not measure

    Looks only for JSON-LD; it does not credit microdata or RDFa, and it scores the homepage rather than every page on the site.

  • LocalBusiness schema missing required propertiesHigh
    structured-data.localbusiness.incomplete

    A LocalBusiness block missing name, address, or phone is present-but-ineligible: Google will not render the rich result, so you lose the map pack and knowledge-panel surfaces that drive local bookings.

    Observes
    • presence of a LocalBusiness (or Restaurant/Store) node
    • required props: name, address, telephone (nested Offer flattened one level)
    Evidence example

    LocalBusiness block present but missing: telephone, address.

    Does not measure

    Checks for the required properties' presence, not their accuracy; it cannot verify the phone number or address is correct or matches your Google Business Profile.

  • Organization schema missing required propertiesHigh
    structured-data.organization.incomplete

    Organization schema with a logo feeds the knowledge panel and brand recognition in search and AI answers. Missing it weakens how engines identify and represent your brand.

    Observes
    • presence of an Organization node
    • required props: name, url, logo
    Evidence example

    Organization block present but missing: logo.

    Does not measure

    Confirms the logo property exists; it does not fetch the logo URL or validate the image dimensions Google recommends.

  • Product/Offer schema missing required propertiesHigh
    structured-data.product.incomplete

    Product schema without price or availability cannot show the price/stock rich result, so the listing misses the click-through advantage of products that display their price directly in results.

    Observes
    • presence of a Product or Offer node
    • required props: price, priceCurrency, availability (flattened from nested offers)
    Evidence example

    Product block present but missing: price, priceCurrency.

    Does not measure

    Validates the property set for rich-result eligibility, not whether the price shown matches your checkout.

  • Article schema missing required propertiesMedium
    structured-data.article.incomplete

    Complete Article schema improves how content is attributed and surfaced in search and AI answers, helping your expertise get cited rather than a competitor's.

    Observes
    • presence of an Article node
    • required props: headline, datePublished, author
    Evidence example

    Article block present but missing: author.

    Does not measure

    Checks the homepage's declared Article schema only; it does not crawl your blog or assess content quality.

  • FAQPage schema missing required propertiesMedium
    structured-data.faqpage.incomplete

    FAQ schema can win extra real estate in results and is a strong source for AI answer engines. An FAQPage with no mainEntity produces nothing.

    Observes
    • presence of an FAQPage node
    • required prop: mainEntity (the question/answer list)
    Evidence example

    FAQPage block present but missing: mainEntity.

    Does not measure

    Verifies the mainEntity property exists; it does not judge whether the questions match real customer intent.

  • BreadcrumbList schema missing required propertiesHealthy
    structured-data.breadcrumblist.incomplete

    Breadcrumb rich results make your search listing clearer and more navigable, lifting click-through. An empty BreadcrumbList contributes nothing.

    Observes
    • presence of a BreadcrumbList node
    • required prop: itemListElement
    Evidence example

    BreadcrumbList block present but missing: itemListElement.

    Does not measure

    Checks the property's presence only, on the homepage; it does not validate the breadcrumb hierarchy against your site structure.

  • Malformed JSON-LD on the pageHigh
    structured-data.parse-error

    Broken JSON-LD is silently ignored by search engines — the effort you spent adding schema delivers zero benefit because none of it is read.

    Observes
    • JSON.parse failures on each ld+json block
    • count of blocks that failed to parse
    Evidence example

    1 JSON-LD block failed to parse: Unexpected token } in JSON.

    Does not measure

    Reports syntax errors that block parsing; it does not validate that well-formed schema follows every schema.org constraint.

  • Structured data present but not rich-result eligibleMedium
    structured-data.no-rich-result-types

    Schema that uses only unsupported types earns no rich result. Pointing it at a supported type is usually a small change with a visible payoff in results.

    Observes
    • JSON-LD blocks that parse but declare no scored rich-result @type
    • the set of scored types (LocalBusiness, Organization, Product/Offer, Article, FAQPage, BreadcrumbList)
    Evidence example

    JSON-LD present (WebSite, SearchAction) but no rich-result type; score 0.

    Does not measure

    Scores against the rich-result types Revvye tracks; newer or niche schema.org types are recorded as unscored rather than penalized.

HTML Markup11 rules
  • Missing <html lang> attributeHigh
    markup.html-lang-missing

    Without a declared language, screen readers and search engines cannot reliably determine the page language, hurting both accessibility and how the page is indexed for the right audience.

    Observes
    • the lang attribute on the root <html> element
    Evidence example

    <html> element has no lang attribute.

    Does not measure

    Checks that lang is declared, not that the declared language matches the actual page content.

  • Missing or empty <title>High
    markup.title-missing

    The title labels the page in browser tabs, search results, and shared links. With no title, every one of those surfaces shows nothing useful and click-through suffers.

    Observes
    • the first non-empty <title> in <head> or the document
    Evidence example

    Document has no non-empty <title>.

    Does not measure

    Detects an empty/absent title; SEO title length and quality are graded separately by the SEO metadata rules.

  • Missing <meta charset>Medium
    markup.meta-charset-missing

    Without an explicit character encoding, special characters and currency symbols can render as garbled text, eroding trust at a glance.

    Observes
    • <meta charset> and the http-equiv content-type charset fallback
    Evidence example

    No <meta charset> and no content-type charset found.

    Does not measure

    Confirms a charset declaration exists; it does not verify the declared encoding matches the bytes served.

  • Missing viewport meta tagHigh
    markup.viewport-missing

    Without a viewport tag, mobile browsers do not scale the layout correctly, so the site can render zoomed-out and unusable on phones — where most local buyers arrive.

    Observes
    • <meta name="viewport"> presence
    Evidence example

    No <meta name="viewport"> present.

    Does not measure

    Checks the tag exists; the actual mobile rendering (overflow, CTA position) is graded by the mobile-experience worker checks.

  • Duplicate id attributesMedium
    markup.duplicate-id

    Duplicate ids break label/for associations, in-page anchors, and scripts, which can silently disable form fields or navigation that customers rely on.

    Observes
    • count of id values used on more than one element
    Evidence example

    3 id values are used on more than one element.

    Does not measure

    Counts repeated ids in the served HTML; it does not trace which specific script or label each duplicate breaks.

  • Images without alt textHigh
    markup.img-missing-alt

    Images without alt text are invisible to screen-reader users and to image search, costing both accessibility and a discovery channel.

    Observes
    • count of <img> elements with no alt attribute
    Evidence example

    6 <img> elements have no alt attribute.

    Does not measure

    Flags a missing alt attribute; it does not judge whether existing alt text is descriptive or just decorative.

  • No <h1> headingHigh
    markup.h1-missing

    A single top-level heading anchors the document outline for assistive tech and search engines. No <h1> leaves both without a clear sense of what the page is about.

    Observes
    • count of <h1> elements (zero case)
    Evidence example

    The page has no <h1>.

    Does not measure

    Counts <h1> elements; the SEO worker check evaluates the homepage primary-heading content separately.

  • Multiple <h1> headingsMedium
    markup.h1-multiple

    Several competing <h1>s blur the document outline, making it less clear to engines and assistive tech which message is primary.

    Observes
    • count of <h1> elements beyond the first
    Evidence example

    The page has 3 <h1> elements.

    Does not measure

    Counts the headings; it does not decide which of several <h1>s should be the canonical one.

  • Empty heading tagsMedium
    markup.heading-empty

    Empty headings confuse the document outline and assistive tech, often a side effect of styling hacks that quietly degrade accessibility.

    Observes
    • count of h1–h6 elements containing no text
    Evidence example

    2 heading elements contain no text.

    Does not measure

    Detects headings with no text node; a heading filled only by a background image is treated the same as truly empty.

  • Deprecated HTML tagsHealthy
    markup.deprecated-tag

    Obsolete tags signal an aging template and can render inconsistently in modern browsers, a small but real credibility tax.

    Observes
    • count of <center>, <font>, <marquee>, <blink> elements
    Evidence example

    4 deprecated tags present (font, center).

    Does not measure

    Checks a fixed list of obsolete tags; it is a freshness signal, not a full standards-compliance audit.

  • Anchors without hrefHealthy
    markup.anchor-missing-href

    An anchor with no href is not a keyboard-focusable link, so keyboard and screen-reader users cannot reach what is meant to be clickable.

    Observes
    • count of <a> elements with no href attribute
    Evidence example

    5 <a> elements have no href.

    Does not measure

    Flags the missing href; a link wired up entirely through JavaScript click handlers is reported as href-less even if a mouse user can use it.

Security3 rules
  • SSL certificate invalid or untrustedCritical
    ssl_invalid

    An invalid certificate triggers a full-page browser security warning that stops most visitors cold — the highest-severity, most immediate revenue leak on the list.

    Observes
    • live TLS handshake to port 443
    • certificate authorization status and authorizationError
    • self-signed detection (DEPTH_ZERO_SELF_SIGNED_CERT / SELF_SIGNED_CERT_IN_CHAIN)
    Evidence example

    TLS handshake returned authorized=false; error DEPTH_ZERO_SELF_SIGNED_CERT.

    Does not measure

    Performs a TCP/TLS handshake with no payload; it reports the certificate's trust state and does not test cipher strength or full protocol configuration.

  • SSL certificate expiring soonHighMedium
    ssl_expiring

    A certificate that lapses takes the whole site offline behind a security warning. The expiry countdown is the single highest-retention monitoring signal — it lets you fix it before customers ever see a failure.

    Observes
    • certificate valid_to date from the handshake
    • days remaining until expiry (high severity under 14 days)
    Evidence example

    Certificate expires in 9 days (valid_to 2026-07-09); issuer Let's Encrypt.

    Does not measure

    Reads the expiry date from the served certificate; it cannot tell whether auto-renewal is configured to handle it.

  • Weak security HTTP headersMediumHealthy
    security_headers_weak

    Missing security headers leave the site more exposed to clickjacking, MIME-sniffing, and injection attacks, and they drag down trust/security scoring that some buyers and partners check.

    Observes
    • presence of content-security-policy, strict-transport-security, x-content-type-options, x-frame-options, referrer-policy, permissions-policy
    • a weighted A–F grade and the list of missing headers
    Evidence example

    Security headers grade F: missing content-security-policy, strict-transport-security, x-frame-options.

    Does not measure

    Grades the presence and weight of the headers on the homepage response; it does not parse each header's policy value for correctness.

Email Deliverability3 rules
  • No DMARC record — your domain can be spoofedHigh
    email_no_dmarc

    With no DMARC record, anyone can send email that appears to come from your domain. That enables phishing of your own customers and pushes your legitimate mail toward spam folders.

    Observes
    • DNS TXT lookup at _dmarc.<domain>
    • absence of a v=DMARC1 record
    Evidence example

    No v=DMARC1 TXT record found at _dmarc.example.com.

    Does not measure

    Checks for a published DMARC record via public DNS; it does not log into your mail provider or verify how aligned mail is actually handled.

  • DMARC is monitor-only (p=none)Healthy
    email_dmarc_monitor_only

    A p=none DMARC policy reports spoofing but blocks nothing. Spoofed mail still reaches inboxes, so the protection is only partial until the policy is tightened.

    Observes
    • the p= policy parsed from the DMARC record
    • the value 'none'
    Evidence example

    DMARC record present with p=none (monitor-only).

    Does not measure

    Reads the published policy tag; it does not assess whether your mail is ready to move safely to quarantine/reject.

  • No SPF record foundMedium
    email_no_spf

    SPF tells receiving servers which hosts may send mail for your domain. Without it, more of your legitimate email lands in spam and spoofing is easier.

    Observes
    • DNS TXT lookup at the apex domain
    • absence of a v=spf1 record
    Evidence example

    No v=spf1 TXT record found at example.com.

    Does not measure

    Detects the presence of an SPF record; it does not validate the includes or that every sending service is covered. DKIM detection is best-effort across common selectors and is not failed on absence.

Privacy & Consent4 rules
  • Tracking scripts load without a consent managerHighMedium
    tracking.no_consent_manager

    Loading analytics or advertising trackers before consent is a GDPR/ePrivacy risk for EU/UK visitors — a real, articulable compliance gap that can carry fines and erode trust.

    Observes
    • detected tracker scripts (Google Analytics, GTM, Meta Pixel, TikTok, LinkedIn, Hotjar, Clarity, Segment)
    • absence of a recognised consent platform (Cookiebot, OneTrust, Osano, Termly, CookieYes)
    Evidence example

    Detected Google Analytics, Meta Pixel with no recognised consent manager.

    Does not measure

    Detects recognised tracker and consent-platform signatures in the HTML; it flags risk, not legal certainty, and cannot see custom or server-side consent logic.

  • Advertising / session-replay trackers run without consentHigh
    tracking.advertising_without_consent

    These trackers can fingerprint visitors and share data across sites. Running them with no consent gate materially raises GDPR/CCPA exposure compared with first-party analytics.

    Observes
    • advertising or session-replay trackers specifically (Meta/TikTok/LinkedIn pixels, Hotjar, Clarity)
    • absence of a consent manager
    Evidence example

    Meta Pixel, Hotjar can fingerprint visitors and run without a consent gate.

    Does not measure

    Identifies the high-risk tracker families by signature; it does not measure exactly what data each one collects.

  • Many cookies set without a consent gateMedium
    tracking.high_cookie_count

    Non-essential cookies set before opt-in are a classic ePrivacy violation. A high pre-consent cookie count is a clear, countable red flag.

    Observes
    • distinct cookie names parsed from Set-Cookie response headers
    • more than 8 cookies set on the initial response with no consent manager
    Evidence example

    12 cookies set on the initial response with no consent manager detected.

    Does not measure

    Counts cookies only when Set-Cookie headers are captured during the fetch; cookies set later by client scripts after interaction are not counted.

  • Consent manager detected (verify gating)Healthy
    tracking.consent_manager_present

    A consent banner is good, but a banner that loads while trackers still fire before opt-in is not real protection. This rule prompts you to verify the gate actually works.

    Observes
    • a recognised consent platform alongside one or more trackers
    • the consent platform name
    Evidence example

    Cookiebot detected alongside 3 tracking scripts — verify trackers are gated, not just that the banner loads.

    Does not measure

    Confirms the consent platform is present; it cannot execute the page to prove trackers are actually blocked until consent is given.

Tech Stack2 rules
  • No analytics detectedHigh
    TECH_NO_ANALYTICS

    You can't measure what you can't see. With no analytics tag, you have no visibility into traffic, conversions, or where visitors drop off — every revenue decision is a guess.

    Observes
    • analytics/tag-manager markers in the HTML (GA4/UA ids, gtag, GTM, Plausible, Fathom, Hotjar, Meta Pixel, PostHog, Segment, Clarity)
    Evidence example

    No analytics or tag-manager marker found in the homepage HTML.

    Does not measure

    Looks for known analytics markers in the served HTML; a privacy-proxied or server-side-only analytics setup may not be visible to the scan.

  • Platform / CMS / server fingerprintHealthy
    TECH_PLATFORM_FINGERPRINT

    Knowing the underlying platform sets realistic expectations for what each fix costs and how it must be implemented, so the recommendations are grounded in your actual stack.

    Observes
    • <meta name="generator"> content
    • HTML markers for WordPress, Shopify, Wix, Squarespace, Webflow, Next.js, Framer
    • Server and X-Powered-By response headers; X-Wix / X-Shopify headers; CDN hosts
    Evidence example

    Platform: WordPress (generator meta + /wp-content/); server: nginx; CDN: Cloudflare.

    Does not measure

    A lightweight fingerprint, not the full Wappalyzer dataset; it reports what the homepage and headers reveal and can miss platforms that hide their markers.

SEO & Metadata7 rules
  • Homepage is marked noindexCritical
    homepage_noindex

    A noindex homepage is removed from search results entirely. It is the most severe SEO finding because no other optimization matters if the page cannot be listed.

    Observes
    • the page indexability_status derived from meta robots / headers
    Evidence example

    Homepage indexability_status = noindex.

    Does not measure

    Evaluates the homepage's indexability flag; it does not crawl interior pages for their individual index status.

  • Homepage title tag is missingHigh
    homepage_missing_title

    The title is the headline of your search listing. Missing it means search engines invent one or show the URL, sharply lowering click-through.

    Observes
    • the rendered <title> captured for the homepage
    Evidence example

    Homepage title is empty/absent.

    Does not measure

    Checks presence at the homepage level; per-page titles across the site are not audited.

  • Homepage title length is weakMedium
    homepage_title_length

    Titles that are too short or too long get truncated or read as thin in results, leaving click-through on the table.

    Observes
    • character length of the rendered homepage title
    Evidence example

    Homepage title is 9 characters — too short to be descriptive.

    Does not measure

    Judges length, not keyword relevance or how compelling the wording is.

  • Homepage meta description is missingMedium
    homepage_missing_meta_description

    With no meta description, engines auto-generate the snippet under your listing, surrendering control of the pitch that drives the click.

    Observes
    • the homepage meta_description value
    Evidence example

    Homepage has no meta description.

    Does not measure

    Checks presence; it does not rewrite or grade the wording of an existing description.

  • Homepage canonical tag is missingMedium
    homepage_missing_canonical

    A canonical tag tells engines which URL is the real one, preventing duplicate-content dilution across www/non-www and tracking-parameter variants.

    Observes
    • the canonical URL captured from the homepage
    Evidence example

    Homepage has no <link rel="canonical">.

    Does not measure

    Checks the homepage canonical only; it does not resolve whether the canonical target itself returns 200.

  • Document language is not declaredHealthy
    homepage_missing_lang

    A declared language helps engines serve the page to the right regional audience and improves assistive-tech pronunciation.

    Observes
    • the html lang attribute as captured by the page facts
    Evidence example

    Homepage <html> has no lang attribute.

    Does not measure

    Overlaps with the markup.html-lang-missing structural check; this is the homepage-fact view of the same signal.

  • Homepage has no detected schema markupMedium
    homepage_missing_schema

    Schema is how engines and AI answer surfaces understand your business in machine-readable form. None present means they fall back to guessing from raw text.

    Observes
    • the schema_summary derived from the homepage during the scan
    Evidence example

    schema_summary is empty — no schema markup detected on the homepage.

    Does not measure

    A presence signal at the homepage level; rich-result eligibility detail is graded by the Structured Data rules above.

Anatomy of a finding

Every finding carries its own proof.

CriticalRV-BKG-014Sample

Checkout fails on mobile Safari

Booking & checkout · revenue path
Evidence

Pay button unresponsive in the mobile-viewport render; the path never reaches confirmation.

Estimated impact: high · primary transaction path blocked.

The fix · Repair the mobile payment handoff, then verify the confirmation state on supported mobile browsers.

See the method on your site.

Not an SEO audit, not a guarantee — a revenue-capture read of your public site at a point in time.

Public pages only · no login · results in minutes