Page Content Guard

Help & Documentation

You probably came here because you need to finish a task or understand why a check failed.

You do not need to read everything. I have organised this documentation around the job in front of you, not the order of WordPress menu screens. Find the task or symptom, open that topic and get back to the site.

FREE 2.3.2 PRO 1.7.1
FREEPRO

Getting Started

Reviewed for FREE 2.3.2 and PRO 1.7.1

Do not configure the whole site at once. Install FREE and begin with one page whose title, URL or saved wording genuinely matters.

That first monitor tells you more than a long feature list: you will see what the plugin checks, what it deliberately ignores and whether the model fits your site.

WordPress Plugins screen after Page Content Guard FREE activation, with the plugin active and the Monitors and Settings links visible.
Page Content Guard FREE active on the WordPress Plugins screen.
Before installation

Before installing, check these four things:

  • WordPress 6.5 or newer
  • PHP 7.4 or newer
  • activation on an individual WordPress site
  • an administrator account with permission to manage plugin settings

Network-wide Multisite activation is not supported. If Multisite is used, activate the plugin separately on the intended site.

Page Content Guard can select pages, posts and eligible public custom post types. It is not a general URL monitor.

Install the FREE plugin

WordPress.org publication pending

The FREE plugin is not yet publicly downloadable from WordPress.org. Once publication is complete, you will be able to install it directly from WordPress or upload the official ZIP.

Install from WordPress.org after publication

Steps

  1. In WordPress, open Plugins > Add New Plugin.
  2. Search for "Page Content Guard".
  3. Check that the publisher is Harbour Atelier.
  4. Select "Install Now".
  5. Select "Activate".
  6. Open Page Content Guard > Monitors.

Upload a FREE ZIP after publication

Steps

  1. Download the current Page Content Guard ZIP from WordPress.org.
  2. In WordPress, open Plugins > Add New Plugin > Upload Plugin.
  3. Choose the ZIP file.
  4. Select "Install Now".
  5. Activate Page Content Guard.
  6. Open Page Content Guard > Monitors.

Expected Result

The Page Content Guard menu appears in WordPress administration. No default monitors are created.

Create the first monitor

Use content that matters, but keep the first setup simple. A contact page, homepage or main service page is easier to understand than a page driven entirely by dynamic builder data.

Steps

  1. Open Page Content Guard > Monitors.
  2. Select "Add Monitor".
  3. Search for the content item.
  4. Select the correct published record.
  5. Review the current URL preview.
  6. Leave publication status monitoring enabled.
  7. Enable URL monitoring if the address should remain stable.
  8. Enable blank-content checking only if standard WordPress content is expected to contain meaningful content.
  9. Add one required fragment if there is a specific saved phrase, URL or shortcode that must remain present.
  10. Enable title integrity only if an exact stored title matters.
  11. Select "Save & Check".

Expected Result

The monitor is saved and checked immediately. You should see one of four states:

OK

Every enabled condition passed.

Problem

At least one configured condition failed.

Unchecked

The monitor exists but has not completed a check.

Paused

The configuration is preserved, but the monitor is not included in normal checking.

Choose checks that match the content

More checks are not automatically better.

A monitor is useful when each rule has a reason. If a page builder stores visible content outside standard post_content, a fragment rule may create false confidence or confusing results. If a title changes regularly, an exact-title baseline may create unnecessary work.

Start with publication status and expected URL. Add content rules only where the stored data is understood.

Read Monitors and Checks

Run a manual check

To check one monitor:

  1. Open Page Content Guard > Monitors.
  2. Find the monitor.
  3. Open its row actions.
  4. Select "Check now".

To check all non-paused monitors:

  1. Open Page Content Guard > Monitors.
  2. Select "Check all monitors".
  3. Wait for the completion result.

A manual check reads the current WordPress record and updates Current Problems. It does not load the public page.

What happens after a WordPress edit

FREE can check a monitored item after relevant WordPress content changes.

For example, if an editor removes a required fragment and saves the post, Page Content Guard can open a current problem without waiting for a manual bulk check.

This event-driven behaviour is not the same as scheduled monitoring. If content changes outside the relevant WordPress events or the site needs periodic checks, PRO scheduling is the appropriate feature.

Open Current Problems

Steps

  1. Open Page Content Guard > Problems.
  2. Find the affected monitor.
  3. Read the issue description and stored context.
  4. Use the relevant action:
    • edit the content
    • restore publication status
    • restore the old URL
    • accept an intentional current URL
    • accept an intentional current title or PRO baseline
    • edit or pause the monitor
  5. Run a fresh check.

A problem disappears after a successful check confirms that the condition now passes.

Read Problems and Results

Pause a monitor

Pause a monitor during planned work when temporary changes would create noise.

Pausing preserves:

  • monitor configuration
  • current issue state
  • accepted baselines
  • PRO history

A paused monitor is not included in normal checks.

To pause:

  1. Open Page Content Guard > Monitors.
  2. Open the monitor row actions.
  3. Select "Pause monitor".
  4. Confirm if WordPress asks for confirmation.

Resume it from the same row when the planned work is complete, then run a check.

Edit or delete a monitor

Editing changes the checks applied to the same WordPress content record.

Saving the monitor does not silently accept an active exact-value baseline. Use the explicit acceptance action when an intentional title or PRO integrity change should become the new baseline.

Deleting a monitor removes that monitor and its current issue state.

It does not delete the WordPress page or post.

If PRO history exists, historical behaviour follows the documented PRO data rules. Do not use monitor deletion as a substitute for resolving a site problem.

Add PRO later

PRO can be installed after FREE has already been used.

The existing monitors remain. PRO adds its controls beside the related FREE controls and adds its own History, Bulk Setup and Settings behaviour.

You do not need to recreate the monitors.

Read PRO Installation and Features

First-monitor checklist

Checklist

  • The selected item is the correct WordPress record.
  • The current URL preview is expected.
  • Publication status monitoring is enabled.
  • Blank-content checking matches how the page stores content.
  • Required fragments use exact text that is stable.
  • Title integrity is enabled only if exact title changes matter.
  • "Save & Check" produced an understandable result.
  • The monitor appears in the Monitors list.
  • Current Problems is empty or the initial problem has been reviewed.
FREEPRO

Monitors and Checks

Reviewed for FREE 2.3.2 and PRO 1.7.1

