=== SubmitSignal ===
Contributors: jarvismaximum
Tags: wpforms, monitoring, contact forms, reliability
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.3.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Connect ordinary WPForms Lite contact forms to SubmitSignal reliability checks.

== Description ==

SubmitSignal connects an administrator-authorized WordPress website to the hosted SubmitSignal monitoring service. It reports metadata about successful WPForms processing and WordPress mail-transport outcomes. The service can submit visibly labeled synthetic contact inquiries to forms the account owner explicitly selects.

This is the official SubmitSignal WordPress connector. SubmitSignal, this plugin and the hosted monitoring service are owned and operated by Axtrel AI LLC. Visit the [official service website](https://getsubmitsignal.com) or [setup guide](https://getsubmitsignal.com/start). This connector uses the canonical service API at https://getsubmitsignal.com. Version 0.3.0 adds administrator-only setup, explicit manual checks, evidence, submission-review controls and billing handoff inside Settings > SubmitSignal.

Supported launch coverage is ordinary WPForms Lite contact forms. WPForms Pro is not included in supported launch coverage until acceptance testing with a licensed Pro installation is complete.

The free plugin requires a SubmitSignal service account. The free service tier includes manual diagnostics for one website and one monitor, with up to three checks per day. Scheduled daily monitoring and automated email failure alerts require an active Solo or Agency subscription. Current availability and subscription pricing are shown on the service website.

Paid launch enrollment is limited to US businesses with US billing. Solo monitoring is $19/month plus tax; Agency monitoring is $99/month plus tax. Start with a [free form review](https://getsubmitsignal.com/compatibility). This questionnaire evaluates your answers; it does not visit or submit your form. An actual test requires the website owner's authorization.

Browser checks require the service's browser runner to be configured, and scheduled monitoring and email alerts also depend on the hosted scheduler and email service. The dashboard shows current availability. Installing this plugin alone does not start synthetic submissions or promise active scheduled checks.

Supported first-release forms contain ordinary name, email, text and paragraph fields, with optional HTML, hidden fields and dividers. Payment, registration, uploads, signatures, custom choice fields and multi-step forms are excluded. CAPTCHA, external assets, custom validation, redirects and custom confirmations can cause an inconclusive result. Checks do not bypass CAPTCHA or other anti-spam protections.

Synthetic inquiries use the label "SubmitSignal automated test" and the reserved example.com email domain. Existing autoresponders and CRM integrations may still run. Owners must use a suitable ordinary contact form and exclude labeled tests from reporting and downstream sequences. This plugin does not automatically suppress or change existing integrations.

Mail handoff means WordPress's wp_mail_succeeded hook reported success. This is not proof that the intended recipient's inbox received the email. Custom mail providers which bypass WordPress hooks remain unverified. WPForms can send notifications asynchronously, so mail outcomes can arrive later than form acceptance.

Optional test inbox receipts require connector 0.2.0 or later, a configured receiving service, the WordPress administrator's separate test-copy consent, and consent on the hosted monitor. A short-lived signed test authorization and one-use server claim permit a BCC only when every entered and processed field matches fixed synthetic test values. The complete synthetic notification, including template content and sender/recipient headers, is received by SubmitSignal's test destination at Resend. Ordinary visitor inquiries are not copied. Custom hidden values, attachments, transformed field values and asynchronous contexts without the current ticket remain unverified. Leave copies disabled if notification templates contain private static information.

Test inbox receipt proves arrival at this one receiving provider only. It does not prove delivery to your own inbox, spam placement, another provider, or CRM. Missing receipts are not automatically failures. The original notification's recipients and body are not changed; an authorized test adds one BCC.

== External service and privacy ==

No external data is transferred until an administrator explicitly accepts the disclosure and connects a service account in Settings > SubmitSignal.

Service: https://getsubmitsignal.com
Privacy: https://getsubmitsignal.com/privacy
Terms: https://getsubmitsignal.com/terms

After the administrator accepts connection consent, the plugin sends the website URL/name, compatible form IDs/names, a temporary public verification token, a one-way verifier challenge and its administrator return address. The service verifies website ownership through a short-lived public REST endpoint. Native verification also binds the challenge to the exact return address without exposing the private verifier or administrator state. The pending approval is bound to the initiating WordPress administrator session and expires after 15 minutes. Local cleanup depends on WordPress cron or the next settings visit.

The administrator signs in to SubmitSignal, approves this website and returns to WordPress. Private metadata and management tokens are stored only in non-autoloaded server options; they never appear in HTML, JavaScript or URLs. Existing older connections need a separate new approval to enable WordPress controls. An uncertain response retains the original private request for an explicit retry.

Native management requests are sent only after an administrator action protected by a WordPress nonce. Loading settings makes no service request. Status is a saved snapshot until explicitly refreshed; an accepted management action may perform one bounded status refresh. New native monitors start paused. Creating a monitor, running one labeled check, acknowledging an uncertain prior attempt, resuming daily monitoring and starting paid checkout each require explicit choices. There is no anonymous WordPress telemetry or automatic polling.

While connected, the plugin sends compatible form inventories, heartbeat timestamps, random event IDs, form IDs, form-processing outcomes, mail-transport outcomes and synthetic run references. This default metadata stream excludes entered field values, visitor names, email addresses, recipients, message content, visitor IP addresses and cookies. Separately enabled synthetic notification copies are processed by Resend as described above. The service records only the receiving event ID, test/run identifiers, unique test destination and receipt timestamps; it does not fetch the received message body. The hosted browser checks visit publicly accessible form pages; the hosted service's privacy policy separately describes that processing.

Each synchronization deletes queued metadata older than seven days. WP-Cron runs on site traffic, so sites without traffic may retain older records until the next synchronization, disconnect or uninstall. WP-Cron does not guarantee five-minute execution. A best-effort immediate delivery is retried safely with the same event identifier until the service acknowledges it or it is removed during synchronization. Mail messages receive an opaque X-SubmitSignal-Event header used only to correlate transport status; related metadata expires after seven days.

The native disconnect action first pauses this website’s monitors and revokes its management grant, then removes local credentials and queued metadata. It does not cancel billing or delete hosted history. Legacy local disconnect only stops metadata transfer and deletes the local connection token and queued events. Temporary mail-correlation records stored in a persistent object cache may remain until they expire, within seven days. Delete the website separately in the hosted dashboard to revoke the server token and remove hosted records. Uninstall also removes local plugin tables/options; the same cache-expiry limit applies to temporary correlation records. The plugin never deletes WPForms entries or modifies existing lead integrations.

== Installation ==

1. Download the current [official connector ZIP](https://getsubmitsignal.com/downloads/submitsignal.zip) and use WordPress > Plugins > Add New Plugin > Upload Plugin. The [WordPress.org listing](https://wordpress.org/plugins/submitsignal/) also offers the latest directory-published release; confirm its version before installing. This readme does not establish that 0.3.0 has been published in the directory.
2. Activate SubmitSignal. Install and activate WPForms Lite and create an ordinary contact form if needed. WPForms Pro is not yet part of supported launch coverage.
3. Open Settings > SubmitSignal, or choose Settings beside SubmitSignal on the Plugins page. Read and accept the connection disclosure, then choose Connect SubmitSignal. Sign in to the service and approve this website; you return to the same WordPress administrator session without copying a code. A separate legacy code option remains available for hosted-dashboard-only control.
4. Choose Refresh status. Select a compatible form, enter its public HTTPS page URL on this website and explicitly authorize labeled tests. The new monitor starts paused; creation does not submit the form.
5. Choose Run first check and explicitly authorize one synthetic inquiry. Review browser, WordPress acceptance and mail-handoff evidence. Inspect your real inbox and existing CRM separately. If an attempt may already have submitted, review its downstream effects before acknowledging the hold; acknowledgment does not rerun it.
6. Free manual diagnostics cover one website, one monitor and up to three checks per day. For daily monitoring, choose Solo ($19/month plus tax) or Agency ($99/month plus tax), confirm US business/billing and supported use, accept the current commercial terms, and continue to Stripe. Payment details never enter WordPress. Refresh verified service status after returning; the return alone is not proof of payment. Enable a daily schedule only after a useful first check and explicit schedule permission.
7. Use Pause or Resume for daily monitoring, and Manage billing when available. Billing and hosted history remain separate from disconnecting WordPress controls. The [setup guide](https://getsubmitsignal.com/start) and [hosted dashboard](https://getsubmitsignal.com/dashboard?setup=wordpress) remain available.

WordPress must be reachable over HTTPS and expose its public REST API. Install per website on multisite; network-wide configuration is not provided.

== Frequently Asked Questions ==

= Which WPForms edition is supported? =
Launch coverage is WPForms Lite. Pro support is pending acceptance testing with a licensed installation.

= Does it prove delivery to my inbox? =
Your own inbox and CRM remain unverified. An optional synthetic copy can verify arrival at one SubmitSignal-owned Resend destination, separately from form acceptance and mail handoff. It is not proof of delivery to your own inbox or another provider.

= Will it capture my leads? =
Ordinary visitor values are never copied by this feature. Default monitoring sends metadata only. With separate administrator and monitor consent, a verified synthetic test notification can be copied to Resend, including its template content and sender/recipient headers.

= Why do I see an inconclusive result? =
The form may use CAPTCHA, a custom field, a third-party script, custom confirmation or a validation rule unsuitable for labeled test values. An inconclusive result is not proof that real visitor submissions are failing.

= Where can I install the official plugin? =
Install SubmitSignal from the [WordPress.org Plugin Directory](https://wordpress.org/plugins/submitsignal/). In WordPress, go to Plugins > Add New Plugin, search for SubmitSignal, then install and activate it. You can also download the ZIP from the directory and use Upload Plugin. Follow the [setup guide](https://getsubmitsignal.com/start) to connect your free account and authorize your first manual check.

== Changelog ==

= 0.3.0 =
* Add session-bound sign-in approval and native WordPress administration without copying pairing codes.
* Keep management credentials server-side and require a separate grant for existing metadata-only connections.
* Add paused monitor creation, explicit manual checks, evidence, hold acknowledgment, pause/resume and bounded status refresh.
* Add explicit commercial consent and a validated Stripe checkout/billing handoff; no card details enter WordPress.
* Explain missing-form reasons and add an explicit inventory-only refresh.
* Use the canonical service API at getsubmitsignal.com; preserve synthetic-copy consent and ordinary visitor privacy.

= 0.2.2 =
* Add free dashboard and setup guide links before connection, with account sign-in and private pairing-code instructions.
* Add a Settings link on the Plugins page for administrators.
* Clarify directory installation, free manual checks, paid pricing and US launch enrollment in the readme.
* Improve the setup handoff without changing connection consent, monitoring, test submissions or test-copy behavior.

= 0.2.1 =
* Identify the official plugin and service owner as Axtrel AI LLC, with the plugin website at getsubmitsignal.com.
* Use the official domain for public privacy and terms links.
* Keep the connector API endpoint and monitoring and test-receipt behavior unchanged from 0.2.0.

= 0.2.0 =
* Add separately authorized synthetic-only test inbox copies, with signed expiring tickets and one-use server claims.
* Keep ordinary inquiries, mismatched values, attachments and unsigned/replayed requests out of test copies.
* Separate test-destination receipt from customer-inbox and CRM evidence.

= 0.1.1 =
* Use prepared table identifiers; WordPress 6.2 or newer is required.
* Reject malformed synthetic-run identifiers without changing them into valid IDs.
* Tested with WordPress 7.1.3; clarify free manual checks, paid monitoring and cache expiry after disconnect.
* Clarify WPForms Lite-only launch coverage; licensed Pro acceptance testing remains pending.

= 0.1.0 =
* Initial administrator-authorized WPForms metadata connector.
* Durable event retries and periodic form inventory heartbeat.
* Separate form acceptance and mail-transport outcomes, including asynchronous mail correlation.
