Installation & Setup

Get AccessIQ up and running on your WordPress site in under 2 minutes. No API keys, no external accounts, no configuration required for core features.

Requirements

RequirementMinimumRecommended
WordPress6.0+Latest stable
PHP7.4+8.1+
MySQL5.7+8.0+
Browser JSEnabled

Install Steps

Method 1 — WordPress Plugin Directory (Recommended)

1

Go to Plugins → Add New

In your WordPress admin dashboard, navigate to Plugins → Add New Plugin.

2

Search "AccessIQ"

Type AccessIQ in the search box. Find the plugin by thereadscope.

3

Click Install Now → Activate

WordPress will download and install the plugin automatically. Click Activate Plugin.

4

Plugin is ready

You will be redirected to the AccessIQ → About page. All database tables are created automatically.

Method 2 — Manual Upload

1

Download ZIP

Download accessiq.zip from wordpress.org/plugins/accessiq.

2

Plugins → Add New → Upload Plugin

Click Upload Plugin, choose the ZIP file, click Install Now.

3

Activate

Click Activate Plugin after installation completes.

First Run

After activation, AccessIQ will automatically:

  • Create 4 database tables: wp_accessiq_sessions, wp_accessiq_clicks, wp_accessiq_issues, wp_accessiq_dashboard
  • Inject the lightweight tracking script on all frontend pages
  • Add the Accessibility Widget to your frontend
  • Redirect you to the About & Features page
💡

Tip: Visit any page on your site after activation — the heatmap tracker will start collecting click data immediately. No configuration needed.

🔬WCAG Scanner

The WCAG Scanner checks any page on your site against WCAG 2.1 accessibility standards and gives you a 0–100 compliance score with a full breakdown of violations.

Running a Scan

1

Go to AccessIQ → WCAG Scanner

Click the WCAG Scanner menu item in the AccessIQ sidebar.

2

Enter a URL

Type or paste any public page URL from your site into the URL field. Example: https://yoursite.com/about/

3

Select WCAG Level

Choose your compliance target: Level A (basic), Level AA (standard, most commonly required), or Level AAA (highest).

4

Click Scan

The scanner fetches the page HTML and runs all accessibility checks. Results appear within seconds.

ℹ️

Free plan: 5 scans per month. The counter resets on the 1st of each month. Upgrade to Pro for unlimited scans.

Reading Results

Compliance Score

The animated score ring shows a number from 0 to 100. Higher is better.

ScoreGradeMeaning
90–100ExcellentMinimal or no violations found
70–89GoodMinor issues, easy to fix
50–69FairSeveral issues needing attention
0–49PoorSignificant violations, action needed

Severity Labels

SeverityDescription
CriticalCompletely blocks access for users with disabilities
SeriousCreates major barriers, must be fixed
ModerateCreates some difficulty, should be fixed

Violations by Category

The horizontal bar chart groups all violations into 5 categories:

  • Images — Missing or inadequate alt text on images
  • Contrast — Text/background color contrast ratio failures
  • Headings — Missing H1, skipped heading levels, empty headings
  • ARIA — Incorrect or missing ARIA roles, labels, and attributes
  • Forms — Form inputs missing labels or required attributes

Scan Reports

Go to AccessIQ → Scan Reports to see your full scan history. Each report shows:

  • Page URL scanned
  • Date and time
  • Compliance score with color-coded ring
  • Total issue count
  • WCAG level used

Click View Report on any row to see the full detailed breakdown. Use the Print Report button to generate a browser-printable compliance report.

💡

Perfect Score: If a page scores 100/100, you'll see a special celebration screen. Share it with your client as proof of compliance!

Accessibility Widget

The Accessibility Widget is a floating toolbar that appears on your frontend for site visitors. It provides tools to help users with visual, cognitive, or motor disabilities browse your site more comfortably.

Widget Features