Before adding every available rule, decide what must remain true for this particular page.

Each monitor follows one WordPress content record by its ID and stores the conditions you accepted for it. It is not guessing from a title or loosely matching a URL.

Current Add or Edit Monitor screen showing content selection, publication status, expected URL, blank-content checking, required fragments and title integrity.
The monitor editor groups checks around one selected WordPress content record.
One monitor, one WordPress record

When a monitor is created, Page Content Guard keeps the WordPress content ID and enough retained context to explain a problem later.

If the target is permanently deleted, the monitor stays behind. It reports missing content using the retained title, content type and expected URL snapshots.

It does not automatically attach itself to another post with the same name or address. That would hide the deletion and could monitor the wrong content.

Monitor states

State

OK

The latest completed check found no current issue for the enabled conditions.

State

Problem

At least one enabled condition failed. Open Current Problems for the details.

State

Unchecked

The monitor has not completed a check yet, or no usable result is available.

State

Paused

The configuration is preserved, but the monitor is excluded from normal checking until resumed.

Publication status

Availability

FREE - always enabled

Publication status is the basic condition of every monitor.

A public page moved to draft, private or trash is no longer in the state the monitor expects. Page Content Guard reports that change.

This check does not inspect whether a visitor can reach the page through menus, search, permissions, redirects or cache. It reads the WordPress publication state.

Expected URL

Availability

FREE

When URL monitoring is enabled, Page Content Guard stores the accepted generated permalink.

A later permalink that differs from the accepted URL opens a URL problem.

Typical causes include:

  • a changed slug
  • a changed parent page
  • permalink-setting changes
  • a domain or protocol change after migration
  • custom post type rewrite changes
  • multilingual or routing changes

Resolution

If the change is accidental, restore the intended URL and check again.

If the change is deliberate, verify the new public environment first, then use "Accept current URL". The new generated permalink becomes the expected URL.

Do not accept a changed URL merely to clear the warning.

Pro Note

PRO adds "Accept All Current URLs" for verified multi-page migrations.

Blank standard content

Availability

FREE

This optional check reports when standard WordPress post_content is clearly blank.

It does not render blocks, execute shortcodes or inspect page-builder-specific fields.

A builder-managed page can look complete while post_content is empty. In that case, this check is not a reliable representation of the public page and should usually remain disabled.

Required content fragments

Availability

FREE - unlimited valid fragments

A required fragment is exact saved text that must remain present in standard post_content.

Useful examples can include:

  • a stable sentence
  • a destination URL
  • a shortcode stored in post_content
  • a required heading
  • a contact detail
  • a disclaimer fragment

The plugin checks literal stored content. It does not understand synonyms, equivalent wording or rendered output.

Rule Writing Guidance

Choose the smallest fragment that is specific enough to matter and stable enough not to create constant maintenance.

Too broad: "contact"

This could appear almost anywhere and prove very little.

Too fragile: A complete paragraph that editors change frequently.

A small punctuation edit may make the exact fragment disappear.

Better: A distinctive phrase, URL or shortcode that should remain unchanged.

Limitations

Required fragments:

  • inspect standard post_content
  • do not inspect arbitrary custom fields
  • do not execute shortcodes
  • do not see text generated later by a theme, block or external service
  • do not confirm that the wording is legally correct
  • remain active in FREE without a numerical plan limit
Stored-title integrity

Availability

FREE - optional and disabled by default

Title integrity records the exact title value currently stored by WordPress as the accepted baseline.

A later exact title change opens one stable problem.

Saving the monitor does not silently replace the baseline. The problem resolves when:

  • the title returns exactly to the accepted value
  • the title check is disabled
  • an administrator explicitly accepts the current title as the new baseline

Use title integrity only where the exact title matters. It is not useful for content whose title changes routinely.

Wordpress Revisions

When the post still exists, revisions are enabled and the current user may edit it, Page Content Guard can show a link to the native WordPress revisions screen.

The revision link is context, not part of the monitoring decision. A missing revision does not disable the check.

Stored post_content integrity

Availability

PRO

This check creates a fingerprint of the exact standard post_content value accepted as the baseline.

The plugin does not copy the full post_content into the integrity baseline.

A later exact stored-value difference opens a content-integrity issue.

This is stricter than a required fragment. A fragment asks whether selected text is still present. Stored-content integrity asks whether the entire supported stored value is exactly the same.

Normal Changes Can Trigger It

  • editing a block
  • changing whitespace
  • importing content
  • WordPress block serialization changes
  • replacing a shortcode
  • changing markup without changing the visible wording

Use this check when exact stored content matters and somebody is prepared to review intentional edits.

Excerpt integrity

Availability

PRO

For content types that support excerpts, PRO can record the exact accepted stored excerpt.

A later change or removal opens an excerpt-integrity issue.

The plugin may retain a bounded display snapshot to make the problem understandable. It does not evaluate search snippets or the excerpt displayed by a theme.

Forbidden content fragments

Availability

PRO

A forbidden fragment reports when selected text appears in standard post_content.

It can be useful for:

  • temporary notices
  • "coming soon" or placeholder wording
  • staging URLs
  • unwanted shortcodes
  • internal notes accidentally pasted into content
  • old campaign wording that should no longer appear

The rule is literal. It cannot decide whether the phrase is acceptable in one paragraph but not another.

Required and forbidden fragments can be used together, but each rule should have a clear purpose.

Accepting a current baseline

A baseline is supposed to resist silent change. For that reason, ordinary monitor saving does not update an active exact-value baseline.

When an intentional change is correct:

  1. Open Current Problems or the monitor editor.
  2. Review the current and accepted context.
  3. Use the acceptance action for that field.
  4. Confirm the action.
  5. Run or review the resulting check.

Accept only the field that changed. Page Content Guard keeps unrelated baselines unchanged.

Copying checks with Bulk Setup

Availability

PRO

Bulk Setup can create monitors for up to 100 selected published items, processed in batches of 25.

When copying from a source monitor, PRO copies enabled checks and fragment values. It creates target-specific expected URLs, rule IDs and integrity baselines for the selected content.

It does not clone the source monitor as an opaque data record.

If the source changes during the run, later batches stop to avoid mixed policy.

When checks run

FREE

  • after relevant WordPress content events
  • when an administrator checks one monitor
  • when an administrator selects "Check all monitors"

