=== WakeMyCart ===
Tags: woocommerce, abandoned cart, cart recovery, email
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.1
Requires Plugins: woocommerce
Stable tag: 1.1.8
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Recover opted-in WooCommerce checkouts with local email reminders, cart restore links and privacy controls. No account required for Free.

== Description ==
WakeMyCart captures opted-in checkouts, schedules reminders and restores saved carts in WordPress. Recovery records and reports stay on your store. Free includes:

* Editable email sequences and three included layouts with your logo and accent color.
* No monthly recovery-contact cap and no required WakeMyCart account.
* Guided sender setup, email previews, a test-inbox step and separate capture/sending controls.
* Shopper withdrawal, unsubscribe protection, privacy export/erasure and recovery health checks.

Send through your existing WordPress mail/SMTP setup or your own Resend account. Your provider's usual limits and charges apply. New installations start with a configurable safeguard of three reminders per contact per UTC month. Raising it does not expand permission already given by a shopper. Updates preserve saved settings and message copy and do not turn sending on. All three included Free layouts are available on every installation.

The separate Pro add-on adds advanced designs, conditional flows, experiments, cost-aware offers and detailed reports. Basic sequence and frequency controls remain in Free. Keep Free active: it owns the shared recovery engine and data. Private Pro downloads and updates require eligible account access; installed local features do not expire with a subscription; see current availability at https://wakemycart.com.

== Installation ==
1. Back up your store and test on staging. Activate WooCommerce, then upload and activate the Free ZIP under Plugins.
2. Open WooCommerce > WakeMyCart > Set up recovery. Choose your sender, review your sequence and send a test to your WordPress account email. Confirm that it reached your inbox.
3. Adapt your store privacy notice and review shopper permission. Capture and sending have separate controls; enable each deliberately.
4. Test an opted-in checkout, recovery link and unsubscribe before sending to shoppers. Review Recovery health and configure server-triggered WordPress cron if store traffic is too low for reliable scheduling.
5. To use Pro, keep Free active, install and activate the matching separate Pro add-on. Connect an eligible account only for private downloads, updates or optional account services. Update Free before the matching Pro release; do not uninstall to update.

If an earlier manually installed copy uses a recoverkit or recoverkit-pro folder, follow the migration instructions supplied with the updated owner packages. Do not delete or uninstall the original copy to update: explicit uninstall deletion may erase shared recovery data. The normal ZIP is for the WakeMyCart folder identity.

Existing cloud installations must finish the reviewed local import and sender handover before enabling emails. Unknown prior sending outcomes remain held for review; the old sender is not restarted automatically.

== External services ==

= Email delivery =
WordPress mail/SMTP uses your store's existing mail configuration. When you choose Resend and save its API key, WakeMyCart contacts https://api.resend.com to check the account's sending domains. It repeats that check periodically, normally no more than once every six hours, even while recovery sending is paused. These authenticated checks use your API key and retrieve domain-verification status; they do not send shopper records. Test and recovery email requests send the sender/recipient addresses and message contents to Resend. Optional signed delivery feedback is received at your store's webhook endpoint.

Saving a WordPress mail/SMTP sender stops routine Resend checks and pauses recovery. Already-prepared messages retain their original provider configuration. To end Resend access, keep recovery paused, disable any optional Pro cart emails, review pending messages and revoke the key in Resend. Requests already in flight cannot be recalled. Provider records have their own retention. Review provider tracking settings: WakeMyCart does not add an open-tracking pixel, recovery links record observed clicks, and remote email images contact their image host.

Resend privacy: https://resend.com/legal/privacy-policy
Resend terms: https://resend.com/legal/terms-of-service

= Optional WakeMyCart account =
Local Free recovery works without registering, pairing or contacting a WakeMyCart account service. If you explicitly connect an account for private updates, downloads or account services, the service receives merchant account/store-registration information, installation/protocol identifiers and coarse recovery-health codes. Normal local-engine account requests do not send shopper names, email addresses, carts, products, orders, messages, recovery tokens or shopper hashes.

Disconnect the account in Setup & settings to stop account-service requests. Local Free recovery remains available after you explicitly re-enable sending. Free leaves update discovery and delivery to WordPress; manual Free ZIP updates need no account. Only the separately installed Pro add-on requests its own authenticated WakeMyCart updates.

Older cloud records require reviewed cleanup. Old recovery links and delivery feedback may use a temporary compatibility relay for up to 365 days. This migration is an exception to normal local-only recovery processing.

Service privacy: https://wakemycart.com/privacy
Service terms: https://wakemycart.com/terms
Merchant guide: https://wakemycart.com/guide

== Data and removal ==
When you deliberately continue to account upgrade, the workspace can remember the selected task and its date in browser storage, separately for this site and signed-in administrator. It is used for up to 14 days; expired preferences are removed when this workspace next reads them. Use Forget this task to remove it. No shopper data, campaign content or credentials are stored in this preference; it is not transmitted as analytics. Clearing browser storage removes it.

