The connector for Culpritly: this plugin runs inside your store and reports to your Culpritly account. Culpritly tells WooCommerce store owners and membership site owners what changed, what broke, and what to undo.
This plugin needs a Culpritly account. It is a connector for the hosted Culpritly service, not a stand-alone tool. A Culpritly account starts with a 14 day free trial (no card needed, one store); after the trial the service is a paid subscription. The plugin itself is free, contains no locked or time-limited features, and all of its code is in this package under the GPL. Until you paste a site key and secret from your Culpritly account into the plugin settings, the plugin does not contact any server and does not record anything.
What the connector records once you have connected it:
Events are stored in a small local queue and sent to Culpritly every minute with signed requests. If Culpritly is unreachable, events stay in the queue and are retried with backoff.
Culpritly then watches for problems (store down, PHP fatals, failing payments, orders stopping) and emails you the changes made just before the problem started.
What it does not do: it does not send customer personal data, card data or option values, it does not change, block or slow down your checkout, it does not show ads, it adds no front-end credits or links, and it never installs or updates anything.
In wp-admin, once connected, the plugin shows the Culpritly status for site administrators: a “Culpritly” dashboard widget (you can hide it in Screen Options) and a panel at the top of its settings page (monitoring state, open incidents with the likely culprit and estimated lost revenue, a link to the full Culpritly dashboard, and when events were last sent), plus a small “Culpritly” item in the admin bar with a coloured dot (green: monitoring, red: open incident, grey: unknown). The status is fetched from Culpritly with a signed request and cached for 5 minutes; the admin bar only reads the cache and never waits on Culpritly. Neither is shown before you connect.
The plugin works without WooCommerce too: change tracking and fatal error capture still run, order signals are simply not recorded.
This plugin connects to the Culpritly service (https://35-253-165-3.sslip.io, the address of the service while its own domain is being set up). Culpritly is operated by Faisal Alvi, the author of this plugin. The service is what turns the data into incident analysis, alerts and a dashboard; the plugin does nothing useful without it.
When the plugin contacts the service. Only after a site owner (an administrator) pastes the site key and secret of a Culpritly store into Culpritly > Settings and saves. That is the opt-in. Before that, nothing is recorded and no request is made. From then on:
/api/v1/events. When nothing happened for 10 minutes an empty “heartbeat” batch is sent, so Culpritly can tell a quiet store from a silent connector./api/v1/status to show your store status.What is sent. Every batch carries your site’s home URL, WordPress, WooCommerce, PHP and plugin versions, currency and timezone. The events are:
What is never sent: customer names, email addresses, postal addresses, phone numbers, IP addresses, order line items or products, payment card data, option values (including API keys), cookies. Error messages and order notes are free text written by other plugins; the plugin strips tags and email addresses and truncates them, but it cannot guarantee that such text never contains something incidental.
Culpritly stores the events to analyse incidents, keeps raw events for 90 days, and may send error messages and the public code or changelog of the plugins involved to an AI provider to explain an incident. The full list of processors is at the subprocessors page linked below.
Payment scripts (Stripe, PayPal, Braintree, Square). The plugin does not contact these companies and sends them nothing. On payment pages it only watches, inside the shopper’s browser, whether the payment scripts your own store already loads (for example Stripe.js or the PayPal SDK) loaded or failed. When one fails, the script’s host name (for example js.stripe.com) and the error type are sent to your own site and then to the Culpritly service above, and nowhere else. Card details and customer data are never read or sent. The host names in the plugin code are only a list used to recognise such scripts.
The service address is set in one place (CULPRITLY_CONNECTOR_DEFAULT_API_URL in the main plugin file, changeable with the culpritly_connector_default_api_url filter or the optional “API base URL” setting).