PRO

  • all FREE triggers
  • scheduled checks through WordPress Cron
  • bounded continuation requests for larger runs
  • specific maintenance or reconciliation work where required

A completed check receives an operational run context. Multi-request operations keep bounded progress metadata rather than an unbounded issue list.

Practical monitor examples

Example 1

Contact page

Suggested checks:

  • publication status
  • expected URL
  • required phone number or contact-form shortcode, only if stored in post_content

Avoid:

  • blank-content checking if the visible form and text live only in builder fields

Example 2

Privacy page

Suggested checks:

  • publication status
  • expected URL
  • exact title if it should not change
  • one or two stable required phrases

Possible PRO addition:

  • stored post_content integrity if every intentional edit will be reviewed

Important: The plugin cannot confirm that the privacy notice is legally correct.

Example 3

Campaign landing page

Suggested checks:

  • publication status
  • expected URL
  • required form shortcode or destination URL

Possible PRO additions:

  • forbidden temporary wording
  • featured-image assignment
  • scheduled checks and email

Example 4

Frequently edited evergreen post

Suggested checks:

  • publication status
  • expected URL
  • a small number of stable fragments

Avoid:

  • exact stored-content integrity if routine edits are expected
A monitor is only as good as its rules

The safest setup is not the one with every box selected.

Use exact checks for values that should be exact. Use fragments for stable pieces that can survive normal editing. Leave unsupported builder content out rather than treating a weak rule as protection.

FREEPRO

Problems and Results

Reviewed for FREE 2.3.2 and PRO 1.7.1

A problem means one of the rules you chose did not pass. It does not automatically mean the public page is broken, hacked or unavailable.

Open the result, read the failed condition and decide which side is wrong: the current WordPress value or the baseline you previously accepted.

Current Problems screen showing a fictional monitor issue, the time detected, the last check and the relevant resolution action.
Current Problems shows the conditions that fail now.
Current Problems

Current Problems is part of FREE and shows what is wrong now.

Issues are grouped by monitor and can include:

  • content title snapshot
  • content type
  • issue description
  • relevant fragment or old and current URL
  • first detected time
  • last checked time
  • actions that match the issue

The page does not include acknowledgement, assignment, severity or notes workflows.

Fix the cause or accept an intentional baseline, then run a check. The current problem disappears when the condition passes.

Missing content

Meaning

The monitored WordPress record has been permanently deleted or is otherwise unavailable as the original target.

What To Do

  1. Confirm the content was meant to be deleted.
  2. If deletion was accidental, use an appropriate WordPress backup or recovery process outside Page Content Guard.
  3. If replacement content was created, create a new monitor for the new WordPress record.
  4. Delete the obsolete monitor only after the situation is understood.

Page Content Guard does not restore content or attach the old monitor to a new post.

Publication problem

Meaning

The monitored item is no longer in the expected published state.

What To Do

  1. Open the WordPress editor.
  2. Review the status and visibility.
  3. Restore publication if the change was accidental.
  4. Save the content.
  5. Run "Check now".

If the item is intentionally no longer public, pause or delete the monitor rather than leaving a permanent unexplained problem.

Expected URL changed

Meaning

The generated permalink no longer matches the accepted URL.

What To Do

Accidental change:

  • restore the intended slug, parent or permalink configuration
  • save
  • check again

Intentional change:

  • open the new public address separately and verify it
  • consider redirects and external links
  • use "Accept current URL"
  • check again

After a site clone or migration, many URL problems can be legitimate. Pause monitors before the move where practical. PRO can accept verified current URLs in a bounded bulk workflow.

Stored title changed

Meaning

The exact WordPress title differs from the accepted title baseline.

What To Do

  • restore the old title if the change was accidental
  • accept the current title if the change is correct
  • disable title integrity if exact titles are not useful for this content

Do not save and expect the baseline to change automatically. Acceptance is explicit.

Blank standard content

Meaning

Standard post_content is clearly blank under the plugin's supported check.

What To Do

  1. Open the editor and confirm where the content is stored.
  2. Restore standard content if it was removed accidentally.
  3. If the page uses builder-specific fields and empty post_content is normal, disable this check.
  4. Run a new check.
Required fragment missing

Meaning

One configured exact fragment is no longer present in standard post_content.

What To Do

  • restore the fragment if it should remain
  • correct the rule if it was too fragile or included accidental whitespace
  • remove the rule if the requirement no longer exists
  • confirm the page builder is not storing the visible text somewhere else
  • run a new check
Forbidden fragment present

Availability

PRO

Meaning

A configured forbidden fragment is present in standard post_content.

What To Do

  • remove the unwanted text from the content
  • change or remove the rule if the phrase is valid in this context
  • check whether an import or template inserted the text
  • run a new check
Stored-value integrity changed

Availability

PRO

Meaning

The current exact stored post_content, excerpt or featured-image assignment differs from its accepted baseline.

What To Do

  1. Review the field and available WordPress revision context.
  2. Decide whether the change is accidental or intentional.
  3. Restore the old value or accept the current value for that field.
  4. Recheck.

A visually harmless edit can still change exact stored content. The issue is reporting a stored difference, not claiming damage.

Why a fixed problem can remain visible

Current Problems changes only after a check confirms the new state.

If the content was corrected but the issue remains:

  1. Save the WordPress content.
  2. Open Page Content Guard > Monitors.
  3. Select "Check now" for that monitor.
  4. Review any new issue details.
  5. Confirm the rule uses the exact stored text you expect.

If the check fails or does not complete, open Troubleshooting.

Problem actions and monitor actions

Resolve Problem

  • Edit content
  • Accept current URL when relevant
  • Accept a current title or PRO baseline when relevant
  • Check now

Manage Monitor

  • Edit monitor
  • Pause monitor
  • Resume monitor
  • Delete monitor

These are separate because clearing a warning and changing the monitoring policy are not the same job.

Current Problems and Incident History are different

Current Problems

  • included in FREE
  • represents current monitor state
  • removes resolved problems after a successful check
  • remains available when PRO is inactive

Incident History

  • requires compatible PRO
  • records one row for each uninterrupted issue period
  • adds detected and resolved times
  • supports filtering and CSV export
  • is not reconstructed perfectly for periods when PRO was inactive
How an incident period works