FeatureWhat it doesPlan
Font SizeIncreases or decreases text size from 80% to 150%FREE
High ContrastSwitches to a high-contrast color scheme (black/white/yellow)FREE
Dyslexia FontApplies Lexend font — proven to improve reading for dyslexiaFREE
Keyboard NavHighlights keyboard focus indicators for keyboard-only usersFREE
Screen ReaderOptimizes page structure for screen readersPRO

Configuration

Go to AccessIQ → Settings → Accessibility → Widget to configure the widget.

OptionDescriptionDefault
Enable WidgetShow or hide the widget on the frontendEnabled
PositionTop Left, Top Right, Bottom Left, Bottom RightBottom Right
Brand ColorWidget button color — 9 options to match your brandGreen
Show on MobileToggle widget visibility on mobile devicesEnabled
Font Size ToolEnable/disable the font size controlEnabled
High Contrast ToolEnable/disable high contrast toggleEnabled
Dyslexia Font ToolEnable/disable dyslexia-friendly font toggleEnabled
Keyboard Nav ToolEnable/disable keyboard navigation highlightsEnabled

🔥Heatmap Engine

The Heatmap Engine records every click made by visitors on your site and visualizes them as an overlay on your live pages — directly inside WP Admin. 100% self-hosted, no external service.

How Tracking Works

When AccessIQ is activated, a lightweight JavaScript tracker (under 3KB) is injected into every public-facing page. It runs asynchronously — meaning it loads after your page has fully rendered and has zero impact on page speed or Core Web Vitals.

For each click, the tracker records:

  • X and Y coordinates of the click
  • CSS selector of the clicked element
  • Current page URL
  • Device type (Desktop / Mobile / Tablet)
  • Timestamp
💡

Data is stored directly in your WordPress database (wp_accessiq_clicks). Nothing is sent to external servers.

Reading the Heatmap

Go to AccessIQ → Heatmap. You'll see a live preview of your site inside a macOS-style browser frame with click data overlaid.

Filters

FilterOptions
PageSelect any tracked page from the dropdown
DeviceAll Devices, Desktop, Mobile, Tablet
Date RangeLast 7 days, Last 30 days, Last 90 days

Summary Cards

Above the heatmap you'll see 4 summary cards:

  • Total Clicks — all click events in the selected period
  • Most Clicked — the top element's CSS selector
  • Pages Tracked — number of distinct pages with click data
  • Peak Hour — hour of the day with most activity

Top Clicked Elements

Below the heatmap, the Top Clicked Elements table ranks every interacted element. Each row shows:

  • Rank — 🥇 Gold / 🥈 Silver / 🥉 Bronze for top 3
  • Element Selector — CSS selector in a monospace pill
  • Clicks — total click count
  • % of Total — color-coded: red (>20%), amber (10–20%), green (<10%)
  • Progress Bar — visual representation of click share

📈Behavior Analytics

Behavior Analytics tracks visitor sessions, time on page, bounce rate, and device distribution — all stored in your own database. No Google Analytics, no cookies, no third-party scripts.

Sessions & Metrics

Go to AccessIQ → Behavior. At the top you'll see 4 key metrics:

MetricDescription
Total SessionsNumber of individual visits in the selected date range
Avg Time on PageAverage time visitors spend per session (in seconds)
Bounce Rate% of sessions where visitor left without interacting
Total ClicksTotal click events across all sessions

Daily Sessions Chart

The line chart shows daily session count over the selected period. Hover over any point to see the exact count. Use the date range buttons (7 days / 30 days / 90 days) to change the period.

ℹ️

A "session" starts when a visitor first loads a page and ends when they leave or are inactive for more than 30 minutes.

Device Breakdown

The animated donut chart shows your audience split by device type:

  • Desktop — PCs and laptops
  • Mobile — smartphones
  • Tablet — tablets and iPads

Device type is detected from the visitor's browser User-Agent string. No cookies are used.

Top Pages Performance

The Top Pages table at the bottom of the analytics page shows performance per URL:

