Title: Concretus Copy Report – Copy Activity Insights
Author: concretus
Published: <strong>July 19, 2026</strong>
Last modified: July 19, 2026

---

Search plugins

![](https://ps.w.org/concretus-copy-report/assets/icon-256x256.png?rev=3613189)

# Concretus Copy Report – Copy Activity Insights

 By [concretus](https://profiles.wordpress.org/concretus/)

[Download](https://downloads.wordpress.org/plugin/concretus-copy-report.1.5.7.zip)

 * [Details](https://wordpress.org/plugins/concretus-copy-report/#description)
 * [Reviews](https://wordpress.org/plugins/concretus-copy-report/#reviews)
 *  [Installation](https://wordpress.org/plugins/concretus-copy-report/#installation)
 * [Development](https://wordpress.org/plugins/concretus-copy-report/#developers)

 [Support](https://wordpress.org/support/plugin/concretus-copy-report/)

## Description

Copy Report listens for the browser’s standard `copy` event and records qualifying
text selections from your public pages. Context-menu copy, Ctrl+C, and Command+C
are supported.

For each selection of at least 10 characters, Copy Report can store:

 * Copy time in the WordPress site timezone
 * Page title
 * Same-origin, sanitized page URL
 * Copied text
 * Unicode character count

The administration screen provides a top-ten page ranking, search, sorting, pagination,
and a UTF-8 CSV export that follows the current filters.

A detailed Japanese manual is included in `docs/manual-ja.md`.

#### Privacy-conscious recording

Recording is disabled by default. Review your privacy notice and recording scope
before enabling it. By default, detection excludes logged-in visitors, password-
protected pages, and recognized WooCommerce account and checkout pages.

Form controls, editable areas, and `data-concretus-copy-report-ignore` containers
are excluded. URL fragments and non-allowlisted query parameters are removed before
storage.

Copy Report does not persist raw IP addresses or session identifiers. Bounded, expiring
HMAC counters and a random `sessionStorage` identifier support duplicate and abuse
controls.

The plugin does not contact the developer’s servers or an external analytics service.
If email notifications are enabled, copy-event data is passed to WordPress `wp_mail()`
and may be processed by the mail or SMTP provider configured by the site owner.

#### Email notifications and diagnostics

Optional near-immediate, hourly, and daily notifications run through WP-Cron. Messages
show copy and mail processing times. The history screen shows pending count, next
processing time, and the latest WordPress mail result. Settings include test mail,
manual queue processing, and privacy-minimized diagnostics.

An accepted `wp_mail()` result does not guarantee inbox delivery. WP-Cron timing
depends on site traffic and server configuration.

#### Retention and performance

Retention defaults to 90 days, with 30, 180, 365-day, and unlimited options. Cleanup
uses bounded batches, and uninstall deletion is configurable.

Normal page views add one event listener and no Copy Report database query. A same-
site asynchronous request is made only after a qualifying copy. Bounded site, source,
and payload limits apply.

#### Upgrading from CopyCheck or an earlier Copy Report package

Version 1.5.7 moves plugin-owned classes, constants, options, hooks, actions, and
the custom table to the unique `concretus_copy_report` prefix. Existing CopyCheck
history, settings, and notification cursors are migrated once during activation 
or the first request after update.

Copy Report provides behavioral observations, not identity, legal, compliance, or
ranking guarantees.

### Privacy

Copy Report stores copy-event data in a custom WordPress table. Administrators can
view, export, retain, or delete it. Raw session identifiers and IP addresses are
not persisted. No telemetry is sent to the developer.

With notifications enabled, event details use the site’s mail/SMTP path. Copy Report
adds suggested wording to the WordPress Privacy Policy Guide; administrators must
adapt it to their site.

## Installation

 1. Upload the `concretus-copy-report` folder or install `concretus-copy-report.zip`
    through Plugins > Add New > Upload Plugin.
 2. Activate Copy Report.
 3. Open Copy Report > Settings, review the privacy information and recording scope,
    then enable recording if appropriate for your site.
 4. Copy at least 10 characters from an eligible public page and open Copy Report >
    History to confirm the event.
 5. Configure email notifications, retention, and uninstall behavior as needed.

When upgrading from CopyCheck or the earlier `copy-report` package, back up the 
database and disable its “delete data on uninstall” option. Deactivate and delete
the old package before installing this one, then verify that history and settings
were retained.

## FAQ

### Does Copy Report prevent people from copying my content?

No. It records supported browser copy events for reporting. It cannot prevent copying
or detect screenshots, browser automation, scripts, cached copies, or every assistive
or platform-specific method.

### What data is stored for a copy event?

Copy time, page title, sanitized same-site URL, selected text, character count, 
and a keyed duplicate-detection hash.

### Is the visitor’s IP address stored?

No raw IP is persisted by Copy Report. A site-secret keyed, time-window HMAC may
be used in bounded abuse-prevention counters. Other hosting or security systems 
may keep separate logs.

### Does the copy recorder set a cookie?

No. Version 1.5.0 and later use a random identifier in browser `sessionStorage`,
with in-memory fallback when storage is unavailable. The plugin does not persist
the raw identifier in its database.

### Are form entries or private editable text recorded?

The detector ignores form controls, editable areas, and `data-concretus-copy-report-
ignore` containers. Logged-in visitors, password-protected pages, and recognized
WooCommerce account and checkout pages are excluded by default. Review templates
for any other sensitive areas.

### How do I exclude a page section?

Add the `data-concretus-copy-report-ignore` attribute to a containing HTML element.
Copies originating inside that element will be ignored. Existing `data-concretus-
copy-report-ignore` markup remains supported for backward compatibility.

### Why was a copy not recorded?

Confirm that recording is enabled, the selection contains at least 10 characters,
the visitor and page are within the configured scope, and the source is not an excluded
element. Duplicate and rate limits can also reject repeated events.

### Why is an email delayed or missing even though history exists?

Check mail diagnostics, the pending count, next WP-Cron run, and test-mail result.
A successful WordPress handoff does not guarantee delivery; also check spam filtering,
SMTP, domain authentication, and WP-Cron.

### Does Copy Report improve SEO?

Copy activity can help form hypotheses about useful passages, questions, calls to
action, and content structure. Copy counts are not sent to search engines, are not
a known ranking signal, and do not guarantee SEO results.

### What happens to data when I uninstall the plugin?

The settings screen lets an administrator choose whether history and settings are
deleted during uninstall. Deletion cannot be undone. If deletion is disabled, the
custom table and settings remain for a later reinstall or migration.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Concretus Copy Report – Copy Activity Insights” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ concretus ](https://profiles.wordpress.org/concretus/)

[Translate “Concretus Copy Report – Copy Activity Insights” into your language.](https://translate.wordpress.org/projects/wp-plugins/concretus-copy-report)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/concretus-copy-report/),
check out the [SVN repository](https://plugins.svn.wordpress.org/concretus-copy-report/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/concretus-copy-report/)
by [RSS](https://plugins.trac.wordpress.org/log/concretus-copy-report/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.7

 * Moved all plugin-owned runtime identifiers to the unique `concretus_copy_report`
   prefix.
 * Migrates existing history, settings, and notification cursors to the new identifiers.
 * Removed the direct write to WordPress core’s shared `notoptions` cache entry.

#### 1.5.6

 * Replaced migration bootstrap globals with a namespaced class to satisfy WordPress
   coding standards.
 * Kept runtime behavior, stored data, settings, and database schema unchanged.

#### 1.5.5

 * Matched the plugin directory, main file, and text domain to the assigned `concretus-
   copy-report` WordPress.org slug.
 * Added a safe activation guard for active CopyCheck and earlier `copy-report` 
   packages.
 * Preserved the existing database table, settings, history, notification state,
   and public integration identifiers.

#### 1.5.4

 * Added the Concretus brand to the public plugin name for WordPress.org submission.
 * Kept settings, history, and runtime behavior unchanged.

#### 1.5.3

 * Resolved the remaining eight warnings reported by the official Plugin Check tool.
 * No functionality, stored-data specification, or database schema changed.

#### 1.5.0

 * Renamed CopyCheck to Copy Report while preserving history and settings.
 * Added opt-in recording, privacy-conscious scope defaults, bounded limits, retention
   controls, and Privacy Policy Guide text.
 * Replaced the recorder cookie with a session-scoped identifier and expanded sensitive-
   area exclusions.

#### 1.4.0

 * Added asynchronous near-immediate notification scheduling, test mail, manual 
   queue processing, delivery diagnostics, mail processing timestamps, and an easier-
   to-find CSV action.

## Meta

 *  Version **1.5.7**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [analytics](https://wordpress.org/plugins/tags/analytics/)[content](https://wordpress.org/plugins/tags/content/)
   [copy](https://wordpress.org/plugins/tags/copy/)[privacy](https://wordpress.org/plugins/tags/privacy/)
   [reports](https://wordpress.org/plugins/tags/reports/)
 *  [Advanced View](https://wordpress.org/plugins/concretus-copy-report/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/concretus-copy-report/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/concretus-copy-report/reviews/)

## Contributors

 *   [ concretus ](https://profiles.wordpress.org/concretus/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/concretus-copy-report/)