A new issue opens one history row.

Repeated checks while that same issue remains present do not create duplicate rows.

When the issue disappears, the row receives a resolved time.

If the same issue returns later, a new row opens.

This is why History can show several separate incidents for one monitor without treating every check as a new event.

History after PRO was inactive

PRO history is preserved while PRO is inactive, but no complete paid history is recorded during that period.

After reactivation, open history rows are reconciled against current issue state during later checks.

If a problem appeared and resolved entirely while PRO was inactive, the plugin cannot recreate that missing incident from nothing.

Deleting or retaining history

Open incidents are never removed by automatic retention.

PRO can keep resolved history forever or remove resolved rows older than 30, 90, 180 or 365 days.

Retention runs through WordPress Cron and removes at most 500 eligible rows per UTC day.

A separate confirmed maintenance action can clear resolved history.

Exporting results

Availability

PRO

History export uses the filters currently applied to the History screen.

The UTF-8 CSV contains at most the newest 10,000 matching rows and applies spreadsheet-formula protection.

Treat exported files as potentially sensitive operational records. They can contain titles, issue context, machine identifiers and details needed to describe a change.

PRO

PRO Installation and Features

Reviewed for PRO 1.7.1

Add PRO when remembering manual checks, reviewing repeated changes or configuring monitors one by one starts costing you time.

PRO is an add-on, not a replacement. FREE still owns the monitors, check engine, current problems and shared administration screens, so install and keep both plugins active.

WordPress Plugins screen with compatible Page Content Guard FREE and Page Content Guard PRO versions active, with version numbers legible.
PRO runs beside the required FREE core plugin.
Requirements

Page Content Guard PRO 1.7.1 requires:

  • WordPress 6.5 or newer
  • PHP 7.4 or newer
  • Page Content Guard FREE 2.3.1 or a compatible newer release
  • FREE extension API 1.3 or a compatible newer release in major version 1
  • individual-site activation

Network-wide Multisite activation is not supported.

If FREE is missing, inactive or incompatible, PRO remains inert and displays one administrator notice. It does not try to run a second monitor engine.

Install PRO

Steps

  1. Install and activate Page Content Guard FREE.
  2. Confirm that Page Content Guard > Monitors opens normally.
  3. Download the current PRO ZIP from the Gumroad purchase receipt or library.
  4. In WordPress, open Plugins > Add New Plugin > Upload Plugin.
  5. Choose the Page Content Guard PRO ZIP.
  6. Select "Install Now".
  7. Activate Page Content Guard PRO.
  8. Open Page Content Guard > Monitors.
  9. Confirm that PRO controls appear beside the related FREE controls.
  10. Open Page Content Guard > Settings and review the PRO settings.

Expected Result

PRO adds:

  • Bulk Setup
  • Incident History
  • scheduled-check settings
  • email and reminder settings
  • history retention
  • advanced integrity fields
  • forbidden fragment fields
  • PRO diagnostics
  • Accept All Current URLs when relevant

The existing FREE monitors remain in place.

Initial settings

After activation, review these items before relying on automation.

Scheduled checks Confirm the intended frequency. Do not assume the default timing fits the site.

Notification recipients Check every address. PRO supports up to 20 unique valid addresses, one per line.

Test email Send one test message to one validated address. A successful result means WordPress accepted it for sending.

Open-problem reminders Leave them off unless repeated reminders are wanted.

Resolved-history retention "Forever" is the default. Choose a finite period only after deciding how much history the site needs.

Next scheduled event Confirm that WordPress reports a future event.

Where PRO controls appear

PRO does not create a second parallel administration area.

Paid controls are attached through the FREE extension API beside the related core controls.

Examples:

  • exact stored-content, excerpt and featured-image checks appear with integrity settings
  • forbidden fragments appear with content rules
  • Accept All Current URLs appears with current URL problems
  • PRO Site Health and dashboard rows extend the FREE diagnostics

Separate PRO pages are used only where the feature needs its own workflow, such as Bulk Setup and Incident History.

Manual update procedure

There is no automatic PRO updater.

Before updating:

  • confirm a recent database backup exists
  • keep FREE active
  • download the latest PRO ZIP from Gumroad
  • read the release notes supplied with the current plugin package

Update Steps

  1. In WordPress, open Plugins > Add New Plugin > Upload Plugin.
  2. Upload the newer PRO ZIP.
  3. Approve replacement of the current plugin when WordPress offers the option.
  4. Wait for the replacement to complete.
  5. Confirm both FREE and PRO remain active.
  6. Open Incident History.
  7. Open Settings.
  8. Confirm the next scheduled event.
  9. Review the most recent completed run and mail-attempt status.
  10. Run one manual check on a test monitor if the release changes monitoring behaviour.

A normal overwrite update preserves monitors, PRO settings, baselines and incident history.

Compatibility notice after an update

If PRO reports that FREE is missing or incompatible:

  1. Confirm both version numbers on the Plugins screen.
  2. Update FREE to the version required by PRO.
  3. Activate FREE.
  4. Reload the Page Content Guard administration page.
  5. Check Site Health if the notice remains.

Do not edit plugin headers or dependency constants to hide the notice. An inactive PRO is safer than running against an unsupported extension API.

What happens when PRO is deactivated

PRO stops:

  • recurring and continuation cron work
  • scheduled checks
  • transition emails
  • open-problem reminders
  • incident-history updates
  • PRO-only checks and bulk tools

PRO preserves:

  • settings
  • forbidden fragment rules
  • exact-value baselines
  • incident history
  • stored PRO monitor configuration

FREE continues to run every non-paused monitor and every valid required fragment.

What happens when PRO is uninstalled

Uninstalling PRO does not delete shared or paid data by default.

There is no separate destructive cleanup option inside PRO.

Complete deletion is controlled by the FREE data-removal setting and happens only when FREE is deleted with that option enabled.

This arrangement prevents an accidental PRO removal from destroying monitor history and paid configuration.

Reactivating PRO

Steps

  1. Confirm compatible FREE is active.
  2. Install or activate the current PRO version.
  3. Open Settings and check scheduling.
  4. Review recipient addresses.
  5. Confirm the History screen opens.
  6. Run a manual check.
  7. Review any reconciliation activity or notices.

Existing PRO data returns when the compatible add-on is active.

