# OrderWorth: calculation, local data and optional sharing

This reference preserves the full technical disclosures from the qualified 1.10.18 readme. It supplements the shorter WordPress.org listing. It describes local records, optional external sharing and removal behavior; it is not a new data collection flow.

## Calculation

Order total - sales tax - refunds net of refunded tax
- original product costs + confirmed recovered product costs
- payment expense - shipping expense - packaging expense.

Discounts are already reflected in order revenue, never subtracted again.
Native order-item COGS already includes quantity.
Payment assumptions apply to original gross including tax/shipping, and are
retained after refunds unless overridden with the final actual expense.
Default expenses are assumptions, not automatically retrieved actual fees.
A later refund changes the original order's creation-date reporting period.

Saved add-on shipping, fulfilment and returns records remain intact when Pro is
inactive or incompatible. Affected orders are excluded from profit totals until
the compatible processing is active again; run a fresh report after reactivation.
Orders without those records retain all Free calculations.

## Privacy and removal

Reports run locally and go to authorized admin browsers. No optional sharing starts until a site administrator explicitly selects and saves a choice.
No customer names, addresses or email fields are requested for reports.
Stores owwc_settings, owwc_pro_rules and order meta _owwc_assumptions / _owwc_overrides.
Import previews/undo expire after 24 hours (cache eviction can shorten this).
Product import stamps use _owwc_cost_import; the last import reference is user meta
owwc_last_import. CSV imports change current product costs, not existing order costs.
Review metadata includes WordPress user ID and time.
On a single-site installation, guide progress uses owwc_guide_v1 user meta.
owwc_guide_report stores the latest completed report date/ranges/counts/currency;
owwc_guide_review stores the latest review ID and change signature. Optional local
workflow counts, recording consent and suggestion preferences use _owwc_experience_v1.
On multisite, these four records use separate keys for each site and WordPress account.
Previously shared network-wide records remain stored but are not read or copied
into the site-specific state. Count recording starts off on each site until you
opt in there; previous network-wide consent is not transferred. Single-site keys
and existing single-site choices remain unchanged. These records are preserved on uninstall.
Owner-bound scan-ID transients and private owwc_manual_ financial/selection chunks
expire after one hour. Large CSV sources, duplicate checks and child preview batches
use private owwc_import_ transients with the original 24-hour preview/undo expiry.
Cache eviction can shorten availability. Uploaded CSVs use private PHP temporary
storage and are never placed in public uploads. Optional local interface activity
and dismissal preferences are stored per site and WordPress account; no telemetry is sent.
Only one contextual suggestion card is shown at a time. Dynamic suggestions after
reports, imports and fee reviews appear at most once per workflow type in a
browser-tab session. Separate site/account/workflow flags in sessionStorage survive
reloads and navigation in that tab; if sessionStorage is unavailable these dynamic
suggestions stay hidden. Completed-report and import counts used to recognise the
current task exist only in the current page's memory and are not transmitted.
The expense-settings preview remains available until it is dismissed or Pro previews
are hidden. Continue with Free removes that card for the current page; Hide this
suggestion saves a persistent preference for that workflow type. Optional local
workflow counting remains a separate opt-in and sends no telemetry.

Pro preview visibility and an explicitly remembered workflow use the site/account-scoped
_owwc_pro_journey_v1 user-meta record. The choice stores the workflow name, creation
and expiry times, a site-binding hash and a revision used to reject stale forms.
Opening a preview stores no task. A chosen task is no longer usable after seven
days; scheduled cleanup removes it when WordPress cron runs, which can be later.
Forget this task removes the choice early. WordPress privacy export includes this
state; privacy erasure clears the choice and visibility preference while retaining
a minimal revision tombstone to reject stale forms. Uninstall removes this journey
record and its expiry hook on each site (including all sites on multisite), while the financial, guide and optional
workflow-count records described above retain their existing preservation rules.
The external pricing link contains no chosen workflow or store identifiers and
uses a no-referrer policy. The website processes ordinary request data as described
at https://orderworth.com/privacy.html .

Deactivation and uninstall preserve settings and order reviews.
Never delete native WooCommerce orders or costs to remove this plugin.

