{"id":345744,"date":"2026-07-29T15:43:17","date_gmt":"2026-07-29T15:43:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/paintops\/"},"modified":"2026-09-29T07:53:02","modified_gmt":"2026-09-29T07:53:02","slug":"paintops","status":"publish","type":"plugin","link":"https:\/\/pap-aw.wordpress.org\/plugins\/paintops\/","author":23536343,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.063","stable_tag":"1.2.063","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"PaintClarity","header_author":"PaintClarity","header_description":"Estimating, scheduling, job tracking, crews, invoicing, and profit reporting for painting contractors.","assets_banners_color":"d3ecfc","last_updated":"2026-09-29 07:53:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/paintclarity.com","header_author_uri":"https:\/\/paintclarity.com\/the-paintclarity-story\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":972,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.265":{"tag":"1.0.265","author":"paintops","date":"2026-07-29 15:42:44","revision":3627427},"1.0.267":{"tag":"1.0.267","author":"paintops","date":"2026-07-30 21:09:23","revision":3629119},"1.0.269":{"tag":"1.0.269","author":"paintops","date":"2026-08-01 18:26:58","revision":3631221},"1.0.270":{"tag":"1.0.270","author":"paintops","date":"2026-08-14 17:38:39","revision":3647776},"1.0.275":{"tag":"1.0.275","author":"paintops","date":"2026-08-31 03:35:34","revision":3673335},"1.0.294":{"tag":"1.0.294","author":"paintops","date":"2026-09-11 01:04:45","revision":3690639},"1.0.295":{"tag":"1.0.295","author":"paintops","date":"2026-09-11 04:28:42","revision":3690748},"1.0.297":{"tag":"1.0.297","author":"paintops","date":"2026-09-11 20:58:48","revision":3692082},"1.0.300":{"tag":"1.0.300","author":"paintops","date":"2026-09-12 07:19:18","revision":3692417},"1.0.301":{"tag":"1.0.301","author":"paintops","date":"2026-09-13 05:20:11","revision":3693323},"1.1.000":{"tag":"1.1.000","author":"paintops","date":"2026-09-14 01:39:36","revision":3694343},"1.1.001":{"tag":"1.1.001","author":"paintops","date":"2026-09-14 16:48:44","revision":3695614},"1.2.005":{"tag":"1.2.005","author":"paintops","date":"2026-09-15 04:50:30","revision":3696190},"1.2.007":{"tag":"1.2.007","author":"paintops","date":"2026-09-15 07:34:49","revision":3696404},"1.2.009":{"tag":"1.2.009","author":"paintops","date":"2026-09-16 00:00:53","revision":3697794},"1.2.038":{"tag":"1.2.038","author":"paintops","date":"2026-09-20 03:35:00","revision":3703833},"1.2.049":{"tag":"1.2.049","author":"paintops","date":"2026-09-20 20:39:16","revision":3704599},"1.2.051":{"tag":"1.2.051","author":"paintops","date":"2026-09-21 02:28:45","revision":3704757},"1.2.052":{"tag":"1.2.052","author":"paintops","date":"2026-09-21 17:26:16","revision":3706025},"1.2.056":{"tag":"1.2.056","author":"paintops","date":"2026-09-22 02:25:07","revision":3706524},"1.2.057":{"tag":"1.2.057","author":"paintops","date":"2026-09-22 07:06:58","revision":3706741},"1.2.058":{"tag":"1.2.058","author":"paintops","date":"2026-09-24 05:57:24","revision":3710551},"1.2.059":{"tag":"1.2.059","author":"paintops","date":"2026-09-25 02:11:46","revision":3712238},"1.2.063":{"tag":"1.2.063","author":"paintops","date":"2026-09-29 07:53:02","revision":3718499}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3692081,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3692081,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3692081,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3692081,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.265","1.0.267","1.0.269","1.0.270","1.0.275","1.0.294","1.0.295","1.0.297","1.0.300","1.0.301","1.1.000","1.1.001","1.2.005","1.2.007","1.2.009","1.2.038","1.2.049","1.2.051","1.2.052","1.2.056","1.2.057","1.2.058","1.2.059","1.2.063"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3704666,"resolution":"1","location":"assets","locale":"","width":907,"height":934},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3704666,"resolution":"2","location":"assets","locale":"","width":665,"height":639},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3704666,"resolution":"3","location":"assets","locale":"","width":591,"height":933},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3704698,"resolution":"4","location":"assets","locale":"","width":589,"height":959},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3704666,"resolution":"5","location":"assets","locale":"","width":580,"height":928},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3704666,"resolution":"6","location":"assets","locale":"","width":791,"height":586},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3695602,"resolution":"7","location":"assets","locale":"","width":1708,"height":880},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3704666,"resolution":"8","location":"assets","locale":"","width":1330,"height":926}},"screenshots":{"1":"The quote\/estimate builder with scope components and inclusions\/exclusions.","2":"The customer's accept page: branded, e-signed, with online deposit.","3":"The scheduling calendar with crews, worker badges, and holiday labels.","4":"A painter's phone view: My Jobs, directions, and offline check-in.","5":"The Profits dashboard (Pro) with profit by crew and worker.","6":"An invoice with online payment and mark-as-paid.","7":"Settings: Company Profile, Appearance themes, Stripe, and AI.","8":"The Color Visualizer: select a surface in the customer's photo and turn the wheel until it is the color you are proposing."}},"plugin_section":[],"plugin_tags":[7141,51828,26218,184820,268],"plugin_category":[40],"plugin_contributors":[78154,273704],"plugin_business_model":[],"class_list":["post-345744","plugin","type-plugin","status-publish","hentry","plugin_tags-contractor","plugin_tags-estimates","plugin_tags-invoicing","plugin_tags-painting","plugin_tags-scheduling","plugin_category-calendar-and-events","plugin_contributors-freemius","plugin_contributors-paintops","plugin_committers-paintops"],"banners":{"banner":"https:\/\/ps.w.org\/paintops\/assets\/banner-772x250.png?rev=3692081","banner_2x":"https:\/\/ps.w.org\/paintops\/assets\/banner-1544x500.png?rev=3692081","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/paintops\/assets\/icon-128x128.png?rev=3692081","icon_2x":"https:\/\/ps.w.org\/paintops\/assets\/icon-256x256.png?rev=3692081","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-1.png?rev=3704666","caption":"The quote\/estimate builder with scope components and inclusions\/exclusions."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-2.png?rev=3704666","caption":"The customer's accept page: branded, e-signed, with online deposit."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-3.png?rev=3704666","caption":"The scheduling calendar with crews, worker badges, and holiday labels."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-4.png?rev=3704698","caption":"A painter's phone view: My Jobs, directions, and offline check-in."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-5.png?rev=3704666","caption":"The Profits dashboard (Pro) with profit by crew and worker."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-6.png?rev=3704666","caption":"An invoice with online payment and mark-as-paid."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-7.png?rev=3695602","caption":"Settings: Company Profile, Appearance themes, Stripe, and AI."},{"src":"https:\/\/ps.w.org\/paintops\/assets\/screenshot-8.png?rev=3704666","caption":"The Color Visualizer: select a surface in the customer's photo and turn the wheel until it is the color you are proposing."}],"raw_content":"<!--section=description-->\n<p><strong>PaintClarity turns your WordPress site into the back office for your painting business.<\/strong> <em>(PaintClarity was formerly known as PaintOps. Same plugin, same team, same data.)<\/em> Build professional quotes, send them to customers who can view, e-sign, and pay a deposit online, schedule crews on a calendar, track every job from lead to invoice, and, on Pro, see your real profit per job, per crew, and per worker.<\/p>\n\n<p>It was built by a painter, for painters. The quote builder understands painting scope: interior\/exterior components, standard inclusions and exclusions, and the disclaimer language that keeps you out of disputes. Your data lives in your own WordPress database, not locked inside someone else's SaaS.<\/p>\n\n<h4>Quote to invoice, start to finish<\/h4>\n\n<ul>\n<li><strong>Quotes, estimates &amp; bids<\/strong>: a scope-aware builder with reusable inclusions\/exclusions, itemized or lump-sum pricing, printable output, and email delivery.<\/li>\n<li><strong>A professional customer page<\/strong>: your customer opens a clean, branded page (your logo, your terms &amp; conditions) and accepts by typing their name, an e-signature-grade record with timestamp. They can also decline with a reason, or ask a question, and you're notified either way.<\/li>\n<li><strong>Acceptance converts the quote to a job automatically<\/strong>, whether they paid a deposit online or you shook hands, and a \"Mark as Won\" button covers the phone call.<\/li>\n<li><strong>Invoices<\/strong>: numbered invoices for the balance (full or partial), emailed or shared by link, payable online (Pro + Stripe) or marked paid for check\/cash, with the payment logged so balances always agree.<\/li>\n<li><strong>Receivables at a glance<\/strong>: unpaid invoices surface on your dashboard with amounts and age.<\/li>\n<\/ul>\n\n<h4>Running the work<\/h4>\n\n<ul>\n<li><strong>Scheduling calendar<\/strong> with crew filtering, worker badges, time-off, and a subscribe link for Google\/Apple\/Outlook. Add your own recurring holiday labels.<\/li>\n<li><strong>Crews<\/strong>: group your painters into named, colored crews; staff a job with one tap and filter the calendar and reports by crew.<\/li>\n<li><strong>Job board \/ pipeline<\/strong>: Quote \u2192 Active \u2192 Completed, plus a lost-leads drawer with the customer's decline reason so you can revive the ones worth re-working.<\/li>\n<li><strong>A real app for your painters<\/strong>: install-to-home-screen (PWA), a \"My Jobs\" home, one-tap directions (Google\/Apple\/Waze), per-job check-in\/out that works offline and syncs, photo\/receipt\/note logging, a \"My Hours\" view of their own time and pay, and a \"Mark Job Complete\" button that notifies the office. Workers see only what their permissions allow, never your numbers.<\/li>\n<li><strong>Customers<\/strong>: a directory with contact details, lifetime value, job history, and <strong>multiple service addresses per customer<\/strong>, built for landlords, realtors, property managers, and GCs whose one account means a dozen properties.<\/li>\n<li><strong>Before\/After photos<\/strong> with camera alignment overlay and a compare slider.<\/li>\n<li><strong>Color Visualizer<\/strong>: load a photo of the house or the room, select the surface, and turn a color wheel until it is the color you are proposing. The wall changes color and keeps its own shading, grain and texture. Select by fill, by matching color, or by dragging a box over a big flat wall. Handles stucco, siding, brick, concrete block and interior drywall, takes the Sherwin-Williams or Benjamin Moore number alongside it, and prints or saves the render for the customer. The Manual tab runs entirely in your browser: no photo is uploaded anywhere.<\/li>\n<li><strong>AI Visualizer<\/strong> (Pro): the other tab. Upload or take a photo, pick colors by brand and name from the Sherwin-Williams and Benjamin Moore books, add a note like \"paint the stone wall too, in Alabaster\", and get back a realistic repainted photo to show the customer. This tab sends the photo to OpenAI under your own API key (Settings &gt; AI), billed to your OpenAI account at a few cents per render. Renders can be saved to the job's photos. Colors on screen are approximate; brand and color names are trademarks of their owners and PaintClarity is not affiliated with any paint manufacturer.<\/li>\n<li><strong>Trade calculators, paint-color tracking, and resource links.<\/strong><\/li>\n<li><strong>A choice of visual themes<\/strong> (light, dark, industrial, and more) with a modern app-style navigation bar on desktop and phone.<\/li>\n<\/ul>\n\n<h4>What Pro adds<\/h4>\n\n<ul>\n<li><strong>Job financials &amp; profitability<\/strong>: costs, materials, labor hours; gross, expenses, profit, and margin per job; a Profits dashboard with profit-by-classification, profit-per-hour rankings, and <strong>profit by crew and by worker<\/strong> (allocated by logged hours).<\/li>\n<li><strong>Expenses &amp; receipts<\/strong> against any job, plus business-level and vehicle expense tracking for tax time.<\/li>\n<li><strong>Online payments<\/strong>: deposits on quote acceptance and invoice balances through Stripe Checkout, recorded automatically.<\/li>\n<li><strong>AI tools (bring your own OpenAI key)<\/strong>: estimate dimensions, gallons, and a Description of Work from a photo; scan receipts to auto-fill expenses; get feedback on or a rewrite of your quote wording.<\/li>\n<\/ul>\n\n<p>Pro is a paid upgrade handled through Freemius. The free plugin is fully functional on its own; Pro is optional.<\/p>\n\n<h3>Bundled artwork<\/h3>\n\n<p>The four ready-made logos offered under Business &gt; Logo URL (assets\/img\/logos\/) are AI-generated original artwork created for this plugin. They carry no third-party rights and are distributed under the same GPLv2-or-later license as the rest of the plugin. They are optional, off by default, and carry no PaintClarity branding or link.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can connect to the following third-party services. Some are optional and only run when you enable and configure the corresponding feature.<\/p>\n\n<p><strong>OpenAI (Pro AI features, optional).<\/strong> When you use an AI feature (Photo Estimate, Receipt Scan, Description-of-Work Feedback or Rewrite), the plugin sends the relevant input, the photo you choose to upload and\/or the quote text you are working on, to the OpenAI API using <strong>your own<\/strong> OpenAI API key, and receives the generated result. No data is sent unless you click one of these buttons. PaintClarity does not store the photo. Requests go to https:\/\/api.openai.com. See OpenAI's Terms (https:\/\/openai.com\/policies\/terms-of-use) and Privacy Policy (https:\/\/openai.com\/policies\/privacy-policy).<\/p>\n\n<p><strong>Stripe (Pro online payments, optional).<\/strong> If you enable card payments and a customer pays online, the plugin creates a Stripe Checkout session and verifies Stripe's webhook using your own Stripe keys. Order\/amount details are exchanged with Stripe to process the payment. Requests go to https:\/\/api.stripe.com. See Stripe's Services Agreement (https:\/\/stripe.com\/legal\/ssa) and Privacy Policy (https:\/\/stripe.com\/privacy).<\/p>\n\n<p><strong>Google Maps Platform (optional).<\/strong> If you add a Google Maps API key, address fields use Google Places\/Geocoding for autocomplete and validation, and job locations may be shown on an embedded map. The address text you type is sent to Google to return suggestions. Requests go to https:\/\/maps.googleapis.com and related Google Maps endpoints. See Google's Terms (https:\/\/cloud.google.com\/maps-platform\/terms) and Privacy Policy (https:\/\/policies.google.com\/privacy). (One-tap turn-by-turn Directions for your crew use keyless map links and need no API key.)<\/p>\n\n<p><strong>YouTube and Vimeo (Resources page video embeds, optional).<\/strong> The Resources page (staff-facing, inside your admin area) lets you save links to training videos, and seeds a starter list of publicly available painting tutorials on YouTube. When a staff member clicks a saved YouTube or Vimeo link's play button, the video is embedded on the page via the provider's standard embed player (www.youtube.com \/ player.vimeo.com), which loads content from that provider and is subject to its terms; no data is sent until the play button is clicked, and you can delete any or all saved links. See YouTube's Terms (https:\/\/www.youtube.com\/t\/terms) and Google's Privacy Policy (https:\/\/policies.google.com\/privacy), and Vimeo's Terms (https:\/\/vimeo.com\/terms) and Privacy Policy (https:\/\/vimeo.com\/privacy).<\/p>\n\n<p><strong>Freemius (licensing &amp; updates).<\/strong> PaintClarity uses the Freemius SDK to manage Pro licenses, deliver Pro updates, and (optionally) collect anonymous usage diagnostics you can opt out of. Site and license information is exchanged with Freemius. See Freemius's Terms (https:\/\/freemius.com\/terms\/) and Privacy Policy (https:\/\/freemius.com\/privacy\/).<\/p>\n\n<p>You control every one of these by whether you enter the corresponding API key and enable the feature. With no keys entered, PaintClarity runs entirely on your own site.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Your customers' details live in your own WordPress database. PaintClarity's author never sees them, and nothing is sent to a PaintClarity server. That also means you, not the plugin, are the one a customer asks when they want to know what you hold about them, so the plugin's job is to make sure you can answer.<\/p>\n\n<p><strong>Quote and invoice pages are blocked from search engines.<\/strong> Those pages are reached by a long private link rather than a password, and a link can be forwarded, pasted into a chat, or picked up from a referrer header. Every customer-facing document PaintClarity serves is marked no-index, no-archive at both the page and the header level, so a link that escapes cannot turn into a search result.<\/p>\n\n<p><strong>Data requests work out of the box.<\/strong> Under Tools -&gt; Export Personal Data and Tools -&gt; Erase Personal Data, WordPress can search PaintClarity by email address. Export collects the customer record, their jobs, quotes, invoices, payments, and the emails you sent them. Erase removes their details from all of it.<\/p>\n\n<p><strong>Erasing does not destroy your books.<\/strong> Quotes, invoices and payments are kept and stripped of the name, address, phone, email, typed signature and IP address instead of being deleted, because a business is required to keep financial records for years and data protection law allows exactly that. Any quote or invoice link previously sent to that customer stops working. Job photos are left for you to review yourself rather than deleted automatically.<\/p>\n\n<p><strong>Suggested privacy policy wording<\/strong> for what PaintClarity stores and which services can receive data is added to Settings -&gt; Privacy -&gt; Policy Guide.<\/p>\n\n<p><strong>Three optional limits, all off by default<\/strong>, under PaintClarity -&gt; Settings -&gt; Privacy &amp; Customer Data: delete the emailed-communication log after N months, forget the IP address recorded when a quote was signed online after N months, and make quote and invoice links stop working after N days. A business working only in the United States can leave all three off and nothing changes.<\/p>\n\n<p>None of this is Pro. It is all in the free plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install PaintClarity from the Plugins screen (Plugins \u2192 Add New \u2192 search \"PaintClarity\"), or upload the plugin ZIP under Plugins \u2192 Add New \u2192 Upload Plugin. Activate it.<\/li>\n<li>Create a WordPress Page and add the shortcode <code>[paintops_app]<\/code>. This one page is your whole PaintClarity app; it routes internally.<\/li>\n<li>Go to <strong>PaintClarity \u2192 Settings<\/strong> and set your Company Profile (business name, logo, country, currency), and review the Setup Health panel.<\/li>\n<li>(Optional) Add team members under <strong>PaintClarity \u2192 Painters\/Helpers<\/strong>, set their permissions, and group them into Crews.<\/li>\n<li>(Optional) Add your Quote Terms &amp; Conditions under Business Settings so customers see and sign against them.<\/li>\n<li>(Optional, Pro) Under <strong>Settings \u2192 AI Settings<\/strong> connect OpenAI, under <strong>Stripe Payments<\/strong> add your Stripe secret key AND webhook signing secret (both are required before online payment buttons appear), and add a Google Maps API key for address autocomplete.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paid%20account%20to%20use%20it%3F\"><h3>Do I need a paid account to use it?<\/h3><\/dt>\n<dd><p>No. The free plugin runs entirely on your own WordPress site and lets you quote, schedule, and manage unlimited jobs. Pro is an optional upgrade.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20or%20delete%20the%20plugin%3F\"><h3>What happens to my data if I deactivate or delete the plugin?<\/h3><\/dt>\n<dd><p>Nothing is deleted. Your jobs, quotes, customers, payments, hours, and photos stay in your WordPress database, so nothing is lost if you deactivate temporarily or reinstall later. If you truly want the data gone, delete the plugin's tables and its uploads from your database and media library.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20openai%2C%20stripe%2C%20or%20google%20maps%3F\"><h3>Does it work without OpenAI, Stripe, or Google Maps?<\/h3><\/dt>\n<dd><p>Yes. Those are optional integrations. If you don't enter their keys, the related features simply stay off and everything else works, including keyless turn-by-turn directions for your crew.<\/p><\/dd>\n<dt id=\"can%20my%20customers%20really%20sign%20a%20quote%20online%3F\"><h3>Can my customers really sign a quote online?<\/h3><\/dt>\n<dd><p>They accept by typing their full name, which is stored with a timestamp and IP address alongside your Terms &amp; Conditions, a solid acceptance record. They can also decline with a reason, and change their minds later.<\/p><\/dd>\n<dt id=\"who%20pays%20for%20the%20ai%20usage%3F\"><h3>Who pays for the AI usage?<\/h3><\/dt>\n<dd><p>You do, through your own OpenAI account and key, typically a fraction of a cent to a few cents per action. PaintClarity adds per-month usage caps you control so costs stay predictable.<\/p><\/dd>\n<dt id=\"can%20my%20painters%20log%20in%20without%20seeing%20my%20numbers%3F\"><h3>Can my painters log in without seeing my numbers?<\/h3><\/dt>\n<dd><p>Yes. Painters\/Helpers get a dedicated role with opt-in permissions and their own app view: My Jobs, My Hours (their own time and pay only), directions, check-in\/out, photos and receipts. Financial figures are owner-level and hidden from workers unless you explicitly grant access.<\/p><\/dd>\n<dt id=\"does%20it%20work%20in%20the%20field%20with%20bad%20reception%3F\"><h3>Does it work in the field with bad reception?<\/h3><\/dt>\n<dd><p>The app installs to a phone's home screen, and Time Clock check-in\/out keeps working offline and syncs when a connection returns.<\/p><\/dd>\n<dt id=\"where%20is%20my%20data%20stored%3F\"><h3>Where is my data stored?<\/h3><\/dt>\n<dd><p>In your own WordPress database. PaintClarity doesn't host your business data on an external server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.063<\/h4>\n\n<ul>\n<li>Fixed: on a site that installed PaintClarity fresh from 1.2.059 on, business expenses and vehicle trips were reported as saved and were not. Two of the plugin's tables were never created because a note inside their definition contained a semicolon. The tables are created on upgrade, and a save that fails now says so instead of showing a green notice.<\/li>\n<li>Fixed: an invoice raised for the remaining balance was shown to the customer with the job's earlier payments subtracted a second time, so a $2,493 invoice after a $1,000 deposit read \"Balance Due $1,493.00\" and the online payment charged that. An invoice now remembers what had been paid when it was raised, and only money received after that reduces it. A second invoice on a job keeps its own amount after the first one is paid.<\/li>\n<li>Fixed: editing a job and saving without touching the tax box could quietly move it to today's default rate when the rate it was stamped with had been changed or retired, which restated a quote that was already out. A stamped job keeps its rate unless you pick a different one; the form now shows a rate that is no longer offered and says so.<\/li>\n<li>Fixed: a painter given \"view financials\" could open the Business page, the Checkup, the Expenses page, the year-end reports and any job's profit coversheet, including the hourly rates of the whole crew. That permission now covers the painter's own jobs only; the office pages and reports are for staff.<\/li>\n<li>Fixed: a check-in or check-out saved on the phone while out of signal could be dropped without a word if the app had been open more than a day. Saved punches are now kept until they send, the app fetches a fresh key before sending, and it tells the painter when something is still waiting.<\/li>\n<li>Fixed: when a customer signed a quote and the online deposit could not start, they were shown a technical error and the same form again while their signature and any add-on they ticked were already recorded. The acceptance is now completed the same way an offline acceptance is, the customer is thanked and told you will arrange the deposit, and your email says what went wrong on the Stripe side.<\/li>\n<li>Fixed: the itemized quote a customer signs listed an accepted add-on twice, once at its price and once at your internal cost. The cost line stays in your own costing and never prints for the customer.<\/li>\n<li>Invoices now state the tax included, the rate, and the amount before tax, matching the quote to the cent.<\/li>\n<li>The public quote says how the deposit is paid when it is not collected online, and the deposit percentage prints as the tier you set (35%) rather than a recomputed 34.98%.<\/li>\n<li>The invoice email only promises \"pay online\" when the page will have a Pay button, and it goes out from your company address like the quote does.<\/li>\n<li>A customer opening, signing, or declining a quote, and a deposit paid online, now appear in the job's Message History.<\/li>\n<li>Every customer-facing dead end (an expired quote, a link that no longer works, a decline) now shows your company name, phone and email.<\/li>\n<li>Checkup's \"Create invoice\" link opens the job's Financials invoices, not \"Invoice not found\".<\/li>\n<li>Creating a request no longer leaves the form filled in under the success message, which made a second click create a duplicate.<\/li>\n<li>A painter's home screen lists a multi-day job under Today for every day it runs, not under Needs attention from day two.<\/li>\n<li>Checking in on a job while still checked in on another now checks you out of the first one at that moment and says so, instead of paying both.<\/li>\n<li>The before\/after comparison slider had its labels the wrong way round; Before is on the left.<\/li>\n<li>The mileage rate accepts half cents (the IRS rate for 2026 is 72.5 cents) and the settings text says which year is which.<\/li>\n<li>Imported quotes that carry a tax figure now stamp the job with the rate that figure implies, so Financials and the quote agree.<\/li>\n<li>New (Pro): AI Visualizer, a second tab on the Visualizer. Upload or take a photo, pick colors by brand and name from the Sherwin-Williams and Benjamin Moore books, add notes like \"paint the stone wall too, in Alabaster\", and get back a repainted photo to show the customer. Uses your own OpenAI key (Settings &gt; AI, with a new image model, quality and monthly cap). Renders can be saved to the job's photos. The Manual tab is unchanged and still runs entirely in your browser.<\/li>\n<li>The AI Visualizer answers the browser as soon as the render is handed to OpenAI and then checks back for the result, so a web host or proxy that cuts off long requests no longer ends a render with \"did not come back\". Settings &gt; AI shows a record of the last render, including one the host stopped.<\/li>\n<li>The primary figure on stat tiles (Profit, Request Acceptance Rate) no longer carries a blue rule across its top; every tile is the same plain card.<\/li>\n<li>The More Actions tile on a job keeps its name while open (the chevron shows the state); the longer \"Hide\" label used to wrap and stretch every tile beside it. Same on the quote and invoice views.<\/li>\n<li>The remove button on an AI Visualizer color row has a proper touch target and breathing room from the card edge.<\/li>\n<li>AI Visualizer renders ask OpenAI for its less restrictive image filter and describe the photo as a building for a painting estimate, after the default filter rejected an ordinary house front as unsafe. A rejection that still happens explains itself and says what to try.<\/li>\n<li>Housekeeping: the database schema and the default content data moved out of the main plugin file into includes, keeping it well inside the size limit that produced a broken Pro update in 1.2.019. No behavior change.<\/li>\n<\/ul>\n\n<h4>1.2.060<\/h4>\n\n<ul>\n<li>New: bring your customers in from a spreadsheet. Settings &gt; Import takes a CSV out of your old system, a phone's contact export or a list you typed yourself. It shows you exactly what it read before anything is saved, and tells you which rows it would skip and why. Nothing is written until you press the button on the second screen.<\/li>\n<li>The import matches on email first, then on phone number, then on an exact name. A row that could be two different customers you already have is skipped and listed for you, never merged on a guess. If the result is not what you wanted, Undo removes only the records that import created and leaves everything else alone.<\/li>\n<li>New: bring in past jobs and quotes as well, on the same screen. Old records and a new system rarely line up, so you say what you are loading: finished history, which lands as completed work, or open work you are still chasing. A job whose customer is not on file yet gets that customer created along with it.<\/li>\n<li>A fresh install can start over. \"Delete all data and import\" clears what PaintClarity holds and loads the file cleanly, which is what you want the second time you try an export you have since fixed. \"Merge with existing records\" is the default and never deletes anything.<\/li>\n<li>Fixed: a customer who paid you more than the billable amount looked exactly like a customer who had paid to the penny. A $400 job settled with $480 now says \"Overpaid by $80.00\" on the job and on the Financials screen, with a one-click \"Set Billable to $480.00\" for when the extra work was real and the number simply never got updated.<\/li>\n<li>Fixed: the Jobs page in row view showed a job as settled up while the same job in board view showed money still outstanding. Both now read one rule, and so does the Financials screen, which could say nobody owed you anything while an invoice was open.<\/li>\n<li>Jobs you have marked to leave out of reports are now left out of the Checkup warnings and the quote statistics too, not just the money totals. A practice job should not be chasing you.<\/li>\n<li>New: invoice history. An invoice is no longer something that quietly changes under the customer. You can cancel one with a short note saying why, and a customer who opens an older link is told it was cancelled and shown the replacement instead of a dead page.<\/li>\n<li>Changing a job's billable amount now looks for invoices already out and asks what you want to do about them, rather than leaving the customer holding a number you no longer agree with. Reissue at the new amount, leave it as it is, or put the billable amount back the way it was.<\/li>\n<li>Fixed: invoice numbers on a job could repeat after a deletion, so two different invoices could go out carrying the same number.<\/li>\n<li>Fixed: the web address on a quote you text or email carried an old name. New quote links read paintclarity. Every link you have already sent still works.<\/li>\n<li>Hours and Invoices are now in the More Actions menu on a job, and each one opens straight to that section instead of dropping you at the top of the Financials screen.<\/li>\n<li>The job actions menu is now in the same order everywhere: the Jobs page in either view, the job search, and the job itself. It used to be three menus that almost agreed.<\/li>\n<li>Fixed: the More Actions menu on a job pushed the page down as it opened, so whatever you were aiming at moved out from under you.<\/li>\n<\/ul>\n\n<h4>1.2.059<\/h4>\n\n<ul>\n<li>New: a quote request form for your own website. Paste one shortcode onto your contact page and a homeowner asking for a quote becomes a record you can work, instead of an email you have to remember to answer. Stacked or side by side, so it fits a contact page or a narrow strip off a menu.<\/li>\n<li>Requests arrive as Leads, and the new ones sit at the top of your Jobs page where you cannot miss them. There is a Leads screen too, with everything you have received: new, converted, dismissed and junk.<\/li>\n<li>Convert to Request turns a lead into a real request with the customer attached and the form already filled in. If the person already looks like a customer you have, PaintClarity shows you the two records side by side and asks whether it is the same person before it links them. Nothing is saved until you create the request, so you can back out at any point.<\/li>\n<li>You choose what the form asks for. Email, phone, property address, type of work and how they prefer to be reached can each be required, optional or left off, and you can add up to six questions of your own.<\/li>\n<li>Junk requests are flagged and kept, never thrown away. Four checks run on every submission, and not one of them can lose you a real customer: anything they catch goes to your Spam list where you can put it back. Flagged requests older than 30 days are deleted, which you can change or switch off.<\/li>\n<li>The form uses your own country's wording. A Canadian shop asks for a Province and a Postal Code, a UK shop for a County and a Postcode, the same as the New Request form already does.<\/li>\n<li>Fixed: a customer who gave you their phone number one way and later another way could end up with two records. \"941-555-1234\" and \"(941) 555-1234\" are now recognized as the same number.<\/li>\n<li>Fixed: a customer's state or region was limited to two letters, which is fine for the United States and cut \"Greater London\" down to \"Gr\" everywhere else.<\/li>\n<li>Quote requests are covered by the privacy tools like everything else. They are included when you export what you hold about a customer, and deleted when you erase it.<\/li>\n<li>You choose how you hear about a new request: an email as each one arrives, one summary a day, or nothing at all. As each one arrives is the default, because calling a homeowner back the same day is most of what wins the job. The once-a-day summary is there for a shop that would rather read them together, and for a web host that limits how much mail a site may send. A summary is only sent on a day that actually had requests.<\/li>\n<li>Requests are never paused, only the emails about them. There is now a daily ceiling as well as the hourly one, so a form being hit all day cannot spend your host's whole mail allowance.<\/li>\n<li>Renamed on the Checkup screen: \"Leads going cold\" and \"Leads with no quote yet\" are now \"Requests going cold\" and \"Requests with no quote yet\", so Leads means one thing across the app.<\/li>\n<\/ul>\n\n<h4>1.2.058<\/h4>\n\n<ul>\n<li>Receipts are now stored privately. Every receipt photo used to sit in your WordPress media library, which means it had a web address that worked for anyone who had it, signed in or not. Receipts now live in a protected folder and open only for someone signed in with permission to see them. This applies to job receipts, overhead receipts and vehicle receipts alike.<\/li>\n<li>If you already have receipts in the media library, PaintClarity does not move them behind your back. A card on the Checkup screen tells you how many are waiting and moves them in batches when you press the button. You can stop after any batch and carry on later; receipts keep working the whole time, moved or not. The card disappears when there is nothing left to move.<\/li>\n<li>New: supporting documents on any receipt. A receipt often does not explain itself, so you can attach the extra paperwork that does: the itemized order page behind a reference-number receipt, a card statement line, a warranty. Photos and PDFs both work, each with an optional label saying what it shows. Stored in the same protected folder as the receipts themselves.<\/li>\n<li>New: a duplicate check when you save a receipt. If the same purchase already looks to be on the books, the save stops and shows you what it matched, with a tick to save it anyway if it really is separate. It matches on the same date and amount whatever the vendor name says, and on the same vendor and amount within three days, because store receipts get entered late.<\/li>\n<li>The duplicate check looks across job receipts, overhead and the vehicle log together. Filing the same receipt once against a job and once as overhead is the expensive version of the mistake, because it inflates that job's cost and the year's deductions at the same time, and neither screen would ever have shown you the other.<\/li>\n<li>A painter is only ever told about their own receipts. The check reads only what the person saving is allowed to see, so it can never describe an expense they could not have opened themselves.<\/li>\n<li>Fixed: a receipt form that stopped you with a warning used to fold itself away behind the \"Scan Receipt with AI \/ Manually Enter\" buttons, hiding both the details you had typed and the box you needed to tick. This affected the existing fuel warning too, on all three receipt forms.<\/li>\n<li>Fixed: font sizes on a quote were inconsistent. Several blocks rendered two sizes larger than the rest of the document. Terms and conditions stay smaller, as intended.<\/li>\n<li>PDF receipts now print with the rest of the report on the Vehicle report and the job coversheet, not just the Business report.<\/li>\n<\/ul>\n\n<h4>1.2.057<\/h4>\n\n<ul>\n<li>New Production Rates page, under Tools in the menu as \"Rates\". It works out how much area one painter covers in one day from the jobs you have already finished: your logged hours and the paintable area on each job. The headline is your own figure, with a breakdown per job category beside it, and the rate you quote from underneath so you can see the two next to each other.<\/li>\n<li>Every finished job in the window is listed, not just the ones that can be scored. A job with no paintable area recorded shows an \"Add area\" link instead of a rate, so it is obvious what is missing rather than quietly absent. You can look at the last 5, 10, 20 or 50 completed jobs.<\/li>\n<li>A job whose numbers look impossible, under 25 or over 2,000 sq ft per painter per day, is set aside in its own section with the reason explained, and is not counted. Usually it means an area was typed with a digit too many, or hours have not been logged yet.<\/li>\n<li>You have the last word on any job. \"Count it anyway\" puts an unusual but real job back in, \"Leave out\" takes a job out, and either can be undone. Four sprayers in a warehouse really do move that fast, and PaintClarity should not argue with you about it.<\/li>\n<li>New Production rate setting under Business &gt; Pricing Rules, with an optional override per job category under Job Categories. The Labor Days &amp; Crew Cost Calculator now starts from that figure and tells you which one it used and where to change it, instead of a general number out of a book.<\/li>\n<li>New Paintable Area field on the job form, and the Paint Calculator can save its own result straight onto the job with one click, which is what feeds the rates above. The calculator now confirms the save instead of leaving you wondering whether the click landed.<\/li>\n<li>Fixed: on a site set to metric units, the Paintable Area field could refuse to let the job form save at all.<\/li>\n<\/ul>\n\n<h4>1.2.056<\/h4>\n\n<ul>\n<li>New installs now start with the calculators that suit each job category instead of just one. Residential Painting opens a quote with the Paint Calculator, the Paint Quantity Calculator and the Cabinet &amp; Trim Calculator; Commercial Painting gets Paint, Paint Quantity and Labor Days. The category screen has allowed several calculators for a while, but every category still shipped naming only one, so four of the five sat unused in settings where nobody looks.<\/li>\n<li>The Fence and Handyman category templates were shipping with no calculator at all. Fence now comes with the Deck\/Fence Staining Calculator it was built for, and Handyman with the Labor Days &amp; Crew Cost Calculator.<\/li>\n<li>If you have already set your own calculators, nothing changes. Your selections are left exactly as you made them.<\/li>\n<\/ul>\n\n<h4>1.2.055<\/h4>\n\n<ul>\n<li>Fixed five links in the app that pointed at pages which no longer exist. The Help Center button on the Help page, the \"how do I do a full backup\" link on the Business page, the plugin author link, and two of the starter links on the Resources page (the PaintClarity Software Tutorial and Getting the Most out of PaintClarity) were all still using addresses from before the plugin was renamed, so each one landed on a \"page not found\".<\/li>\n<li>If your Resources page already has those two starter links, they are corrected for you on update. A link you edited or replaced yourself is left alone.<\/li>\n<\/ul>\n\n<h4>1.2.054<\/h4>\n\n<ul>\n<li>Export Personal Data now includes everything it should: the state or region on the address, the inclusions and exclusions, the itemized lines as the customer saw them on their quote, the reason they gave if they declined, and when and how many times they opened their quote link.<\/li>\n<li>Erase Personal Data now clears the state on the customer record and on every job, and the reason the customer gave for declining. Those were being left behind.<\/li>\n<li>Erasing now also tells you if scope or internal notes on the customer's jobs were kept, since free text can name someone anywhere inside it and no automated pass can tell.<\/li>\n<\/ul>\n\n<h4>1.2.053<\/h4>\n\n<ul>\n<li>Fixed, and important if you ever run a data request: Export and Erase Personal Data were following the wrong link from a customer to their jobs. PaintClarity stores two different ids on a job, one for the customer record and an older one for a WordPress user account, and the data tools were reading the older one. A request could therefore miss jobs that did belong to the person, and in an erase it could have reached records belonging to someone else. Both now follow the customer record. If you ran an export or erase on 1.2.052, please run it again.<\/li>\n<\/ul>\n\n<h4>1.2.052<\/h4>\n\n<ul>\n<li>Quote and invoice pages are now blocked from search engines, so a link you email a customer stays out of search results even if it gets forwarded or shared.<\/li>\n<li>Data requests: Tools -&gt; Export Personal Data and Tools -&gt; Erase Personal Data now search PaintClarity by email address, covering the customer record, jobs, quotes, invoices, payments and the emails you sent them.<\/li>\n<li>Erasing a customer anonymizes rather than deletes. Quotes, invoices and payments keep their amounts and dates and lose the personal details, so your books stay intact, and links previously sent to that customer stop working.<\/li>\n<li>Suggested privacy policy wording for what PaintClarity stores and who else sees it now appears under Settings -&gt; Privacy -&gt; Policy Guide.<\/li>\n<li>New Settings -&gt; Privacy &amp; Customer Data section with three optional retention limits, all off by default. Everything here is in the free plugin.<\/li>\n<\/ul>\n\n<h4>1.2.051<\/h4>\n\n<ul>\n<li>Job search results: the job title and its status chips were indented further than the rest of the card. Everything in the card lines up now.<\/li>\n<li>Not Won: the Call, Text and Email strip renders as the segmented control it was meant to be in the row view as well as the board, and the row has room above it. In the row view it had been drawing as three plain links run together.<\/li>\n<li>File a Receipt, job expenses and the vehicle log: the \"Scan Receipt with AI\" and \"Manually Enter\" buttons are spaced apart. They were separated by a left margin, which does nothing once the pair wraps onto two lines, which on a phone is always.<\/li>\n<\/ul>\n\n<h4>1.2.050<\/h4>\n\n<ul>\n<li>Sign out. The app had no logout anywhere: an Administrator could leave through WP Admin, but a Painter\/Helper had no way off the app at all. It now sits next to your name at the foot of the menu, on both the sidebar and the phone menu, and signing out clears the cached job pages so a shared phone does not keep the last person's work readable.<\/li>\n<li>Jobs: the Not Won drawer is in the row view as well as the board. A lost lead appears in no column and no row section, so that drawer is the only route back to one, and it was only ever drawn under the board.<\/li>\n<li>Jobs: the Communication section is on the board view as well as the rows view, including its \"nothing logged yet\" state.<\/li>\n<li>Vehicle Log: every field on the page is one height again. Most of the form was rendering at 34px while a few fields came out at 45px, so a single row could hold a tall Date next to a short Driver. The Log and Report filter row is deliberately left compact.<\/li>\n<li>File a Receipt: the two Receipt search date boxes were taller than the Search button beside them. All three now match.<\/li>\n<\/ul>\n\n<h4>1.2.049<\/h4>\n\n<ul>\n<li>Jobs board: removed the white card that wrapped the three columns. The screen was three surfaces deep, a card holding tinted columns holding job cards, and the outer one carried no information. The columns now sit on the page like the row view's sections do.<\/li>\n<\/ul>\n\n<h4>1.2.048<\/h4>\n\n<ul>\n<li>Editing a job or request now shows where it sits and lets you move it: Back to Request, Mark Completed, Reopen as Job, Mark as Not Won, whichever apply. The same buttons the board has, on the one screen dedicated to editing the record, which had none of them.<\/li>\n<li>A request marked Not Won can be reopened. It drops off the board entirely, so until now there was no obvious way back.<\/li>\n<\/ul>\n\n<h4>1.2.047<\/h4>\n\n<ul>\n<li>Jobs: the Actions menu on the \"Needs Your Attention\" rows (Completed Jobs With a Balance Due, Completed Jobs Missing Expenses) opened far away from the row you clicked, usually off the visible screen. It now opens directly under its row.<\/li>\n<li>A job with no category no longer has the word \"Uncategorized\" pushed in front of its name anywhere it is listed. \"Deck stain\", not \"Uncategorized Deck stain\".<\/li>\n<\/ul>\n\n<h4>1.2.046<\/h4>\n\n<ul>\n<li>Painters\/Helpers: \"Can manage financials\" now means what it says. It gives full financial access to the jobs that person is assigned to, and no longer opens the business-wide Profits and Rankings pages, which showed year-to-date profit, margin, every job in the book, and each crew member's profit share. Per-job access is unchanged.<\/li>\n<li>Painters\/Helpers: Expenses, Business and Checkup are no longer shown to a painter. They led nowhere: clicking one quietly reloaded My Jobs.<\/li>\n<li>Painters\/Helpers: Help now opens for a painter instead of reloading My Jobs.<\/li>\n<li>A job whose category is missing or was deleted shows \"Uncategorized\" instead of a bracketed number. Job titles read \"Job #14 Kitchen repaint\" rather than \"Job #14 [0] Kitchen repaint\", and the same fix reaches the quote PDF headline and customer emails.<\/li>\n<li>Permission messages are a proper card with a heading and a way back to your jobs, instead of one sentence on a blank page.<\/li>\n<li>New Quote: the \"add a Google Maps key in Settings\" link only shows to someone who can open Settings. Everyone else is told to ask the office.<\/li>\n<\/ul>\n\n<h4>1.2.045<\/h4>\n\n<ul>\n<li>Jobs board: the empty Requests column no longer shows its own \"+ New Request\" button. It pointed at the same screen as the New Job button at the top of the page, so the same action was offered twice within one scroll. The column now just says what lands there.<\/li>\n<\/ul>\n\n<h4>1.2.044<\/h4>\n\n<ul>\n<li>New Quote: Exclusions is now a formatted box like the Description of Work, with its own bold, italic, list and heading controls. Paragraphs, bullets and emphasis survive all the way to the quote the customer reads.<\/li>\n<li>New Quote: the Situational clauses checklist moved inside the Exclusions field, between the toolbar and the box, matching the Standard lines strip added to the Description of Work in 1.2.043. Tick a clause and it appears in the box right underneath.<\/li>\n<li>Exclusions saved before this update are plain text and keep their line breaks exactly as they were, on the job view and on the customer's quote. Nothing needs to be retyped.<\/li>\n<\/ul>\n\n<h4>1.2.043<\/h4>\n\n<ul>\n<li>New Quote: the Scope wording helper is now part of the Description of Work field itself, sitting between the formatting toolbar and the text box as a \"Standard lines\" strip. It had been above the field, then below it, and neither read right, because it writes into that field and belongs to it rather than beside it. Tick a line and you watch it appear in the box directly underneath.<\/li>\n<li>New Quote: more room between Remove and \"+ Add another option\" in the add-ons, so the two stop reading as one split control when one of them deletes a row.<\/li>\n<\/ul>\n\n<h4>1.2.042<\/h4>\n\n<ul>\n<li>New Quote: the \"Show an itemized price breakdown to the customer?\" question moved inside the itemize panel, so it appears when you open the panel to itemize. A quote that already has it ticked opens the panel by itself, so the setting is never switched on and out of sight.<\/li>\n<li>New Quote: the green \"Prefilled from this job's most recent quote\" banner is now a tooltip on the Description of Work label, where the question actually occurs to you. Same words, one less line of page.<\/li>\n<li>New Quote: the Description of Work box is 420px tall, up from 220px, and Exclusions is 280px, up from about 96px. Both are minimums, so they still grow with what you type.<\/li>\n<li>New Quote: Optional add-ons is an accordion. It folds away on a quote that has none and opens itself, with a count, on a quote that has some.<\/li>\n<li>New Quote: a little more room under the AI Job Photo Estimator link.<\/li>\n<li>The Price List reference window is readable on a phone. It was missing the one tag that tells a phone to lay a page out at screen width, so the whole thing was being rendered wide and then zoomed out to fit.<\/li>\n<\/ul>\n\n<h4>1.2.041<\/h4>\n\n<ul>\n<li>New Quote: every tool in the Quote Tools drawer has its own icon, and the calculators dropped the \"Use The\" from their names. \"Use The Paint Calculator\" is now \"Paint Calculator\".<\/li>\n<li>New Quote: fixed a real problem from the last release. After running a calculator the page reloads and reopens it, but the drawer had closed, so the answer was computed and invisible. The drawer now opens itself whenever a calculator is coming back with numbers.<\/li>\n<li>New Quote: the Scope wording helper sits directly above Exclusions, so the two wording libraries stand together. Ticking a line now says what it inserted and where, because the description is above it.<\/li>\n<li>New Quote: unticking the last line of standard wording no longer leaves a blank line at the foot of the customer's description.<\/li>\n<li>The Request acceptance rate moved off the New Quote screen and onto Business, in its own Request Performance section above Outstanding Balances. An all-time rate is  &hellip;<\/li>\n<\/ul>","raw_excerpt":"Run your painting business from WordPress: quotes to invoices, crews, scheduling, customers, photos, profit reports, optional AI and card payments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345744"}],"author":[{"embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/paintops"}],"wp:attachment":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345744"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345744"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345744"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345744"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345744"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}