History cannot recreate problems that both appeared and resolved entirely while PRO was unavailable.

Moving PRO to another site

The selected Gumroad plan determines how many sites the purchase covers, and the purchase terms continue to apply after a migration.

A WordPress database migration can carry monitor and PRO data to the new environment. Expected URLs may change because of the domain, protocol, path or permalink configuration.

Before or after a migration:

  • pause monitors where practical
  • verify the destination site
  • review changed URLs
  • accept only the correct new URLs
  • check WP-Cron
  • send a test email
  • confirm no private production recipients remain on a staging copy
PRO feature map

Automation

Scheduled checks through WordPress Cron.

Notifications

Private transition summaries and optional reminders.

History

Open and resolved incident periods, filters, retention and CSV export.

Integrity

Exact stored post_content, excerpt and featured-image baselines.

Content Rules

Forbidden fragments alongside FREE required fragments.

Bulk Work

Bulk Setup, bounded Pause or Resume and Accept All Current URLs.

Diagnostics

Dependency, scheduler, history and latest WordPress mail-attempt information.

PRO

Email and Scheduling

Reviewed for PRO 1.7.1

Scheduling removes one very ordinary failure point: somebody forgetting to run the check.

It still depends on WordPress Cron, so treat the selected frequency as a recurrence, not an exact appointment with an external monitoring service.

Page Content Guard PRO Settings showing scheduled-check frequency, next event, notification recipients, reminders and the test-email control.
PRO scheduling and email controls are kept together in Settings.
Available frequencies

PRO supports:

  • hourly
  • twice daily
  • daily
  • weekly

The selected frequency controls when WordPress should make the run due. The actual start depends on WordPress Cron being triggered.

How WordPress Cron affects timing

WP-Cron is request-driven.

On many sites, a due event runs when a visitor or another request reaches WordPress. A low-traffic site can therefore run late.

If DISABLE_WP_CRON is enabled, the site operator must provide an external request to wp-cron.php or an equivalent WP-CLI cron execution.

Page Content Guard cannot send an external warning that its own scheduler has stopped if WordPress Cron never runs. An overdue warning becomes visible when an administrator later opens WordPress.

What To Check

  • Last completed scheduled check
  • Next scheduled check
  • Site Health scheduler result
  • Whether DISABLE_WP_CRON is enabled
  • Whether the hosting control panel has an external cron job
  • Whether security or maintenance tools block wp-cron.php
Bounded scheduled runs

PRO checks larger monitor sets in bounded batches.

A run keeps operational progress such as its run ID, status, cursor, counts and timestamps. It does not store an unbounded list of translated issue messages in one option.

Continuation requests are designed to be idempotent. A repeated continuation should not intentionally reprocess a completed monitor ID.

This matters because WordPress requests can overlap or be interrupted.

Configure recipients

You can save up to 20 unique recipient addresses.

Enter one address per line.

PRO

  • validates addresses
  • reports invalid lines
  • removes duplicates case-insensitively
  • sends to each recipient separately

Separate messages prevent one recipient from seeing the complete list.

Use role addresses only if somebody is responsible for reading them. An alert sent to an unattended mailbox is not useful monitoring.

What creates a transition email

An email can report:

  • newly opened issues
  • newly resolved issues

An unchanged issue does not create the same transition email on every run.

A completed run with both new and resolved issues combines them into one message per recipient.

A run with no transitions sends no transition message.

What the message contains

The summary can include:

  • site name and site URL
  • run type
  • completion time
  • count of new and resolved issues
  • content title and type
  • concise issue description
  • safe rule or URL context
  • link to Current Problems
  • edit link where available and permitted

Emails use a plain, readable structure with relevant issue details and administration links.

Open-problem reminders

Reminders are separate from transition emails.

They can be set to:

  • off
  • daily
  • weekly

A reminder is evaluated after a completed scheduled run. It does not have its own independent cron event.

If a run produces transitions and a reminder is due, PRO combines them into one message for each recipient.

Reminders share the timing limitations of scheduled checks.

Send a test email

Steps

  1. Open Page Content Guard > Settings.
  2. Find Email notifications.
  3. Choose or enter one valid test address.
  4. Select "Send test email".
  5. Read the result carefully.

Success Means

WordPress accepted the message for sending.

Success Does Not Mean

  • the hosting mail transport completed delivery
  • the receiving server accepted it
  • the message passed spam filtering
  • it reached the inbox

The test sends to one address, not automatically to every saved recipient.

If the test does not arrive

Checklist

  1. Confirm the address is correct.
  2. Check spam, junk and quarantine folders.
  3. Wait long enough for the host's mail queue.
  4. Confirm ordinary WordPress mail works.
  5. Review the latest mail-attempt result in Page Content Guard.
  6. Review Site Health.
  7. Check the hosting provider's mail restrictions.
  8. Configure a reputable SMTP or transactional mail plugin if appropriate for the site.
  9. Send another test.
  10. Ask the mail provider to inspect logs if WordPress reports acceptance but delivery still fails.

Page Content Guard is not an SMTP plugin and does not keep a full delivery log.

If scheduled checks do not run

Checklist

  1. Confirm PRO is active and compatible.
  2. Confirm scheduling is enabled.
  3. Check the next scheduled event.
  4. Review Site Health.
  5. Check whether the site receives normal traffic.
  6. Check DISABLE_WP_CRON.
  7. Check any external cron job.
  8. Look for security rules blocking wp-cron.php.
  9. Run a manual check to separate scheduler trouble from monitor trouble.
  10. Deactivate and reactivate PRO only after recording the current diagnostic information.
Changing the schedule

Changing the frequency should replace the recurring schedule without intentionally creating duplicates.

After a change:

  1. Save the setting.
  2. Confirm the next scheduled event.
  3. Review the last completed run after the new schedule becomes due.
  4. Check for a stale or duplicate event in Site Health if the result looks wrong.
Email privacy

Recipient addresses are stored in the local WordPress database.

Issue context is passed to the site's configured WordPress mail system and sent to the selected recipients.

Do not send notifications to people who do not need the operational content. Messages can include page titles, issue descriptions, relevant fragments or URLs.

FREEPRO

Troubleshooting

Reviewed for FREE 2.3.2 and PRO 1.7.1

Start with what actually happened, not with the component you suspect.

