Description
Formix Software Rental Quotes connects a WordPress site to a Formix account, the rental catalog and quote service from Formix Software. Rental companies that keep their inventory in Rentman can publish that catalog on WordPress through Formix and collect quote requests on the site. This plugin is not Formix Charter and is not affiliated with that plugin.
After an administrator connects the site, the plugin mirrors that company’s Formix product catalog into products under the Formix menu and adds a quote cart. Visitors can browse synced products and submit a request for quote. There is no checkout and no payment processing.
A Formix account is required. Until an administrator connects the site, the plugin does not call Formix and does not sync the catalog. Catalog analytics stay off until an administrator enables them.
OAuth tokens are stored in WordPress options and encrypted with the site’s AUTH_KEY. Disconnecting from Formix Settings Connection deletes those tokens.
Routes that stay open
These routes are public on purpose. Visitors are not logged in, so each one sets permission_callback to __return_true.
GET /wp-json/semble/v1/quote-cart/products— titles and prices for quote-cart lines, read from products already synced into WordPressGET /wp-json/semble/v1/upsells/resolve— upsell suggestions for the quote cartPOST /wp-json/semble/v1/quote-submissions— a visitor submits a quote requestPOST /wp-json/semble/v1/catalog-events— optional catalog analytics beacons. Nothing is sent until an administrator enables catalog analytics
Settings, connect, disconnect, sync, the daily sync switch, and the analytics switch require the manage_options capability. Connecting does not use a public OAuth callback. An administrator starts it from Formix Settings Connection.
Libraries bundled with this plugin
- Guzzle 8.2 (MIT)
- league/oauth2-client (MIT)
- WooCommerce Action Scheduler 4.2 (GPL-3.0)
This plugin is licensed under GPL-2.0-or-later, which can be combined with those libraries. It is not GPL-2.0-only. Action Scheduler 4.2 requires WordPress 6.9, so this plugin does too.
External services
This plugin connects to the Formix API, operated by Formix Software.
Formix is the product catalog, upsell rules, and quote inbox for a rental company. The plugin uses it to copy that catalog into WordPress and to deliver quote requests a visitor submits. The production API address is https://api.formix.nl. The site uses that address, or another Formix API address chosen when the administrator connects.
The plugin does not contact Formix until an administrator connects the site.
What is sent, and when:
- Connection. The administrator signs in to Formix and approves this site. Formix returns a connected-app client id and secret. The plugin exchanges those for an access token and stores the token in WordPress, encrypted with AUTH_KEY.
- Catalog sync. When an administrator clicks Sync now, the plugin requests this company’s products and categories. Product images are then downloaded by the WordPress server from the image addresses Formix returns (Formix media storage) into the media library. Sync runs only when an administrator starts it, or once each night after an administrator turns on Sync catalog daily under Formix Settings Sync. That setting is off by default; the nightly sync is a scheduled job on this site and sends the same requests as Sync now.
- Connection status. While connected, opening Formix Settings Connection asks Formix for the connected app’s name and company so the screen can show them. Only administrators see that screen.
- Upsells. When the quote cart asks for suggestions, the plugin sends the product ids already in the cart. Suggestion images are loaded by the visitor’s browser directly from Formix media storage, so that server sees the visitor’s IP address and browser details, like any image hosted elsewhere.
- Quote submission. When a visitor submits the quote form, the plugin sends the selected products, quantities, rental dates, delivery choice, and the contact details the visitor entered (name, email, phone, address, company, and notes). To attribute the request to a campaign it also sends the address of the page the form was on, the address of the first page of that visit including any
utm_*,gclid,fbclid,msclkid,wbraid, orgbraidparameters, the referring address if the browser provided one, and the random session id described under catalog analytics. The visitor sees the quote form before anything is sent. - Catalog analytics, only after an administrator enables them under Formix Settings Advanced. Each event includes an event name, a random session id kept in that browser session, and a device class (desktop, mobile, or tablet). Names, email addresses, and page addresses are not included in these events. While the setting is off, these events are not sent.
Terms of service: https://formix.nl/algemene-voorwaarden
Privacy policy: https://www.formix.nl/privacyverklaring
Data processing agreement: https://www.formix.nl/verwerkersovereenkomst
Installation
- Upload the plugin zip via Plugins Add New Upload Plugin, or install it from the directory once it is listed.
- Activate Formix Software Rental Quotes.
- Open Formix Settings Connection and click Connect to Formix. Sign in and approve access for this site.
- Open Formix Settings Sync and click Sync now. Synced products appear under Formix Products in the admin menu.
Connecting does not register a public OAuth callback. Formix sends the administrator back to the WordPress settings screen after they approve this site.
FAQ
-
Does this plugin work without a Formix account?
-
No. Catalog sync, upsells, and quote submission all use your Formix account. Nothing is synced until an administrator connects the site.
-
Does this plugin charge customers inside WordPress?
-
No. Visitors submit a request for quote. There is no checkout and no payment.
-
What is sent to Formix?
-
See External services. Tokens stay on this WordPress site, encrypted with
AUTH_KEY. Catalog analytics are off until an administrator enables them. -
Does this plugin track visitors?
-
Only if an administrator enables catalog analytics. That setting is off by default. Quote details are sent only when a visitor submits the quote form.
-
What happens when I delete the plugin?
-
Deleting the plugin removes its settings, the encrypted connection tokens, the sync log, its cached data, and any scheduled sync jobs. Synced products, categories, and their images are kept on purpose so nothing you edited is lost; delete them like any other posts, terms, and media if you no longer need them.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Formix Software Rental Quotes” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Formix Software Rental Quotes” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.1.6
- Add a top-level Formix menu for Products, Categories, and Settings. The icon is the white Formix mark.
0.1.5
- Show the plugin as Formix Software Rental Quotes in the plugin list, on the settings screen, in Elementor, and on the directory page. The directory address stays formixsoftware-rental-quotes.
0.1.4
- Mention Rentman in the directory tags, short description, and description so the WordPress.org listing can be found for catalogs synced from Rentman.
- Link the Formix service, terms of service, privacy policy, and data processing agreement in the readme.
0.1.3
- Activate without a fatal when the plugin class cannot be autoloaded, and explain a missing PHP extension, WordPress version, or library instead of crashing.
- Add an optional Sync catalog daily setting, off by default, that runs a full catalog sync once each night between 00:00 and 06:00 in the site timezone. Deactivating or deleting the plugin removes the scheduled job.
- Keep product and category slugs in step with the slugs set in Formix.
- Report an unreachable Formix API as a normal error on the quote and upsell routes instead of a PHP fatal.
- Load quote-cart scripts with the shortcode or widget that needs them. Catalog analytics still loads on the front end only after an administrator enables it.
- Use the public Formix service unless wp-config.php defines a Formix address. Developer addresses are no longer inferred from a localhost site URL.
- Write diagnostic lines to the PHP error log only when WP_DEBUG is on or an administrator enables debug logging.
- Sanitize every request value on read and guard every PHP file against direct access.
- Sanitize and length-cap every field of a quote submission before it is forwarded, and drop attribution addresses that are not http(s).
- Move the category dropdown navigation, the breadcrumb JSON-LD, and the admin reset confirmation out of inline scripts and attributes into enqueued files.
- Stop switching to an administrator account while importing product images; the import runs as the scheduled job itself.
- Validate every image address with WordPress before downloading it, and limit anonymous upsell lookups to 30 uncached requests per minute per address.
- Make the “price on request” label and all REST error messages translatable, with English source strings.
- Describe the campaign attribution fields, media downloads, and connection status call under External services.
0.1.2
- Mark the quote submission and catalog event routes as intentionally public with
__return_true. Visitors are not logged in, so a REST nonce is not used as authorization. - Point the privacy policy and data processing agreement at the public www.formix.nl pages.
0.1.1
- Rename the plugin to FormixSoftware Rental Quotes so it is distinct from Formix Charter. Requested WordPress.org slug: formixsoftware-rental-quotes.
- Document the Formix API, the data it receives, and the Formix Software terms, privacy policy, and data processing agreement.
- Keep catalog analytics off until an administrator enables them.
- Escape enclosed shortcode output.
- Stop writing log files under wp-content. Diagnostic lines go to the PHP error log.
- Update bundled Guzzle to 8.2 and Action Scheduler to 4.2. Requires WordPress 6.9.
0.1.0
- Initial release.



