Well Done Suite is a hosted console a business runs its day from: enquiries, quotes, invoices, support requests, bookings and the website. This plugin connects a WordPress site to it, so the site and its WooCommerce shop are managed in the same place as the rest of the work.
[welldosu_form slug="…"] shortcode.The connector answers a fixed set of REST endpoints and nothing else. It never:
Every change is checked against the WordPress permissions of the administrator who approved the connection. The connector does not log in as that administrator or anyone else. New content is attributed to them; existing content keeps its author.
Nothing is sent anywhere until an administrator clicks Connect to Well Done Suite.
This plugin connects to Well Done Suite, a hosted service operated by Well Done Suite Ltd. The service is required: connecting the site to it is the plugin’s only purpose.
Pairing. When an administrator clicks Connect, the browser opens https://app.welldonesuite.com/wp-connect with the site address, a WordPress administrator return address and a random, single-use code that expires after five minutes. The administrator signs in to Well Done Suite and approves the connection. https://api.welldonesuite.com then sends a tenant identifier and a site-specific shared secret to the site’s POST /wp-json/wds/v1/pair endpoint. WordPress accepts them only when the code is valid and unused and the administrator who started pairing still has the manage_options capability.
Signed requests. After pairing, the service sends HTTPS requests to the connector’s endpoints. Each carries a current timestamp and an HMAC-SHA256 signature made with the shared secret, and every write is locked against replay. Depending on the console screen in use, the service receives:
The service can also create and update content, move content to the trash, create draft products, update product details, upload an image or PDF to the media library, and change an order’s status, add an order note or record its tracking. A product image given as a web address outside the site is downloaded by WordPress into the media library, using WordPress’s own safe download and image checks, and reused afterwards. An optional idempotency key lets the service safely retry a successful write for up to 24 hours.
Disconnecting. When the administrator clicks Disconnect, the plugin sends the tenant identifier and a signed revocation request to https://api.welldonesuite.com, then deletes the local connection credentials.
Forms. Only pages that contain the [welldosu_form slug="…"] shortcode are affected:
https://api.welldonesuite.com/m/{tenant identifier}/{form name}/status whether the form is switched on. Only the tenant identifier and the form name are sent. The answer is cached for five minutes.https://api.welldonesuite.com/m/{tenant identifier}/{form name}, together with the address of the page the form is on so the site owner can see where a submission came from. Like any web request, this sends the visitor’s IP address and browser details to the service.Customer portal. Off by default. Only when an administrator switches it on under Settings Well Done Suite and the business switches it on in the console:
https://api.welldonesuite.com/v1/p/{tenant identifier}/connector-config for the portal design and whether the portal is switched on. This signed request sends the My Account page address, the plugin version and whether WooCommerce and the portal are switched on here. The answer is cached for five minutes.POST /wp-json/welldosu/v1/portal/handoff for a token signed with the shared secret. It contains the tenant identifier, the customer’s WordPress user ID, email address and display name, and expires after two minutes; the service accepts it once. The browser exchanges it at https://api.welldonesuite.com/v1/p/{tenant identifier}/auth/wp-handoff for a portal session and then loads that customer’s own records — shop orders (read from this site through the signed orders endpoint, narrowed to that customer), quotes, invoices, support requests and bookings — from https://api.welldonesuite.com/v1/p/…. Like any web request this sends the customer’s IP address and browser details.POST /wp-json/welldosu/v1/portal/login (WordPress’s wp_signon()), and, when WooCommerce allows registration on My Account, a registration form that posts to POST /wp-json/welldosu/v1/portal/register (WooCommerce’s wc_create_new_customer()). Neither sends anything to Well Done Suite; passwords never leave WordPress.The plugin loads no remote scripts or stylesheets into WordPress. Its only front-end files are its own assets/css/mechanism.css and assets/js/mechanism-frame.js, which fits the form frame to the height the form reports, and — only on My Account with the customer portal switched on — assets/portal/portal.js and assets/portal/portal.css.
The service never receives WordPress passwords or password hashes, other users’ details, payment card or bank-account data, private keys, gateway credentials or WordPress options other than those listed above.
assets/portal/portal.js and `assets/portal/portal.css` are compiled. Their complete, readable source is shipped in `assets/portal/src/`. The build bundles `assets/portal/src/portal/embed.jsx` with React 18.3.1 into one script and one stylesheet, using Vite 6.4.3 with @vitejs/plugin-react 4.3.4 in library mode with IIFE output. Every other file in the plugin is shipped as written.<h3>Credits</h3>
The settings screens use the Onest typeface, © 2021 The Onest Project Authors, licensed under the SIL Open Font License 1.1 (assets/fonts/OFL.txt).