Changing several settings or reinstalling both plugins at once usually destroys the useful evidence. Record the versions and diagnostic result first, then change one thing at a time.

WordPress Site Health Info screen with the Page Content Guard diagnostic section expanded and no private site data visible.
The diagnostic report records versions, scheduler state and recent operational results.
Basic checks

Checklist

  • WordPress is 6.5 or newer.
  • PHP is 7.4 or newer.
  • Page Content Guard FREE is active.
  • PRO, if used, is active and compatible.
  • The monitor is not paused.
  • The selected WordPress content record still exists.
  • The current user has the required administrator capability.
  • A fresh manual check completes.
  • Site Health does not show a Page Content Guard schema or dependency problem.
A monitor did not detect a content change

Possible Cause

The change is outside the monitor's scope.

Check

  • Was the change made to standard post_content?
  • Was it stored in a page-builder field, post meta or an external service?
  • Was the visible output generated by a shortcode or dynamic block?
  • Is the relevant check enabled?
  • Does the rule use the exact stored fragment?
  • Was the monitor paused?
  • Did a check run after the change?

Next Step

Run "Check now".

If the check passes but the public page still looks wrong, the problem may be in rendered output rather than the stored values Page Content Guard checks.

A required fragment looks present but is reported missing

Check

  1. Copy the configured fragment from the monitor.
  2. Open the WordPress code editor or inspect the stored content, not only the rendered page.
  3. Compare spaces, punctuation, HTML entities and shortcode attributes.
  4. Check whether a builder stores the visible text outside post_content.
  5. Shorten an unnecessarily fragile rule without making it meaningless.
  6. Save the monitor.
  7. Run a fresh check.

A browser can display equivalent text even when the stored sequence differs.

A stored-content issue opened after a harmless edit

Applies To

PRO

Explanation

Stored-content integrity is exact.

Block comments, whitespace, markup, imports and serialization can change the stored value even if the public page looks almost the same.

Options

  • review the WordPress revision context
  • restore the previous stored value
  • accept the current value as the new baseline
  • disable exact stored-content integrity if routine edits are expected
  • use required fragments instead when only selected wording matters
A URL problem opened after migration

Explanation

Expected URLs often change after a clone, staging move, domain change, HTTPS change, subdirectory change or permalink update.

Steps

  1. Confirm the destination site and domain are correct.
  2. Check the public URL.
  3. Check required redirects.
  4. Review whether the old monitor belongs on the destination.
  5. Accept the current URL only after verification.
  6. For many correct URL changes, use the PRO bulk acceptance workflow.
  7. Run another check.

Do not accept staging URLs on a production monitor.

A problem remains after the page was fixed

Steps

  1. Save the WordPress content.
  2. Run "Check now".
  3. Read the updated issue, not the old assumption.
  4. Confirm the exact rule.
  5. Clear any failed or interrupted check notice.
  6. Review Site Health if the check does not complete.

Current Problems is not cleared merely because the editor was opened. A successful recheck must confirm the condition.

The monitor is stuck as unchecked

Check

  • Run a single manual check.
  • Confirm the target content is eligible.
  • Check for a database or schema notice.
  • Review PHP and WordPress error logs.
  • Review the Page Content Guard Site Health section.
  • Confirm no security plugin blocks the administration request.
  • Check whether the monitor record is reported malformed.

Do not repeatedly click bulk checks while a single check is failing.

PRO controls are missing

Check

  1. Confirm FREE is active.
  2. Confirm PRO is active.
  3. Confirm FREE 2.3.2 and PRO 1.7.1, or a documented compatible pair.
  4. Reload the administration page.
  5. Read the dependency notice.
  6. Review Site Health.
  7. Check that the PRO directory is page-content-guard-pro and the main plugin file is present.
  8. Reinstall the current PRO ZIP if files are incomplete.

PRO remains inert when the FREE dependency is missing or incompatible.

Scheduled checks are late or absent

Check

  • Is scheduling enabled?
  • Is the next event visible?
  • Has the site received traffic?
  • Is DISABLE_WP_CRON enabled?
  • Is an external cron trigger configured?
  • Does the hosting provider block loopback or cron requests?
  • Is a previous run marked stale or failed?
  • Does a manual check work?

A selected frequency is not an exact-time guarantee.

The email test says success, but the message is missing

Explanation

Success means WordPress accepted the email for sending.

Check

  • spam and quarantine
  • exact recipient spelling
  • hosting mail restrictions
  • domain SPF, DKIM and DMARC setup
  • SMTP plugin configuration
  • mail-provider logs
  • the latest Page Content Guard mail-attempt status

Page Content Guard does not know what happened after WordPress handed the message to the configured mail system.

No email was sent for an unchanged problem

Explanation

This is normal for transition summaries.

PRO sends when an issue opens or resolves. It does not repeat the same transition on every run.

Enable daily or weekly open-problem reminders if repeated messages are required.

History is missing an incident

Check

  • Was compatible PRO active when the incident opened and resolved?
  • Did the relevant check complete?
  • Is a filter hiding the row?
  • Is the date range correct?
  • Has resolved-history retention removed it?
  • Was resolved history cleared manually?
  • Is the history schema healthy?

A problem that appeared and resolved entirely while PRO was inactive cannot be reconstructed.

CSV export has fewer rows than expected

Check

  • Review the active History filters.
  • Review the selected date range.
  • Check whether retention removed older resolved rows.
  • Remember that export includes at most the newest 10,000 matching rows.
  • Confirm the export completed rather than being interrupted.
Bulk Setup stopped before completion

Check

  • Did the source monitor change during the run?
  • Did the administrator session expire?
  • Did a database write fail?
  • Is another bulk run active?
  • Did the selected set exceed 100 items?
  • Does Site Health show stale run state?
  • Are all targets still published and eligible?

Bulk Setup processes batches of 25 and stops rather than applying mixed source policy when the source changes.

Pause or Resume did not affect every selected monitor

Check

  • Confirm no more than 100 monitors were selected.
  • Review the operation result counts.
  • Check for malformed monitor records.
  • Check permissions and nonce expiry.
  • Reload the Monitors screen.
  • Review Site Health if a partial failure is reported.

Configuration and issues are preserved during Pause and Resume.

The plugin shows a schema or migration problem

