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
| Requirement | Minimum | Recommended |
|---|---|---|
| WordPress | 6.0+ | Latest stable |
| PHP | 7.4+ | 8.1+ |
| MySQL | 5.7+ | 8.0+ |
| Browser JS | Enabled | — |
Install Steps
Method 1 — WordPress Plugin Directory (Recommended)
Go to Plugins → Add New
In your WordPress admin dashboard, navigate to Plugins → Add New Plugin.
Search "AccessIQ"
Type AccessIQ in the search box. Find the plugin by thereadscope.
Click Install Now → Activate
WordPress will download and install the plugin automatically. Click Activate Plugin.
Plugin is ready
You will be redirected to the AccessIQ → About page. All database tables are created automatically.
Method 2 — Manual Upload
Download ZIP
Download accessiq.zip from wordpress.org/plugins/accessiq.
Plugins → Add New → Upload Plugin
Click Upload Plugin, choose the ZIP file, click Install Now.
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
Go to AccessIQ → WCAG Scanner
Click the WCAG Scanner menu item in the AccessIQ sidebar.
Enter a URL
Type or paste any public page URL from your site into the URL field. Example: https://yoursite.com/about/
Select WCAG Level
Choose your compliance target: Level A (basic), Level AA (standard, most commonly required), or Level AAA (highest).
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.
| Score | Grade | Meaning |
|---|---|---|
| 90–100 | Excellent | Minimal or no violations found |
| 70–89 | Good | Minor issues, easy to fix |
| 50–69 | Fair | Several issues needing attention |
| 0–49 | Poor | Significant violations, action needed |
Severity Labels
| Severity | Description |
|---|---|
| Critical | Completely blocks access for users with disabilities |
| Serious | Creates major barriers, must be fixed |
| Moderate | Creates 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
| Feature | What it does | Plan |
|---|---|---|
| Font Size | Increases or decreases text size from 80% to 150% | FREE |
| High Contrast | Switches to a high-contrast color scheme (black/white/yellow) | FREE |
| Dyslexia Font | Applies Lexend font — proven to improve reading for dyslexia | FREE |
| Keyboard Nav | Highlights keyboard focus indicators for keyboard-only users | FREE |
| Screen Reader | Optimizes page structure for screen readers | PRO |
Configuration
Go to AccessIQ → Settings → Accessibility → Widget to configure the widget.
| Option | Description | Default |
|---|---|---|
| Enable Widget | Show or hide the widget on the frontend | Enabled |
| Position | Top Left, Top Right, Bottom Left, Bottom Right | Bottom Right |
| Brand Color | Widget button color — 9 options to match your brand | Green |
| Show on Mobile | Toggle widget visibility on mobile devices | Enabled |
| Font Size Tool | Enable/disable the font size control | Enabled |
| High Contrast Tool | Enable/disable high contrast toggle | Enabled |
| Dyslexia Font Tool | Enable/disable dyslexia-friendly font toggle | Enabled |
| Keyboard Nav Tool | Enable/disable keyboard navigation highlights | Enabled |
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
| Filter | Options |
|---|---|
| Page | Select any tracked page from the dropdown |
| Device | All Devices, Desktop, Mobile, Tablet |
| Date Range | Last 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:
| Metric | Description |
|---|---|
| Total Sessions | Number of individual visits in the selected date range |
| Avg Time on Page | Average time visitors spend per session (in seconds) |
| Bounce Rate | % of sessions where visitor left without interacting |
| Total Clicks | Total 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:
| Column | Description |
|---|---|
| Page | The page URL (truncated) |
| Sessions | Total sessions on that page |
| Avg Time | Average time spent on that page |
| Bounce Rate | Color-coded — red/amber/green based on severity |
| Top Device | Most common device type for that page |
Settings
Go to AccessIQ → Settings to configure all plugin options. Settings are organized into tabs.
Accessibility — Widget Tab
| Option | Description | Default |
|---|---|---|
| Enable Widget | Master toggle — show or hide the frontend accessibility toolbar | On |
| Widget Position | Where the widget button appears: Top Left / Top Right / Bottom Left / Bottom Right | Bottom Right |
| Brand Color | Button background color — 9 presets: Green, Blue, Purple, Red, Orange, Pink, Teal, Indigo, Gray | Green |
| Show on Mobile | Toggle widget on/off for mobile screens | On |
| Font Size Tool | Show/hide the font size increase/decrease control | On |
| High Contrast Tool | Show/hide the high contrast toggle | On |
| Dyslexia Font Tool | Show/hide the dyslexia-friendly font toggle | On |
| Keyboard Nav Tool | Show/hide the keyboard navigation focus highlighting | On |
Accessibility — Scanner Tab
| Option | Description | Default |
|---|---|---|
| Default WCAG Level | Pre-select compliance level in the scanner: A / AA / AAA | AA |
| Scan History Limit | Maximum number of past scans to keep in the database | 50 |
| Monthly Scan Limit | Free: 5/month. Shows remaining scans and reset date | 5 (Free) |
InsightForge — Analytics Tab
| Option | Description | Default |
|---|---|---|
| Enable Tracking | Master toggle — enable or disable click and session tracking | On |
| Exclude Admins | Don't track clicks/sessions from logged-in admin users | On |
| Data Retention | How long to keep click and session data (30/60/90/180 days) | 90 days |
| Session Timeout | Minutes of inactivity before a new session is started | 30 min |
| Exclude Pages | Comma-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
| Constant | Value / Description |
|---|---|
| ACCESSIQ_VERSION | Current plugin version string, e.g. 1.0.0 |
| ACCESSIQ_PATH | Absolute path to plugin folder with trailing slash |
| ACCESSIQ_URL | URL to plugin folder with trailing slash |
| ACCESSIQ_DEV_MODE | Auto-set to true on localhost — enables debug logging |
Action & Filter Hooks
Action Hooks
| Hook | When it fires |
|---|---|
| accessiq_activated | After plugin activation and DB table creation |
| accessiq_scan_complete | After a WCAG scan finishes. Passes $scan_id, $score, $url |
| accessiq_click_recorded | After a click event is saved. Passes $click_data array |
| accessiq_session_started | When a new visitor session begins |
// 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
| Hook | Description |
|---|---|
| accessiq_track_this_page | Return false to exclude a page from tracking. Passes current URL. |
| accessiq_scan_rules | Add or remove WCAG rules from the scanner. Passes rules array. |
| accessiq_widget_position | Override widget position programmatically. |
// 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
| Table | Stores | Key columns |
|---|---|---|
| wp_accessiq_clicks | Heatmap click events | x, y, element_selector, page_url, device, created_at |
| wp_accessiq_sessions | Visitor sessions | page_url, duration, device, bounced, created_at |
| wp_accessiq_issues | WCAG scan violations | scan_id, rule_id, severity, element, wcag_level |
| wp_accessiq_dashboard | Dashboard config & scan meta | scan_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:
// 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.