Cart snapshots normally remain for 30 days after activity; recovery detail for 90 days. Terminal prepared email bodies are cleared after 48 hours. Unsubscribe links can remain valid for 365 days; anonymous local summaries for 13 months. Minimal suppression keys prevent renewed contact. Cleanup is bounded and needs a working scheduler. Provider records, backups and canonical WooCommerce orders have separate retention.

If Pro was used for one-time cart emails, shared privacy tools cover those requests after Pro removal. Request details and links expire after seven days; de-identified counts remain for 30 days and hashed abuse limits for two days, with scheduled cleanup.

WordPress Tools > Export/Erase Personal Data covers local recovery records in both editions. Erasure prevents stale callbacks recreating a shopper. Historical totals stop changing once their underlying recovery order copies are deleted. Deactivation preserves data; explicit uninstall deletion is off by default and can be enabled in advanced settings. Removing Pro does not erase the shared database. No plugin alone establishes GDPR compliance.

== Frequently Asked Questions ==

= Does Free stop after 100 contacts? =
No. Updated Free versions work locally without a monthly contact cap or account. Old Free releases keep their historical behavior until updated. The reminder-frequency safeguard and each shopper's recorded permission still apply.

= Does a subscription expiry disable installed Pro features? =
No. The separately installed compatible Pro add-on supplies its local features without a current subscription or a monthly contact quota. Eligible account access is required for private downloads, updates and account services. Disconnecting pauses recovery for an explicit setup review; it does not remove installed capabilities.

= What happens if I deactivate or remove Pro? =
Free recovery remains available. Saved Pro designs, flows and history remain stored, but their implementation needs the compatible add-on to be active. Cost-protected coupons require its validator when redeemed. Queued Pro messages and cart-link requests can stop; restoring the add-on does not automatically replay skipped messages. Existing valid links retain their expiry and privacy checks. Review the queue and sending controls before changing installations.

== Translations ==
The interface and standard recovery labels use WordPress translations. Available language packs translate those labels; a language pack is not an automatic translation service. Your saved email subjects, messages, store name, product names and custom design text are not rewritten. Review the email preview and a test email in the intended language before sending. Translation templates are included in languages/.

== Source code and bundled libraries ==
Readable workspace source, the exact dependency lockfile and build tools are included in source/. See source/README.md for rebuilding the browser assets. THIRD-PARTY-NOTICES.txt contains bundled-library copyrights and licences. WordPress provides React and ReactDOM; they are not embedded in the workspace bundle.

== Screenshots ==
1. Free recovery overview in WordPress, showing a sample store.
2. Edit your basic email sequence and reminder-frequency safeguard.
3. Review local recovery health before enabling emails.
4. Configure the sender and capture controls in Free.

== Changelog ==

= 1.1.8 =
* Make interface and shopper-facing recovery messages available to WordPress translations.
* Keep merchant-written email subjects and messages unchanged when translating standard labels.


= 1.1.7 =
* Edit sender details and reminder copy directly in the guided setup, with shared drafts.
* Separate actionable recovery problems, waiting observations and manual checks.
* Test real restore and unsubscribe links for your own captured checkout while sending stays paused.


= 1.1.6 =
* Give new stores one guided setup path, with advanced tools and empty activity kept secondary.
* Keep setup review and unsaved drafts available when editing the sender or email sequence.
* Lead Pro discovery with cart saving before checkout and explain discount safeguards in plain language.

= 1.1.5 =
* Separate paid handlers and design processing from the Free distribution; all included Free layouts remain available.
* Keep installed Pro features independent of subscription renewal; retain authenticated private updates.
* Use full WakeMyCart prefixes for new storage and scheduled work while reading existing records safely.
* Enqueue admin styles and strengthen legacy settings validation, permissions and shopper-session restore protection.


= 1.1.4 =
* Explore Pro through local visual examples for cart saving, offer safeguards, follow-ups, designs and reports.
* Keep feature discovery available after connecting an account; use current annual-plan wording and resume the selected task after compatible Pro activation.
* Preserve Free recovery, drafts, permission choices, legacy migration and signed private Pro updates.


= 1.1.3 =
* Guard legacy queue quarantine when the retired table is absent. Preserve existing queued records, migration guards and signed Pro updates.

= 1.1.1 =
* Use the wakemycart and wakemycart-pro plugin identities with guarded migration from earlier folders.
* Strengthen request validation, nonce checks, SQL identifier preparation and output handling.
* Preserve existing settings, consent records, queues and recovery data when upgrading.
* Retain clearer first-campaign guidance, recovery actions and enlarged-text navigation.
* Preserve the shopper-session limits on permission withdrawal and stale callback protection.

Earlier release notes are preserved in the bundled changelog.txt.