Steps

  1. Record the exact machine error code.
  2. Confirm the plugin versions.
  3. Confirm the database user can create and alter the required plugin tables.
  4. Back up the database.
  5. Reload the administration page to allow a documented retry.
  6. Check the WordPress and PHP error logs.
  7. Use the appropriate support route and include the diagnostic report if the retry fails.

Do not manually change schema-version options unless support has reviewed the case.

The WordPress site was restored from backup

Check

  • monitor records match the restored posts
  • expected URLs match the restored environment
  • PRO history time order is understandable
  • scheduler state is current
  • recipient addresses are appropriate
  • no staging recipient list was copied to production
  • a manual check completes
  • the next scheduled event is present

A database restore can move Page Content Guard data backwards with the rest of the site.

A cache shows old public content

Explanation

Page Content Guard does not inspect the cached public page.

It can report the current stored WordPress state while a CDN, page cache or reverse proxy still serves older output.

Purge or investigate the cache separately.

Prepare a useful support report

Include

  • WordPress version
  • PHP version
  • Page Content Guard FREE version
  • Page Content Guard PRO version, if active
  • whether Multisite is involved
  • exact steps that reproduce the issue
  • expected result
  • actual result
  • relevant machine error code
  • Site Health diagnostic section
  • whether the problem occurs in a manual single check
  • whether the content uses a page builder or custom fields

Do Not Include

  • passwords
  • API keys
  • full database exports
  • customer personal data
  • private page content unless support specifically asks for a minimal redacted example
  • public exploit details for a suspected vulnerability
Security problems

Do not post suspected vulnerabilities, credentials or private site data in the public WordPress.org forum or the Gumroad Community.

Report suspected vulnerabilities affecting FREE or PRO privately to [email protected]. This address is only for security reports, not general support.

Include the affected plugin version, a concise technical description, reproducible steps and the potential impact. Do not send passwords, credentials, database exports or unnecessary personal information.

FREEPRO

Compatibility and Limitations

Reviewed for FREE 2.3.2 and PRO 1.7.1

This is where I would rather be precise than reassuring: Page Content Guard is deliberately narrow.

It monitors supported WordPress records and stored values. It cannot understand every way a theme, builder or external service assembles the public page, and the limits below matter before you rely on a rule.

Simple diagram contrasting stored WordPress values checked by Page Content Guard with rendered frontend output, page-builder fields and external services.
Page Content Guard checks selected values stored in WordPress, not the rendered public page.
Supported platform

Current minimum requirements:

  • WordPress 6.5
  • PHP 7.4

Current package compatibility metadata:

  • tested up to WordPress 7.0
  • FREE 2.3.2
  • PRO 1.7.1

Compatibility metadata should be updated only after actual testing.

Eligible content

The plugin is intended for:

  • pages
  • posts
  • supported public custom post types

A content type must meet the plugin's eligibility rules and provide the fields required by a selected check.

A monitor belongs to a WordPress content record. External URLs are not eligible targets.

Page builders

Page builders vary widely.

Usually useful:

  • content existence
  • publication status
  • expected URL

Needs verification:

  • blank standard content
  • required fragments
  • forbidden fragments
  • exact stored post_content integrity

Those content checks inspect standard post_content. They do not automatically inspect builder-specific post meta, custom tables or remote layout services.

Before relying on a rule:

  1. Save the page.
  2. Inspect where the relevant content is stored.
  3. Create a test monitor.
  4. Make a controlled test change.
  5. Run a check.
  6. Confirm the result matches the intended protection.
Shortcodes and dynamic blocks

Page Content Guard can detect literal shortcode text stored in post_content.

It does not execute the shortcode.

It also does not render dynamic blocks or query their external data sources.

A required shortcode fragment confirms that the saved shortcode text remains present. It does not confirm that the shortcode output works.

Custom fields and post meta

Version 2.3.2 and PRO 1.7.1 do not provide a general custom-field monitoring system.

Featured-image integrity is a specific supported PRO check. Arbitrary ACF fields, builder settings and plugin-owned metadata are outside the general content rules unless explicitly documented.

WordPress revisions

Revision links can appear when:

  • the monitored post still exists
  • revisions are enabled
  • relevant revisions remain available
  • the current user has permission to edit the content

Revisions are optional context.

A check does not pass or fail based on revision availability. Revision cleanup can remove old comparison context without removing the accepted baseline.

Multisite

Network-wide activation is not supported.

FREE and PRO may be activated individually on an intended site within a Multisite installation.

Test database prefixes, cron and email separately for each site.

Multilingual content

Translated posts may be monitored as separate WordPress content records.

There is no WPML, Polylang or other translation-plugin-specific integration in the current release.

Translation plugins can affect URLs, post relationships and storage. Test each language record rather than assuming one monitor covers every version.

Imports, migrations and cloning

Imports and migrations can change:

  • post IDs
  • domains
  • protocols
  • paths
  • generated permalinks
  • block serialization
  • excerpts
  • attachment IDs
  • cron state
  • recipient settings

Pause monitors before planned work where practical.

After the move:

  • verify the destination
  • review expected URLs
  • check important baselines
  • confirm mail recipients
  • confirm the next scheduled event
  • run manual checks

A monitor cannot follow content to a new post ID by guessing.

Caching and CDNs

Page Content Guard reads WordPress records.

It does not request or inspect:

  • page-cache output
  • CDN output
  • reverse-proxy output
  • search-engine cache
  • browser cache

A current stored value and a cached public page can disagree.

Forms

The plugin does not submit or validate forms.

A required fragment can confirm that saved form markup or a shortcode remains in standard post_content. It cannot confirm that submission, validation, email delivery or external CRM integration works.

Availability and redirects

The expected URL check compares the generated permalink with the accepted URL.

It does not make an HTTP request, follow redirects, inspect status codes or confirm DNS and TLS.

Use a separate uptime or HTTP-monitoring service for those jobs.

Visual appearance

The plugin does not compare screenshots, CSS, layouts, fonts, images or responsive rendering.

Featured-image integrity checks the assigned attachment ID, not the pixels a visitor sees.

Security

Page Content Guard is not a firewall, malware scanner, access-control system or backup product.

It can report supported stored changes after they occur. It does not prevent an authorised or unauthorised edit and cannot restore damaged content.

WordPress Cron

PRO scheduled checks and finite history retention depend on WordPress Cron.

Selected frequency is not an exact-time guarantee.