ColumnDescription
PageThe page URL (truncated)
SessionsTotal sessions on that page
Avg TimeAverage time spent on that page
Bounce RateColor-coded — red/amber/green based on severity
Top DeviceMost common device type for that page

⚙️Settings

Go to AccessIQ → Settings to configure all plugin options. Settings are organized into tabs.

Accessibility — Widget Tab

OptionDescriptionDefault
Enable WidgetMaster toggle — show or hide the frontend accessibility toolbarOn
Widget PositionWhere the widget button appears: Top Left / Top Right / Bottom Left / Bottom RightBottom Right
Brand ColorButton background color — 9 presets: Green, Blue, Purple, Red, Orange, Pink, Teal, Indigo, GrayGreen
Show on MobileToggle widget on/off for mobile screensOn
Font Size ToolShow/hide the font size increase/decrease controlOn
High Contrast ToolShow/hide the high contrast toggleOn
Dyslexia Font ToolShow/hide the dyslexia-friendly font toggleOn
Keyboard Nav ToolShow/hide the keyboard navigation focus highlightingOn

Accessibility — Scanner Tab

OptionDescriptionDefault
Default WCAG LevelPre-select compliance level in the scanner: A / AA / AAAAA
Scan History LimitMaximum number of past scans to keep in the database50
Monthly Scan LimitFree: 5/month. Shows remaining scans and reset date5 (Free)

InsightForge — Analytics Tab

OptionDescriptionDefault
Enable TrackingMaster toggle — enable or disable click and session trackingOn
Exclude AdminsDon't track clicks/sessions from logged-in admin usersOn
Data RetentionHow long to keep click and session data (30/60/90/180 days)90 days
Session TimeoutMinutes of inactivity before a new session is started30 min
Exclude PagesComma-separated URL patterns to exclude from tracking
⚠️

Important: Disabling tracking stops all new click and session data collection immediately. Existing data is preserved.

💻Developer Reference

AccessIQ is built with clean OOP PHP and provides action hooks, filter hooks, and constants for developers to extend functionality.

Constants

ConstantValue / Description
ACCESSIQ_VERSIONCurrent plugin version string, e.g. 1.0.0
ACCESSIQ_PATHAbsolute path to plugin folder with trailing slash
ACCESSIQ_URLURL to plugin folder with trailing slash
ACCESSIQ_DEV_MODEAuto-set to true on localhost — enables debug logging

Action & Filter Hooks

Action Hooks

HookWhen it fires
accessiq_activatedAfter plugin activation and DB table creation
accessiq_scan_completeAfter a WCAG scan finishes. Passes $scan_id, $score, $url
accessiq_click_recordedAfter a click event is saved. Passes $click_data array
accessiq_session_startedWhen a new visitor session begins
PHP
// Example: Send email when scan completes
add_action( 'accessiq_scan_complete', function( $scan_id, $score, $url ) {
    if ( $score < 70 ) {
        wp_mail(
            get_option( 'admin_email' ),
            'AccessIQ: Low score on ' . $url,
            'Compliance score: ' . $score . '/100'
        );
    }
}, 10, 3 );

Filter Hooks

HookDescription
accessiq_track_this_pageReturn false to exclude a page from tracking. Passes current URL.
accessiq_scan_rulesAdd or remove WCAG rules from the scanner. Passes rules array.
accessiq_widget_positionOverride widget position programmatically.
PHP
// Example: Exclude /cart/ and /checkout/ from heatmap tracking
add_filter( 'accessiq_track_this_page', function( $should_track, $url ) {
    $exclude = [ '/cart/', '/checkout/', '/my-account/' ];
    foreach ( $exclude as $path ) {
        if ( strpos( $url, $path ) !== false ) {
            return false;
        }
    }
    return $should_track;
}, 10, 2 );

Database Tables

TableStoresKey columns
wp_accessiq_clicksHeatmap click eventsx, y, element_selector, page_url, device, created_at
wp_accessiq_sessionsVisitor sessionspage_url, duration, device, bounced, created_at
wp_accessiq_issuesWCAG scan violationsscan_id, rule_id, severity, element, wcag_level
wp_accessiq_dashboardDashboard config & scan metascan_id, page_url, score, wcag_level, scanned_at
💡

