---
title: Data & uninstall
description: What Lumtera and Lumtera Pro store (tables, options, meta, capabilities and scheduled jobs), what's sent outside your site, personal data tools, and what uninstalling removes.
---
# Data & uninstall
## Nothing leaves your site by default
- Lumtera runs entirely inside your WordPress. No account, no API key, no MantraBrain servers.
- Nothing runs for visitors, except [site fixes](/site-fixes) you switch on.
- Nothing is sent to an outside service unless you switch on [AI suggestions](/ai). Then data is sent only to the AI provider connected to WordPress, and only when someone clicks a button for a suggestion. For alt text, that's the image and the text around it. For link text, headings and summaries, it's the text involved and the post title.
- The weekly [email summary](/email-summary) is off by default. When it's on, WordPress emails site totals to the addresses you enter.
- While content is rendered for a check, outgoing HTTP requests are blocked, so blocks like RSS feeds and embeds don't fetch anything.
Lumtera Pro contacts `store.mantrabrain.com` to check your license and updates (it sends your site address and environment type). It sends data elsewhere only where you set it up:
- Slack and webhook addresses you add
- client sites you connect to the portfolio
- the [issue tracker](/pro/fix-tracking#issue-trackers) you connect (GitHub, GitLab, Jira or Linear). An issue holds the finding, its markup snippet, how to fix it, the page title, its view and edit links, a link to the task on the Fixes screen, and the site name.
## Free plugin
### Table
`{prefix}lumtera_issues` holds one row per open finding: `id`, `post_id`, `rule_id`, `severity`, `fingerprint`, `occurrence`, `message`, `context` (the markup snippet) and `created_at`. A post's rows are replaced each time it's checked, and removed when it's deleted. Dismissed findings, and findings ignored site-wide in Pro, have no rows.
### Options
| Option | Contents |
| --- | --- |
| `lumtera_settings` | Content types, check on save, before-publishing mode, outlines, per-check severities, and the AI switches (`alt_text`, `link_text`, `headings`, `summary`) |
| `lumtera_permissions` | The roles ticked under Settings → Permissions, as a record of the last save. The roles hold the live state (see [Roles and capabilities](#roles-and-capabilities)). |
| `lumtera_email_summary` | Email summary switch, recipients and weekday |
| `lumtera_email_summary_state` | Totals at the last summary sent, and posts whose score dropped since (up to 100) |
| `lumtera_site_fixes` | Site fix switches and options |
| `lumtera_statement` | Your statement form answers |
| `lumtera_db_version`, `lumtera_roles_version`, `lumtera_permissions_version` | Version markers |
### Post meta
| Key | Contents |
| --- | --- |
| `_lumtera_summary` | Counts, score, reading grade and when it was checked |
| `_lumtera_score` | Score, for sorting list tables |
| `_lumtera_dismissed` | Dismissed issues, with who, when, why and the severity |
| `_lumtera_manual` | [Manual check](/manual-checks) results: for each test, the result, note, failed criteria, who recorded it and when |
| `_lumtera_image`, `_lumtera_image_noalt`, `_lumtera_image_noalt_manual` | Which images a post shows, and which copies lack alt text (for the alt text manager) |
| `_lumtera_alt_ai` | On images: who accepted an AI alt text suggestion, and when |
| `_lumtera_statement_hash` | On the statement page, to tell whether it's been edited |
Lumtera also writes WordPress's own `_wp_attachment_image_alt` when you save alt text in the alt text manager. Before WordPress 7.0, it also copies alt text embedded in an uploaded image into it, when the image has none.
### User meta and transients
**User meta:** `lumtera_welcome_dismissed`.
**Transients:**
| Transient | Kept for |
| --- | --- |
| `lumtera_totals`, `lumtera_by_rule`, `lumtera_by_rule_published`, `lumtera_worst`, `lumtera_groups` | Up to a day. Cleared whenever a result or setting changes. |
| `lumtera_image_review` | An hour |
| `lumtera_ai_ready`, `lumtera_ai_text_ready` | 10 minutes |
| `lumtera_rate_{user ID}` | A minute: live-check rate limit. Stored in the object cache instead when the site has a persistent one. |
| `lumtera_rate_ai_{user ID}` | 10 minutes: AI rate limit |
### Roles and capabilities
| Name | Given to | Grants |
| --- | --- | --- |
| `lumtera_reporter` (role) | Users you choose | `read` and `lumtera_view_summary` only. See [Lumtera Reporter](/permissions#lumtera-reporter). |
| `lumtera_view_summary` | The Lumtera Reporter role and administrators | Reading `/site-summary` |
| `lumtera_view_reports` | Roles ticked under **See reports and check the site**. Default: roles that can edit others' posts. | Lumtera's report screens and site-wide checks |
| `lumtera_dismiss_errors` | Roles ticked under **Dismiss errors**. Default: roles that can edit others' posts. | Dismissing and restoring errors |
| `lumtera_review_mode` | Roles ticked under **Review pages on the site**. Default: roles that can edit posts. | Review mode on posts the user can edit |
Administrators always keep the last three. The defaults are granted once per site, when Lumtera first runs with this feature. The capabilities live on the roles, so a role editor plugin can show them and give them to single users. From WP-CLI, change them with `wp cap add` and `wp cap remove`, for example `wp cap add author lumtera_dismiss_errors`.
### Scheduled job
| Hook | When |
| --- | --- |
| `lumtera_email_summary` | Weekly at 09:00 site time, on the chosen weekday (default Monday). Scheduled only while the email summary is on and Lumtera Pro isn't active. |
The free plugin has no other scheduled jobs and no custom post types.
## Lumtera Pro Pro {#lumtera-pro}
### Tables
| Table | Contents |
| --- | --- |
| `{prefix}lumtera_pro_tasks` | Fix tracking tasks |
| `{prefix}lumtera_pro_task_log` | Task history, including issues created in a tracker |
| `{prefix}lumtera_pro_pages` | Page check results, one row per URL and viewport (desktop or phone) |
| `{prefix}lumtera_pro_audit` | Activity log |
### Options
| Option | Contents |
| --- | --- |
| `lumtera_pro_license` | The license. Stored network-wide (site option) when Pro is network-activated. |
| `lumtera_pro_alerts` | Alert settings |
| `lumtera_pro_branding` | Report branding |
| `lumtera_pro_history` | Daily score snapshots, 400 days |
| `lumtera_pro_acr` | Your [conformance report](/pro/acr) details and per-criterion overrides |
| `lumtera_pro_ignore_rules`, `lumtera_pro_ignore_log` | [Ignore rules](/pro/ignore), with who added each and why, and the last 100 changes |
| `lumtera_pro_ignore_rescan` | Posts waiting to be checked again after an ignore rule changed |
| `lumtera_pro_trackers`, `lumtera_pro_tracker_status` | Issue tracker settings (the token encrypted), and the result of the last test and automatic issue |
| `lumtera_pro_sites`, `lumtera_pro_site_*` | Portfolio sites and their results |
| `lumtera_pro_scheduled`, `lumtera_pro_scheduled_run`, `lumtera_pro_scheduled_lock` | Scheduled page checks |
| `lumtera_pro_webhooks`, `lumtera_pro_webhook_status` | Webhooks and their last delivery |
| `lumtera_pro_audit` | Activity log retention |
| `lumtera_pro_db_version` | Version marker |
Portfolio passwords, webhook secrets and issue tracker tokens are encrypted with libsodium, using a key derived from your site's secret keys, or `LUMTERA_PRO_ENCRYPTION_KEY` if defined.
Short-lived transients hold queued webhook deliveries (`lumtera_pro_wh_*`), alert de-duplication, tracker rate-limit waits and update details (`lumtera_pro_update_info`).
### Post meta and post type
**Post meta:** `_lumtera_pro_errors` (alert baseline), `_lumtera_pro_pdf` and `_lumtera_pro_pdf_attempt` (PDF results), `_lumtera_report` (report snapshots).
**Post type:** `lumtera_report`, private, with no admin UI of its own.
### Scheduled jobs
Pro uses Action Scheduler (group `lumtera-pro`) when it's loaded, for example with WooCommerce. Otherwise it uses WP-Cron.
| Hook | When |
| --- | --- |
| `lumtera_pro_license_check` | Daily |
| `lumtera_pro_daily` | Daily at 02:00: score snapshot and activity cleanup |
| `lumtera_pro_weekly` | Mondays at 09:00: weekly summary |
| `lumtera_pro_scheduled_checks`, `lumtera_pro_scheduled_batch` | 03:00, daily or weekly: scheduled page checks |
| `lumtera_pro_documents_scan` | Daily, and after uploads: PDF checks |
| `lumtera_pro_portfolio_sync`, `lumtera_pro_portfolio_sync_site` | Twice a day: portfolio |
| `lumtera_pro_deliver_alert`, `lumtera_pro_deliver_alerts` | Straight after a save: alerts |
| `lumtera_pro_webhook_send` | Straight away, with retries: webhooks |
| `lumtera_pro_ignore_rescan` | Straight after an ignore rule is added or removed, 20 posts per run: re-checks the affected posts |
| `lumtera_pro_tracker_issue` | A few seconds apart, when **auto-create** is on: creates tracker issues for new tasks, retrying up to 5 times when the tracker asks to wait |
**Tools → Site Health** includes a **Lumtera Pro background tasks** test that warns when jobs are more than an hour late. See [Troubleshooting](/troubleshooting#scheduled-tasks-run-late-or-not-at-all).
## Privacy
Lumtera collects nothing about visitors.
Both plugins add sections to WordPress's privacy tools. See Tools → Export Personal Data and **Erase Personal Data**:
| Tool | Exports | Erasing |
| --- | --- | --- |
| Lumtera accessibility dismissals and AI alt text | Issues the person dismissed (with notes), and AI alt text suggestions they accepted | Removes the person's name and notes. The dismissals and the "suggested by AI" record stay. |
| Lumtera manual accessibility checks | Manual check results the person recorded, with notes | Removes the person and the note. The result stays. |
| Lumtera Pro activity log | Activity log entries by the person | Replaces their name with "A removed user". The entries stay. |
Pro's fix tracking tasks and ignore rules also store user IDs (assignees, and who added a rule), and ignore rules store the reason typed. These aren't part of the export and erase tools.
Lumtera also adds suggested text to Settings → Privacy → Policy Guide, including a section on manual checks.
## Uninstall
**Deactivating** the free plugin unschedules the email summary. **Deactivating** Pro cancels all its scheduled jobs. Neither deletes any data.
**Deleting the free plugin** removes, on every site of a network:
- the `lumtera_issues` table
- the options listed above
- the post meta `_lumtera_summary`, `_lumtera_score`, `_lumtera_dismissed`, `_lumtera_image`, `_lumtera_image_noalt`, `_lumtera_image_noalt_manual`, `_lumtera_alt_ai` and `_lumtera_statement_hash`
- the user meta and transients listed above
- the email summary job
- the Lumtera Reporter role, and the `lumtera_view_summary`, `lumtera_view_reports`, `lumtera_dismiss_errors` and `lumtera_review_mode` capabilities from every role
It **keeps**:
- your accessibility statement page (it's your content)
- alt text Lumtera added to images and posts
- manual check results (`_lumtera_manual` post meta)
**Deleting Lumtera Pro** removes, on every site of a network:
- the options `lumtera_pro_branding`, `lumtera_pro_alerts`, `lumtera_pro_history`, `lumtera_pro_sites` and `lumtera_pro_site_*`, `lumtera_pro_scheduled`, `lumtera_pro_scheduled_run`, `lumtera_pro_scheduled_lock`, `lumtera_pro_webhooks`, `lumtera_pro_webhook_status`, `lumtera_pro_audit`, `lumtera_pro_ignore_rules`, `lumtera_pro_ignore_log`, `lumtera_pro_ignore_rescan` and `lumtera_pro_db_version`
- the post meta `_lumtera_pro_errors`, `_lumtera_pro_pdf` and `_lumtera_pro_pdf_attempt`
- queued webhook deliveries and the cached update details
- all its scheduled jobs
By default it **keeps**:
- your **license**, because an expired key can't be activated again. Define `LUMTERA_PRO_DELETE_LICENSE` as `true` to remove it.
- your **reports, fix history, page results and activity log**. Define `LUMTERA_PRO_DELETE_REPORTS` as `true` to remove them (the `lumtera_report` posts and the four tables).
- the conformance report details (`lumtera_pro_acr`) and issue tracker settings (`lumtera_pro_trackers`, `lumtera_pro_tracker_status`). Delete these options yourself if you no longer need them, for example with `wp option delete lumtera_pro_trackers`.
```php
// wp-config.php: remove everything when Lumtera Pro is deleted.
define( 'LUMTERA_PRO_DELETE_REPORTS', true );
define( 'LUMTERA_PRO_DELETE_LICENSE', true );
```
On multisite, deleting a site drops its `lumtera_issues` table.