When WP-Cron is disabled, an external trigger is required.

Email

PRO hands notification content to the site's configured WordPress mail system.

A successful WordPress result is not proof of inbox delivery.

Use appropriate mail infrastructure and monitor it separately where email is operationally important.

Fixed Limitation Statement

Page Content Guard checks content and metadata stored in WordPress. It does not load the public page, execute forms or verify the rendered design.

FREEPRO

Data, Privacy and Uninstall

Reviewed for FREE 2.3.2 and PRO 1.7.1

Your monitors and their operational data stay inside the WordPress site.

Nothing is sent to Harbour Atelier. PRO email uses the mail system already configured for the site, so you remain responsible for who receives those summaries and where exported files are stored.

Page Content Guard FREE Settings showing the data-removal preference that must be enabled before deleting FREE to remove all plugin data.
Complete removal is controlled by the FREE data-removal preference.
What FREE stores

FREE can store:

  • monitor configuration
  • target WordPress content ID
  • retained title, content type and expected URL context
  • enabled checks
  • required content fragments
  • current issue state
  • first-detected and last-checked times
  • run and operational timestamps
  • stored-title integrity fingerprint and baseline time
  • bounded display context for supported integrity information
  • optional WordPress revision IDs
  • schema and migration state
  • diagnostics and temporary bounded run state
  • the explicit uninstall-cleanup preference

The exact internal format may change between compatible releases. Do not build an external integration by reading private database fields when a documented extension hook is available.

What PRO stores

PRO can store:

  • forbidden content fragments
  • exact stored post_content fingerprints
  • excerpt baseline data
  • featured-image attachment IDs
  • baseline timestamps
  • optional WordPress revision IDs
  • incident history
  • scheduler settings
  • recipient addresses
  • reminder settings and anchors
  • resolved-history retention policy
  • scheduler, mail and maintenance diagnostics
  • bounded scheduled-run state
  • bounded Bulk Setup state
  • URL-migration state
  • locks and reconciliation state

Full post_content is not copied into the exact-content integrity baseline.

History and notifications may contain enough field context to identify a change.

Where monitoring runs

Page Content Guard performs its monitoring inside the WordPress installation and stores plugin data in that site's database.

PRO uses the site's WordPress mail and cron configuration for notifications and scheduling. Links opened by an administrator behave like normal external links.

Email notifications

Applies To

PRO

When email is enabled, issue summaries are passed to the site's configured WordPress mail system and sent separately to selected recipients.

Those summaries may contain:

  • site name and URL
  • content title and type
  • issue description
  • safe fragment or URL context
  • links into WordPress administration

Choose recipients who are authorised to receive that operational information.

Page Content Guard does not control processing performed by the hosting mail service, SMTP provider or recipient mail provider.

CSV exports

Applies To

PRO

A History CSV can contain operational data visible in History, machine identifiers and details JSON.

Exports are generated on administrator request and can contain sensitive site context.

Store, share and delete exported files according to the site's own security and retention rules.

The plugin cannot remove copies that were downloaded to another device.

Data retention

Current Problems

Remain with the monitor until the issue resolves, the monitor is removed or plugin data is completely deleted.

Pro History

Resolved incidents are kept forever by default.

An administrator can choose 30, 90, 180 or 365 days for resolved rows.

Open incidents are never deleted automatically.

Finite retention runs through WordPress Cron and deletes no more than 500 eligible rows per UTC day.

Deactivation is not deletion

Free Deactivation

Preserves monitors, current problems, settings and PRO data.

PRO becomes inert because its dependency is inactive.

Pro Deactivation

Stops paid runtime behaviour and scheduled work.

Preserves PRO settings, rules, baselines and history.

Uninstall is also conservative by default

Deleting either plugin does not automatically mean all data disappears.

PRO uninstall preserves paid and shared data.

FREE uninstall checks the explicit cleanup preference.

If cleanup is off, which is the default, Page Content Guard data is preserved.

If cleanup is on, deleting FREE removes Page Content Guard FREE and PRO tables, settings, bounded run state and scheduled events.

It does not delete WordPress posts, post meta owned by other plugins or unrelated site data.

Remove all Page Content Guard data

Warning

This action is destructive. Back up the database first if there is any chance the monitors or history will be needed again.

Steps

  1. Confirm compatible FREE is active.
  2. Open Page Content Guard > Settings.
  3. Find Data removal.
  4. Enable "Delete all Page Content Guard data when the FREE plugin is deleted".
  5. Save the setting.
  6. Export any PRO history that must be retained.
  7. Deactivate PRO.
  8. Delete PRO if it is no longer needed.
  9. Deactivate FREE.
  10. Delete FREE through the WordPress Plugins screen.
  11. Confirm the plugins are removed.
  12. Review Site Health or the database only if there is a specific reason to verify cleanup.

The cleanup preference takes effect when FREE is deleted, not merely deactivated.

Preserve data during a temporary removal

Leave the cleanup preference off.

Take a database backup.

After reinstalling:

  • install compatible FREE first
  • activate it
  • install and activate PRO if used
  • review monitors
  • review History
  • confirm scheduling
  • confirm recipient addresses
  • run a manual check
Privacy-policy wording for a site using the plugin

WordPress includes a privacy-policy content tool. Page Content Guard registers suggested wording describing its local operational data.

The site owner remains responsible for deciding whether that wording applies, adapting it to the site's setup and explaining any email or export handling.

Do not claim that using Page Content Guard makes the site legally compliant.

Data subject requests

The current plugin does not add visitor accounts or store records indexed by a visitor's email address.

Notification recipients are administrator configuration, not a visitor database.

Administrators can edit or remove recipients directly and can remove plugin data through the documented cleanup control.

The site's wider data-protection process still applies to exported CSV files, security-report emails, support discussions and any personal information an administrator chooses to place inside a monitored fragment.

Before contacting support

A useful report starts with three simple checks

  1. Confirm the installed FREE and PRO versions.
  2. Open Tools > Site Health > Info and review the Page Content Guard section.
  3. Describe what actually happened, not only the feature you expected to be responsible.

After the FREE plugin is published, use its WordPress.org forum for FREE support. Use the private Gumroad Community for PRO support. A suspected vulnerability belongs only in the private security email, never in a public support thread.

Do not send passwords, database exports or private content.