All tables are created with dbDelta() on activation and removed cleanly on uninstall via uninstall.php. No orphaned data left behind.

Shortcode Reference

AccessIQ does not use shortcodes for its core UI — everything is in the WP Admin dashboard. However, you can use the following in templates or widgets:

PHP
// Get current site accessibility score in a template
$score = get_option( 'accessiq_latest_score', 0 );
echo esc_html( $score ); // e.g. 87

// Check if AccessIQ is active
if ( defined( 'ACCESSIQ_VERSION' ) ) {
    // Plugin is active
}

FAQ & Troubleshooting

Common questions and solutions to known issues.

Frequently Asked Questions

General

Is the free version really free forever?
Yes. The WCAG Scanner (5 scans/month), heatmap engine, behavior analytics, and accessibility widget are permanently free. No trial period, no expiry.

Do I need to create an account to use AccessIQ?
No. Install the plugin and it works immediately — no account, no API key, no registration required.

Is AccessIQ GDPR compliant?
AccessIQ does not collect any personally identifiable information (PII). It stores click coordinates, page URLs, session duration, and device type — no IP addresses, no user identifiers, no cookies. We recommend disclosing analytics tracking in your privacy policy.

Scanner

Why can't I scan pages behind a login?
The WCAG Scanner fetches the public HTML of a URL. Pages requiring login return a redirect to the login form — the scanner sees the login page, not the protected page. Use browser-based tools like axe DevTools for logged-in pages.

My scan limit shows 0 remaining. When does it reset?
The free tier allows 5 scans per calendar month. The counter resets on the 1st of each month. Upgrade to Pro for unlimited scans.

The scanner says "Failed to fetch URL" — what's wrong?
This means WordPress could not download the page HTML. Common causes: the URL is on a different server, the server blocks loopback requests, or the URL is incorrect. Try: Settings → Permalinks → Save Changes to flush rewrite rules, then retry.

Heatmap

No click data is showing — what's wrong?
Check these in order: (1) Tracking is enabled in Settings → InsightForge → Analytics. (2) You have visited the site as a non-admin visitor — admin sessions are excluded by default. (3) The tracker script is loading — open browser DevTools → Network and look for tracker.js. (4) The page has received at least one real visitor click.

The heatmap iframe shows a blank page
This can happen if your site has a Content Security Policy (CSP) that blocks iframes. Add your domain to the frame-src directive, or check with your hosting provider.

Clicks from my own browser are being tracked
Go to Settings → InsightForge → Analytics → Exclude Admins and make sure it is enabled. This excludes all WordPress logged-in admin users from tracking.

Analytics

Sessions are not appearing in the analytics dashboard
Sessions are recorded by behavior.js on the frontend. Ensure the script is loading (check browser DevTools → Network). Also confirm you are viewing the site as a non-admin visitor, as admin sessions are excluded by default.

Widget

The accessibility widget is not showing on my site
Check: (1) Widget is enabled in Settings → Accessibility → Widget → Enable Widget. (2) Your theme is calling <?php wp_footer(); ?> before the closing </body> tag — the widget is injected there. (3) A caching plugin may be serving an old cached page — clear all caches.

The widget conflicts with my theme's existing accessibility toolbar
You can disable specific tools in Settings → Widget or disable the entire widget and just use the WCAG scanner standalone.

Getting Further Help

If your issue isn't covered here, you have two options:

  • WordPress.org Support Forum: wordpress.org/support/plugin/accessiq — we respond within 1–2 business days.
  • Pro Support: Pro users get priority email support with guaranteed 24-hour response time.
ℹ️

When reporting a bug, please include: WordPress version, PHP version, AccessIQ version, active theme name, and any relevant browser console errors.

AccessIQ v1.0.0 Documentation
Need help? → Support Forum