Review reminders use local, site/account-scoped _owwc_review_request_v1 user meta: the first completed nonempty report time, up to three report dates, and your reminder choice. A prompt may appear only in OrderWorth after 30 days and reports on three different days, once WordPress confirms the public listing through its regular update metadata. There is no extra network request or positive-rating filter. Choose Leave an honest review, Remind me in 30 days, or Don’t ask again; preferences remain under Help & preferences. Choosing review stops prompts without checking whether a review was posted. Choosing review or never stops further reminder-date collection. WordPress privacy export and erasure cover this record; uninstall removes it from each site, including all sites on multisite. Optional workflow-count consent remains separate.

## Optional external service

OrderWorth Free works without an account, domain sharing or a newsletter signup.
After all Quickstart lessons are marked read, a final optional step offers separate
domain sharing and email signup. Both choices start unchecked and the email field
starts empty. Skip and finish sends nothing; Save choices and finish sends only
the choices you select. Both actions open Profit overview. Optional service errors
leave your lesson progress complete and show a status with a link to Privacy choices.
Reading the lessons does not confirm that costs are saved or reports are accurate.

You can change these choices later in Help & preferences > Privacy choices.
There, Continue without sharing sends nothing. Replaying Quickstart preserves
saved choices and does not repeat an already handled invitation.

Only selecting and saving a choice sends an HTTPS request to
https://orderworth.com/newsletter-api/v1/plugin-welcome/:
* Domain sharing: only the installed site's public domain (no URL path/query), to know
  which sites have chosen to report using OrderWorth.
* Email signup: the address you enter and this installation's Free/Pro edition,
  for OrderWorth tips, release news and offers. Email-only signup does
  not send the site domain. Confirm your email to join; existing subscriptions
  and preferences are unchanged. Any newsletter includes unsubscribe/preferences.
* Connection controls: a random ID and protected credential, consent version,
  request time, consent and latest-report timestamps. The server also receives
  normal network metadata such as the requesting IP address. No orders,
  customers, financial figures, WP/PHP versions or plugin lists are sent.

Selected details refresh at most weekly; email edition changes may refresh after
an hour. A changed site address pauses sharing. An unconfirmed request expires
locally after 24 hours and needs cancellation and fresh choices before retrying.
Stop controls remove the selected details locally before requesting remote removal.
Failures expose a Retry control. A pending enrollment is cancelled in full.
Stopping email sharing cancels this connection's pending signup/edition link;
a confirmed newsletter subscription is separate: use Unsubscribe in an email.

Deactivation clears scheduled refreshes and retains choices for reactivation.
Uninstall sends no request and clears local email/domain/credentials under the
connection lock, retaining a nonpersonal revision to reject old consent forms.
If another request holds the lock, local choices may remain; stop sharing and retry
before deleting. Remote inactive records expire under the service retention policy.
Stop sharing before uninstalling to request remote deletion. Confirmed newsletters
are not cancelled by deactivation, deletion, or cancelling a Pro licence.

Email-matched local choices participate in WordPress personal data export/erasure.
Credentials and connection IDs are never included in the export. Local workflow
counts, financial reports and the Pro licence remain independent of these choices.

Service privacy and retention: https://orderworth.com/privacy.html#plugin-choices
Service terms: https://orderworth.com/terms.html

## Resource safeguards

= Does Free stop at 5,000 orders or 100 product-cost rows? =
No. Larger manual reports select and verify IDs in batches, calculate 50 orders
per request and retain frozen results on the server. Completed results show 25
orders per page, grouped by review priority and order ID. Stop pauses the browser;
Resume manual scan continues within the original one-hour window. Keep the page
open while working. Incomplete, expired or failed scans do not show complete totals.
After editing an order from a large report, run a fresh scan for updated totals.

Manual CSV imports have no paid row boundary. Review every preview page and confirm
before applying; larger files continue in bounded preview and write requests. CSVs
can be up to 8 MiB, or the lower server upload limit. Large-file records also have a
16 KiB safety budget. Nothing applies until the complete preview validates. Ordinary
settings, costs changed by another editor, and historical order costs stay protected.

Server limits remain: one-hour report expiry, 128 MiB of large-report row storage,
8 MiB of report metadata/aggregates and 1 MiB per retained report batch. Complex
orders or limited hosting can reach these budgets sooner. Use a smaller date range
or CSV when necessary; these are resource guards, not a paid upgrade requirement
or a promise of unlimited throughput.
