{"id":388802,"date":"2026-10-31T19:42:03","date_gmt":"2026-10-31T19:42:03","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/contractcue\/"},"modified":"2026-10-31T19:41:29","modified_gmt":"2026-10-31T19:41:29","slug":"noticewatch","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/noticewatch\/","author":23550006,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.2","stable_tag":"0.4.2","tested":"7.1.4","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Noticewatch Contract Register","header_author":"SportstatsWP","header_description":"A contract register that calculates notice deadlines and reminds the right people in time, so no contract renews by mistake.","assets_banners_color":"f1f1ed","last_updated":"2026-10-31 19:41:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/sportstatswp.com\/noticewatch\/","header_author_uri":"https:\/\/sportstatswp.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":149,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.2":{"tag":"0.4.2","author":"sportstatswp","date":"2026-10-31 19:41:29","revision":3777337}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3777337,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3777337,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3777337,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3777337,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3777337,"resolution":"1","location":"assets","locale":"","width":1400,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3777337,"resolution":"2","location":"assets","locale":"","width":1400,"height":960},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3777337,"resolution":"3","location":"assets","locale":"","width":1400,"height":980},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3777337,"resolution":"4","location":"assets","locale":"","width":1400,"height":780},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3777337,"resolution":"5","location":"assets","locale":"","width":1400,"height":760},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3777337,"resolution":"6","location":"assets","locale":"","width":1400,"height":640},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3777337,"resolution":"7","location":"assets","locale":"","width":1400,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3777337,"resolution":"8","location":"assets","locale":"","width":1400,"height":820},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3777337,"resolution":"9","location":"assets","locale":"","width":1400,"height":1150}},"screenshots":{"1":"The contract register: what needs attention now, colour-coded by how close the notice deadline is.","2":"One contract with its key dates, contacts, reminders, files and history.","3":"The contract form shows the notice deadline and reminder date while you type.","4":"The reminder email with one-click decisions.","5":"The recipient confirms the decision without logging in.","6":"The reminder log shows what was sent and what people decided.","7":"Upcoming deadlines on the WordPress dashboard.","8":"Import from a spreadsheet and export to Excel.","9":"Settings with a system check for file protection and the daily run."}},"plugin_section":[262246],"plugin_tags":[289967,264060,289968,11131,197618],"plugin_category":[],"plugin_contributors":[280322],"plugin_business_model":[],"class_list":["post-388802","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-contract-management","plugin_tags-contracts","plugin_tags-notice-period","plugin_tags-reminders","plugin_tags-renewals","plugin_contributors-sportstatswp","plugin_committers-sportstatswp"],"banners":{"banner":"https:\/\/ps.w.org\/noticewatch\/assets\/banner-772x250.png?rev=3777337","banner_2x":"https:\/\/ps.w.org\/noticewatch\/assets\/banner-1544x500.png?rev=3777337","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/noticewatch\/assets\/icon-128x128.png?rev=3777337","icon_2x":"https:\/\/ps.w.org\/noticewatch\/assets\/icon-256x256.png?rev=3777337","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-1.png?rev=3777337","caption":"The contract register: what needs attention now, colour-coded by how close the notice deadline is."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-2.png?rev=3777337","caption":"One contract with its key dates, contacts, reminders, files and history."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-3.png?rev=3777337","caption":"The contract form shows the notice deadline and reminder date while you type."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-4.png?rev=3777337","caption":"The reminder email with one-click decisions."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-5.png?rev=3777337","caption":"The recipient confirms the decision without logging in."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-6.png?rev=3777337","caption":"The reminder log shows what was sent and what people decided."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-7.png?rev=3777337","caption":"Upcoming deadlines on the WordPress dashboard."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-8.png?rev=3777337","caption":"Import from a spreadsheet and export to Excel."},{"src":"https:\/\/ps.w.org\/noticewatch\/assets\/screenshot-9.png?rev=3777337","caption":"Settings with a system check for file protection and the daily run."}],"raw_content":"<!--section=description-->\n<p>Most contracts are not forgotten because they are hard to manage. They are forgotten because nobody notices that the last day to give notice has passed, and then they renew for another year.<\/p>\n\n<p>Noticewatch keeps all your contracts in one register inside WordPress and works out the dates that matter:<\/p>\n\n<ul>\n<li><strong>Notice deadline<\/strong> \u2013 the last day you can give notice, calculated from the end date and the notice period.<\/li>\n<li><strong>Automatic renewal<\/strong> \u2013 when a contract renews by itself, Noticewatch rolls it forward and calculates the next deadline.<\/li>\n<li><strong>Reminder date<\/strong> \u2013 how many days before the deadline the responsible person should be reminded.<\/li>\n<\/ul>\n\n<p>On the reminder date the responsible person gets an email with three buttons: keep the contract, give notice or renegotiate. One click records the decision, without logging in. If nobody acts, a final reminder goes out a few days before the deadline.<\/p>\n\n<p>Built for small businesses, associations and housing cooperatives that have dozens of contracts \u2013 cleaning, elevators, insurance, electricity, software \u2013 and no lawyer keeping track of them.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Contract register with counterparty, type, reference, responsible person and notes<\/li>\n<li>Notice periods in days, weeks, months or years, with correct end-of-month handling<\/li>\n<li>Automatic renewal with the next deadline calculated for you<\/li>\n<li>Open-ended contracts with an optional review date<\/li>\n<li>Reminder emails with one-click decisions: keep, give notice or renegotiate<\/li>\n<li>Final reminder a few days before the deadline if nobody has acted<\/li>\n<li>Reminder log showing what was sent, to whom and what they decided<\/li>\n<li>Dashboard widget with the deadlines in the next 90 days<\/li>\n<li>Import from a spreadsheet (CSV) with a preview before anything is saved, and export to Excel<\/li>\n<li>Colour-coded list: deadline passed, act soon, OK<\/li>\n<li>Counterparties with contacts<\/li>\n<li>Contract files (PDF, Word, Excel, images) in a protected folder that cannot be read from the internet<\/li>\n<li>Change history for every contract<\/li>\n<li>Contract manager role for people who should handle contracts but not the rest of the site<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Noticewatch stores contracts, counterparties and contact details in your own WordPress database and files in your own uploads folder. Reminder emails are sent through your site's own mail setup to the people you choose. Nothing is sent to external services. Noticewatch supports the WordPress tools for exporting and erasing personal data.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Noticewatch \u2192 Settings and check the system check: file protection and the daily check.<\/li>\n<li>Add your first contract under Noticewatch \u2192 Add new.<\/li>\n<\/ol>\n\n<p>On quiet sites, set up a real cron job so the daily check runs on time. Noticewatch \u2192 Settings shows the exact line to use.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20is%20the%20notice%20deadline%20calculated%3F\"><h3>How is the notice deadline calculated?<\/h3><\/dt>\n<dd><p>End of the current term minus the notice period. A contract ending 31 December 2027 with three months' notice has its deadline on 30 September 2027. Months are counted by calendar, so 31 May minus three months is the last day of February.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20contract%20renews%20automatically%3F\"><h3>What happens when a contract renews automatically?<\/h3><\/dt>\n<dd><p>When the notice deadline has passed without notice being given, Noticewatch moves the end of the term forward by the renewal period and calculates the next deadline. The change is recorded in the contract history.<\/p><\/dd>\n<dt id=\"are%20the%20contract%20files%20safe%3F\"><h3>Are the contract files safe?<\/h3><\/dt>\n<dd><p>Files are stored in a randomly named folder with random file names and a rule that blocks direct access. They can only be downloaded by logged-in users with access to contracts. On Nginx servers the rule must be added to the server configuration; Noticewatch \u2192 Settings tests this and shows the rule.<\/p><\/dd>\n<dt id=\"do%20the%20buttons%20in%20the%20reminder%20email%20need%20a%20login%3F\"><h3>Do the buttons in the reminder email need a login?<\/h3><\/dt>\n<dd><p>No. Each button carries a secret one-time code, so the responsible person can decide straight from the email. The page asks for confirmation before anything changes, the code works once and expires after 30 days. Do not forward reminder emails to people who should not act on the contract.<\/p><\/dd>\n<dt id=\"does%20%22give%20notice%22%20send%20the%20notice%20to%20the%20supplier%3F\"><h3>Does \"Give notice\" send the notice to the supplier?<\/h3><\/dt>\n<dd><p>No. It records in Noticewatch that notice is given, so the contract ends after the current term and the reminders stop. You still send the notice to the counterparty in the way the contract requires.<\/p><\/dd>\n<dt id=\"reminder%20emails%20do%20not%20arrive\"><h3>Reminder emails do not arrive<\/h3><\/dt>\n<dd><p>Use Noticewatch \u2192 Settings \u2192 Send test mail. If the test does not arrive, check the spam folder and consider an SMTP plugin, since many hosts block or downgrade mail sent directly from PHP.<\/p><\/dd>\n<dt id=\"can%20i%20move%20my%20contracts%20from%20excel%3F\"><h3>Can I move my contracts from Excel?<\/h3><\/dt>\n<dd><p>Yes. Go to Noticewatch \u2192 Import \/ export, download the template and fill it in, or rename the columns in your own sheet. Save as CSV and upload. You see what will be added, what is skipped and which rows have errors before anything is saved.<\/p><\/dd>\n<dt id=\"who%20can%20see%20the%20contracts%3F\"><h3>Who can see the contracts?<\/h3><\/dt>\n<dd><p>Administrators, and users with the Contract manager role.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>The index.php that protects the file folder is now empty.<\/li>\n<li>Add-ons receive sanitized form input.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>New name: Noticewatch Contract Register (formerly ContractCue).<\/li>\n<li>Contract files are stored through the WordPress uploader.<\/li>\n<li>The page behind reminder mail links loads its stylesheet the WordPress way and checks a nonce before acting.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Supports the WordPress personal data export and erase tools for contacts and reminder recipients, and suggests a privacy policy text.<\/li>\n<li>Hooks for add-ons: more reminder steps, recipients per step, extra panels on contracts and settings.<\/li>\n<li>Table names are passed to the database through prepared statements.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>New look: softer, rounder admin screens, reminder email and confirmation page.<\/li>\n<li>Noticewatch logo in the admin menu, reminder email and confirmation page.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Import contracts from CSV with a preview, duplicate detection and clear error messages per row.<\/li>\n<li>Export contracts to CSV for Excel, Numbers and Google Sheets.<\/li>\n<li>Getting started guide on an empty register.<\/li>\n<li>Periods read naturally: \"1 month\", not \"1 months\".<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Reminder emails with one-click keep, give notice and renegotiate buttons.<\/li>\n<li>Final reminder before the deadline, extra recipients and a fallback address.<\/li>\n<li>Reminder log, test mail and a dashboard widget for upcoming deadlines.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First development version: contract register, notice deadlines, automatic renewal, counterparties, protected files and history.<\/li>\n<\/ul>","raw_excerpt":"A contract register that calculates notice deadlines and reminds the right people in time, so no contract renews by mistake.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/388802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=388802"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sportstatswp"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=388802"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=388802"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=388802"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=388802"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=388802"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=388802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}