{"id":380120,"date":"2026-10-13T18:38:52","date_gmt":"2026-10-13T18:38:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/formix\/"},"modified":"2026-10-15T06:25:49","modified_gmt":"2026-10-15T06:25:49","slug":"formixsoftware-rental-quotes","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/formixsoftware-rental-quotes\/","author":23576103,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.6","stable_tag":"0.1.6","tested":"7.1.3","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"Formix Software Rental Quotes","header_author":"Formix Software","header_description":"Shows the products from a Formix rental catalog on a WordPress website and lets visitors ask for a quote.","assets_banners_color":"1c1612","last_updated":"2026-10-15 06:25:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/formix.nl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":118,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.3":{"tag":"0.1.3","author":"formixsoftware","date":"2026-10-13 18:38:31","revision":3744704},"0.1.4":{"tag":"0.1.4","author":"formixsoftware","date":"2026-10-14 18:59:10","revision":3746983},"0.1.6":{"tag":"0.1.6","author":"formixsoftware","date":"2026-10-15 06:25:49","revision":3747701}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3746983,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3746983,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3746983,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3746983,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3746983,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.3","0.1.4","0.1.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3746983,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3746983,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3746983,"resolution":"3","location":"assets","locale":"","width":1440,"height":960}},"screenshots":[]},"plugin_section":[],"plugin_tags":[2777,702,354,5075,286804],"plugin_category":[45],"plugin_contributors":[286548],"plugin_business_model":[],"class_list":["post-380120","plugin","type-plugin","status-publish","hentry","plugin_tags-catalog","plugin_tags-products","plugin_tags-quotes","plugin_tags-rental","plugin_tags-rentman","plugin_category-ecommerce","plugin_contributors-formixsoftware","plugin_committers-formixsoftware"],"banners":{"banner":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/banner-772x250.png?rev=3746983","banner_2x":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/banner-1544x500.png?rev=3746983","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/icon.svg?rev=3746983","icon":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/icon.svg?rev=3746983","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/screenshot-1.png?rev=3746983","caption":""},{"src":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/screenshot-2.png?rev=3746983","caption":""},{"src":"https:\/\/ps.w.org\/formixsoftware-rental-quotes\/assets\/screenshot-3.png?rev=3746983","caption":""}],"raw_content":"<!--section=description-->\n<p>Formix Software Rental Quotes connects a WordPress site to a Formix account, the rental catalog and quote service from <a href=\"https:\/\/formix.nl\">Formix Software<\/a>. 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.<\/p>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p>OAuth tokens are stored in WordPress options and encrypted with the site's <code>AUTH_KEY<\/code>. Disconnecting from Formix \u2192 Settings \u2192 Connection deletes those tokens.<\/p>\n\n<h4>Routes that stay open<\/h4>\n\n<p>These routes are public on purpose. Visitors are not logged in, so each one sets <code>permission_callback<\/code> to <code>__return_true<\/code>.<\/p>\n\n<ul>\n<li><code>GET \/wp-json\/semble\/v1\/quote-cart\/products<\/code> \u2014 titles and prices for quote-cart lines, read from products already synced into WordPress<\/li>\n<li><code>GET \/wp-json\/semble\/v1\/upsells\/resolve<\/code> \u2014 upsell suggestions for the quote cart<\/li>\n<li><code>POST \/wp-json\/semble\/v1\/quote-submissions<\/code> \u2014 a visitor submits a quote request<\/li>\n<li><code>POST \/wp-json\/semble\/v1\/catalog-events<\/code> \u2014 optional catalog analytics beacons. Nothing is sent until an administrator enables catalog analytics<\/li>\n<\/ul>\n\n<p>Settings, connect, disconnect, sync, the daily sync switch, and the analytics switch require the <code>manage_options<\/code> capability. Connecting does not use a public OAuth callback. An administrator starts it from Formix \u2192 Settings \u2192 Connection.<\/p>\n\n<h4>Libraries bundled with this plugin<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/guzzle\/guzzle\">Guzzle<\/a> 8.2 (MIT)<\/li>\n<li><a href=\"https:\/\/github.com\/thephpleague\/oauth2-client\">league\/oauth2-client<\/a> (MIT)<\/li>\n<li><a href=\"https:\/\/github.com\/woocommerce\/action-scheduler\">WooCommerce Action Scheduler<\/a> 4.2 (GPL-3.0)<\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Formix API, operated by <a href=\"https:\/\/formix.nl\">Formix Software<\/a>.<\/p>\n\n<p>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 <a href=\"https:\/\/api.formix.nl\">https:\/\/api.formix.nl<\/a>. The site uses that address, or another Formix API address chosen when the administrator connects.<\/p>\n\n<p>The plugin does not contact Formix until an administrator connects the site.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li>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.<\/li>\n<li>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 \u2192 Settings \u2192 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.<\/li>\n<li>Connection status. While connected, opening Formix \u2192 Settings \u2192 Connection asks Formix for the connected app's name and company so the screen can show them. Only administrators see that screen.<\/li>\n<li>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.<\/li>\n<li>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 <code>utm_*<\/code>, <code>gclid<\/code>, <code>fbclid<\/code>, <code>msclkid<\/code>, <code>wbraid<\/code>, or <code>gbraid<\/code> parameters, 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.<\/li>\n<li>Catalog analytics, only after an administrator enables them under Formix \u2192 Settings \u2192 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.<\/li>\n<\/ul>\n\n<p>Terms of service: <a href=\"https:\/\/formix.nl\/algemene-voorwaarden\">https:\/\/formix.nl\/algemene-voorwaarden<\/a>\nPrivacy policy: <a href=\"https:\/\/www.formix.nl\/privacyverklaring\">https:\/\/www.formix.nl\/privacyverklaring<\/a>\nData processing agreement: <a href=\"https:\/\/www.formix.nl\/verwerkersovereenkomst\">https:\/\/www.formix.nl\/verwerkersovereenkomst<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin zip via Plugins \u2192 Add New \u2192 Upload Plugin, or install it from the directory once it is listed.<\/li>\n<li>Activate Formix Software Rental Quotes.<\/li>\n<li>Open Formix \u2192 Settings \u2192 Connection and click Connect to Formix. Sign in and approve access for this site.<\/li>\n<li>Open Formix \u2192 Settings \u2192 Sync and click Sync now. Synced products appear under Formix \u2192 Products in the admin menu.<\/li>\n<\/ol>\n\n<p>Connecting does not register a public OAuth callback. Formix sends the administrator back to the WordPress settings screen after they approve this site.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20without%20a%20formix%20account%3F\"><h3>Does this plugin work without a Formix account?<\/h3><\/dt>\n<dd><p>No. Catalog sync, upsells, and quote submission all use your Formix account. Nothing is synced until an administrator connects the site.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20charge%20customers%20inside%20wordpress%3F\"><h3>Does this plugin charge customers inside WordPress?<\/h3><\/dt>\n<dd><p>No. Visitors submit a request for quote. There is no checkout and no payment.<\/p><\/dd>\n<dt id=\"what%20is%20sent%20to%20formix%3F\"><h3>What is sent to Formix?<\/h3><\/dt>\n<dd><p>See External services. Tokens stay on this WordPress site, encrypted with <code>AUTH_KEY<\/code>. Catalog analytics are off until an administrator enables them.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20track%20visitors%3F\"><h3>Does this plugin track visitors?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Add a top-level Formix menu for Products, Categories, and Settings. The icon is the white Formix mark.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Mention Rentman in the directory tags, short description, and description so the WordPress.org listing can be found for catalogs synced from Rentman.<\/li>\n<li>Link the Formix service, terms of service, privacy policy, and data processing agreement in the readme.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Activate without a fatal when the plugin class cannot be autoloaded, and explain a missing PHP extension, WordPress version, or library instead of crashing.<\/li>\n<li>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.<\/li>\n<li>Keep product and category slugs in step with the slugs set in Formix.<\/li>\n<li>Report an unreachable Formix API as a normal error on the quote and upsell routes instead of a PHP fatal.<\/li>\n<li>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.<\/li>\n<li>Use the public Formix service unless wp-config.php defines a Formix address. Developer addresses are no longer inferred from a localhost site URL.<\/li>\n<li>Write diagnostic lines to the PHP error log only when WP_DEBUG is on or an administrator enables debug logging.<\/li>\n<li>Sanitize every request value on read and guard every PHP file against direct access.<\/li>\n<li>Sanitize and length-cap every field of a quote submission before it is forwarded, and drop attribution addresses that are not http(s).<\/li>\n<li>Move the category dropdown navigation, the breadcrumb JSON-LD, and the admin reset confirmation out of inline scripts and attributes into enqueued files.<\/li>\n<li>Stop switching to an administrator account while importing product images; the import runs as the scheduled job itself.<\/li>\n<li>Validate every image address with WordPress before downloading it, and limit anonymous upsell lookups to 30 uncached requests per minute per address.<\/li>\n<li>Make the \"price on request\" label and all REST error messages translatable, with English source strings.<\/li>\n<li>Describe the campaign attribution fields, media downloads, and connection status call under External services.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Mark the quote submission and catalog event routes as intentionally public with <code>__return_true<\/code>. Visitors are not logged in, so a REST nonce is not used as authorization.<\/li>\n<li>Point the privacy policy and data processing agreement at the public www.formix.nl pages.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Rename the plugin to FormixSoftware Rental Quotes so it is distinct from Formix Charter. Requested WordPress.org slug: formixsoftware-rental-quotes.<\/li>\n<li>Document the Formix API, the data it receives, and the Formix Software terms, privacy policy, and data processing agreement.<\/li>\n<li>Keep catalog analytics off until an administrator enables them.<\/li>\n<li>Escape enclosed shortcode output.<\/li>\n<li>Stop writing log files under wp-content. Diagnostic lines go to the PHP error log.<\/li>\n<li>Update bundled Guzzle to 8.2 and Action Scheduler to 4.2. Requires WordPress 6.9.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Shows the products from a Formix rental catalog, including catalogs synced from Rentman, on a WordPress website and lets visitors ask for a quote.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380120"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/formixsoftware"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380120"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380120"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380120"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380120"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380120"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}