=== Client Octopus ===
Contributors: codievolt, freemius
Tags: proposals, invoices, client portal, booking, crm
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.4.6
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Capture leads, book calls, send proposals and invoices, collect payments, and manage projects — all from WordPress.

== Description ==

Client Octopus is an all-in-one client workflow plugin for WordPress freelancers and agencies.

Capture leads from your website, let prospects book a call with your calendar synced automatically, create professional proposals with e-signatures and flexible pricing, send standalone or recurring invoices, collect payments through Stripe or PayPal, and manage projects and client delivery through a branded client portal.

Instead of juggling separate tools for lead capture, scheduling, proposals, invoicing, payments, and client delivery, Client Octopus brings the whole workflow together inside the WordPress site you already own.

It connects the key stages in one place: lead capture, call booking with calendar sync, proposals with e-signatures, packages and pricing tiers, standalone and recurring invoices, Stripe and PayPal payments, a branded client portal, projects with milestones and approvals, file sharing and messaging, automated reminders, and webhooks to thousands of other tools.

= Why Client Octopus? =

Most freelancers and agencies juggle several separate tools to run their client workflow — a lead form, a scheduling app, a proposal tool, an invoicing app, and a payment link. Client Octopus replaces all of them with a single WordPress plugin.

Your core client data — leads, proposals, invoices, bookings, and projects — is stored in your own WordPress database rather than locked inside a separate SaaS platform. Optional integrations, like payment processing, calendar sync, or AI writing tools, only send the specific data required for the feature you've chosen to use.

Every feature, broken down by plan, is listed under Features below.

== Features ==

Client Octopus is designed specifically for WordPress freelancers and agencies who want to manage proposals, invoices, and client delivery without relying on external SaaS platforms.

= Free Features =

* Lead Capture — a form on any page via shortcode, with configurable fields, a consent line, optional Cloudflare Turnstile CAPTCHA, rate limits and an auto-reply
* Unlimited clients
* Client Tags — organise and filter your client list, with a duplicate warning on matching email or phone
* Unlimited proposals
* Proposal templates
* Images in proposals — pick from your Media Library, at full, wide or half width
* Package Selector pricing — offer tiers with optional add-ons; the client picks and sees the total update live
* Client e-signature on acceptance — the certificate records who signed, when, their IP and device, and a fingerprint of the proposal, so a later edit is reported rather than hidden
* Proposal status tracking (draft, sent, viewed, accepted, declined, expired, completed)
* Client-facing proposal signing and invoice pages
* Client Detail — activity timeline, lifetime value, outstanding balance, and quick actions prefilled with that client
* Standalone invoices — create, send, and manually mark as paid
* Purchase Order numbers — added to a proposal at any point and carried through to every invoice from it
* 20 currencies, with a Default Currency setting. Currencies without decimal places, such as Japanese Yen, are formatted correctly
* VAT Registration Number — set once, filled in automatically on new invoices
* Recurring invoices — weekly, monthly, quarterly or yearly billing profiles, created manually or on acceptance of a Recurring proposal
* Payment Plans — split a proposal into equal instalments; the client sees the schedule before accepting and each one is invoiced automatically
* Automated reminders — proposals (not viewed, not accepted, expiring) and overdue invoices. Clients can unsubscribe from reminders without affecting invoices, receipts or proposals
* Privacy requests — works with WordPress's own Tools → Export/Erase Personal Data. See Privacy below
* Translatable emails, settings screens and public booking and lead forms, with a translation template included
* Import Clients from CSV, with your own column mapping
* Export Clients, Leads, Invoices, and a client's full transaction history to CSV
* Built on the WordPress REST API — standard WordPress data, not a closed black box

= Pro Features =

* Everything in Free plus...
* Call Booking — a booking form via shortcode, using your weekly availability, buffer time, minimum notice and booking window. Confirmation and reminder emails carry a calendar invite
* Calendar Sync — Google, Microsoft 365/Outlook or Apple iCloud. Existing events block your availability, and confirmed bookings are pushed out as real events
* Stripe or PayPal collection on proposals, and a Pay Now button on invoices (auto-marked paid via webhook)
* Auto-charge for recurring invoices — charge the client's saved card each cycle instead of sending a link
* Client portal — magic-link or password sign-in, no WordPress account needed; proposals, invoices and payments
* Testimonials — automatically ask once work is paid up, and collect responses in one place
* AI writing tools for proposal content — 100 requests per month on Pro, 500 on Agency
* Revenue analytics, with a Reporting Currency that converts other currencies using daily exchange rates
* Outbound webhooks — 18 events across the proposal, invoice and lead lifecycle (Zapier, Make, Slack)

= Agency Features =

* Everything in Pro plus...
* Projects & Milestones — accepted proposals become projects; submit milestones for client approval, with progress calculated automatically
* Team Members — up to 10 seats with roles (Admin, Editor, Viewer). Your own account takes the first, so you can invite 9 others
* Client Messaging — a threaded conversation per project, with read tracking and email notification on reply
* File Sharing — share files through the portal, 1 GB included, every download served securely
* Approval Workflows — request sign-off on a deliverable; the client approves or rejects with a comment from their portal

== Installation ==

1. Upload the `clientoctopus` folder to `/wp-content/plugins/`
2. Activate the plugin through the WordPress Plugins menu
3. The setup wizard launches automatically
4. Configure your branding and settings
5. Upgrade to Pro or Agency at any time via Client Octopus → Account

== FAQ ==

= Does Client Octopus support payments? =

Yes. On the Pro and Agency plans, you can accept payments on proposals and standalone invoices via either Stripe or PayPal — choose whichever gateway you prefer in Settings. Clients always see a single "Pay Now" button that routes to whichever gateway you've configured. The exception is a proposal set to Recurring billing — it has no direct payment option; billing happens through the recurring invoice created when the client accepts, which can itself be set to auto-charge (see "Can I set up automatic recurring invoices?" below) or paid manually each cycle.

= Can clients access a portal? =

Yes, on the Pro and Agency plans. Clients sign in to a branded portal either with an emailed magic link or with a password they set — no WordPress account is needed either way.

The portal differs by plan. On Pro, clients see their proposals, invoices and payments. On Agency it also covers projects, milestones, approvals, file downloads and messaging.

= Does Client Octopus support teams? =

Yes. The Agency plan supports up to 10 team members, each assigned a role (Admin, Editor, or Viewer).

= Can I collect leads before they become clients? =

Yes, on all plans. Embed the lead capture form on any page with the [clientoctopus_lead_form] shortcode. You choose which fields to show and require, add a consent line, and optionally enable Cloudflare Turnstile CAPTCHA and submission rate limits to help prevent automated spam. Every submission lands in a dedicated Leads admin screen where you can track status, mark as contacted, archive, or convert a lead straight into a client record.

= Can I let clients or visitors book a call with me? =

Yes, on the Pro and Agency plans. Add the [clientoctopus_booking_form] shortcode to any page and visitors can book a call based on your configured weekly availability, buffer time, minimum notice, and maximum booking window. Both you and the client get a confirmation email with a calendar invite, followed by a 1-hour reminder.

= Does Client Octopus sync with my calendar? =

Yes, on the Pro and Agency plans. Connect Google Calendar, Microsoft 365/Outlook, or Apple iCloud in Settings. Once connected, existing events on that calendar automatically block matching slots in your booking availability, shown with their real event title — and every call booked through Client Octopus is pushed out as a real event (including your meeting link) on every calendar you've connected, so you never have to add it yourself.

= Is multisite supported? =

No. Client Octopus licences are single-site only.

= Does Client Octopus require a third-party SaaS? =

No. Client Octopus runs directly inside WordPress and doesn't require a separate SaaS platform to work. Optional integrations — Stripe or PayPal for payments, Google Calendar, Microsoft 365, or Apple iCloud for calendar sync, AI writing tools, Cloudflare Turnstile for lead form spam protection, and Frankfurter for Analytics currency conversion — only connect when you explicitly enable and use that feature. Freemius handles licensing for the paid plans. Every one of these is described in full under External Services below.

= Are AI costs included? =

Yes, within a monthly allowance — 100 AI requests per month on Pro, and 500 per month on Agency. There is no separate AI bill and you don't supply your own API key; the allowance is part of the plan. Your current usage against the allowance is shown on the Plan & Usage screen.

= Can clients e-sign proposals? =

Yes. When a client accepts a proposal, they are prompted to enter their name and confirm a checkbox in a signing modal. A signing certificate is saved to the proposal record and shown in the admin, recording who signed, when, the IP address and device they signed from, and a fingerprint of the proposal exactly as it stood at that moment — so if the proposal is edited afterwards, the certificate says so rather than silently appearing to cover the new version.

Note this is a record of acceptance, not a qualified or notarised electronic signature in the sense of eIDAS or the ESIGN Act. It is the same category of evidence most proposal tools provide.

= How is this self-hosted, and how is pricing different from SaaS alternatives? =

Client Octopus is a self-hosted WordPress plugin, not a SaaS platform — your proposals, invoices, and client data are stored in your own WordPress database. Pro is $9.99/month or $89/year, and Agency is $24.99/month or $229/year, with no per-user charges and no limits on the number of clients or proposals you manage.

= Can I send invoices without a proposal? =

Yes. Standalone invoices are available on all plans. Create an invoice, assign a client, add line items with VAT and discount options, and send it directly. Free plan invoices can include your own payment instructions (e.g. bank transfer details) in the Notes field; Pro and Agency invoices can additionally show a "Pay Now" button (Stripe or PayPal, whichever is configured) on the client's invoice page.

= What currencies are supported? =

Twenty: British Pound, US Dollar, Euro, Canadian Dollar, Australian Dollar, Japanese Yen, Swiss Franc, New Zealand Dollar, Swedish Krona, Norwegian Krone, Danish Krone, Singapore Dollar, Hong Kong Dollar, Indian Rupee, Polish Zloty, Czech Koruna, Brazilian Real, Mexican Peso, South African Rand and South Korean Won. Set a Default Currency in Settings and new proposals and invoices open in it; you can still change the currency on any individual record. Analytics converts all of them into one reporting currency using daily exchange rates.

= Is Client Octopus translatable? =

Partly. All emails, the settings and plan screens, and the public booking and lead capture forms use translatable text, and a translation template (.pot) ships with the plugin. The React-based admin screens, the client portal and the client-facing proposal view are not yet translatable — their text is prepared for translation but the catalogues do not load, so they still display in English.

= Can clients stop receiving emails? =

Yes. Reminder emails and testimonial requests carry an unsubscribe link, and a preference page where the client can switch each type on or off. Essential emails are never affected — proposals, invoices, payment receipts, booking confirmations and portal sign-in links always send, because they concern work already agreed.

= How do I handle a GDPR or data deletion request? =

Use WordPress's own Tools → Export/Erase Personal Data and search by the person's email address. Client Octopus covers client records, leads, booked calls, proposal signatures, project messages and approval comments. See the Privacy section below for exactly what an erasure deletes and what it keeps.

= Can I set up automatic recurring invoices? =

Yes, on all plans. Create a recurring invoice profile for a client, choose weekly, monthly, quarterly, or yearly billing, and Client Octopus automatically generates and sends a fresh invoice each cycle. By default the client pays each one manually via the same Pay Now flow as any other invoice. You can also mark a proposal itself as Recurring — accepting it automatically creates the recurring profile for you, with no manual setup.

On the Pro and Agency plans, you can additionally turn on auto-charge for a profile: the client's first invoice is still paid manually (which securely saves their Stripe or PayPal payment method), and every invoice after that is charged automatically with no action needed from the client. If a charge is declined, both you and the client are notified and it's retried a few times before the profile pauses itself so you can follow up.

== Screenshots ==

1. Send branded proposals with pricing breakdowns and e-signature acceptance
2. Give clients a branded portal with proposals, invoices, projects, and payments at a glance
3. Branded client invoices with one-click Print / Save as PDF
4. Create professional proposals fast with guided templates
5. Let clients track every payment in one place — proposal deposits and invoice payments
6. Create invoices in minutes — client, line items, discounts, and VAT
7. Manage projects, milestones, approvals, and payment status together
8. Give clients simple, secure access — magic link or password sign-in
9. See your plan, usage and full feature access at a glance on the Plan & Usage dashboard
10. Connect Client Octopus to thousands of apps with webhooks

== External Services ==

Client Octopus is designed to run primarily within WordPress. Some optional features connect to third-party services, and these connections are only used when the relevant feature is enabled or used:

**Stripe**

Used to process client payments on proposals and invoices. The plugin creates a Stripe Checkout Session on your account and redirects the client to Stripe's hosted page — card details are entered on Stripe's servers and never stored in WordPress. Your API keys are held in the WordPress options table and sent only to Stripe. If auto-charge is enabled on a recurring profile, the first payment also saves a customer ID and payment method ID (never the card number) so later invoices can be charged without the client re-entering it.

- Service: Stripe, Inc.
- Data sent: payment amount, currency, project or invoice description, and client email when a payment session is created. If auto-charge is enabled, a Stripe customer ID and payment method ID are stored after the first payment and sent back to Stripe to request each subsequent automatic charge. Stripe webhook events (payment completion) are received and verified using your webhook secret.
- Terms of Service: https://stripe.com/legal/ssa
- Privacy Policy: https://stripe.com/privacy

**PayPal**

An alternative to Stripe, used if you select it as your payment provider. The plugin creates a PayPal order on your account and redirects the client to PayPal's hosted page — payment details are entered on PayPal's servers and never stored in WordPress. Your Client ID and Secret are held in the WordPress options table and sent only to PayPal. If auto-charge is enabled on a recurring profile, the first payment also saves a Vault ID, customer ID and the payer's email so later invoices can be charged without re-approval.

- Service: PayPal, Inc.
- Data sent: payment amount, currency, and a proposal or invoice reference when an order is created. If auto-charge is enabled, a PayPal vault ID, customer ID, and the payer's email address are stored after the first payment and sent back to PayPal to request each subsequent automatic charge. PayPal webhook events (order approval and payment capture) are received and verified using PayPal's own signature-verification API.
- Terms of Service: https://www.paypal.com/us/legalhub/useragreement-full
- Privacy Policy: https://www.paypal.com/us/legalhub/paypal/privacy-full

**Client Octopus Relay**

The AI writing tools and Google/Microsoft Calendar Sync route through a relay operated by the plugin author. It authenticates your licence and either forwards the request to an AI model or manages your connected calendar. A plugin on thousands of sites cannot register its own Google/Microsoft OAuth application per install, so a single relay-owned app is used and your calendar tokens are held on the relay rather than in your WordPress database. Both features run only when you use an AI action, or connect Google Calendar or Microsoft 365 in Settings.

- Service: clientoctopus.com (operated by codievolt)
- Data sent (AI writing requests): the text prompt you submit (proposal content or instructions) and your licence key, which authenticates the request and is used to enforce your plan's monthly rate limit. No site URL or admin email is transmitted for AI requests.
- Data sent (licence sync): separately, once per day, the plugin sends your licence key and account email to the same relay to keep your plan status in sync. This happens automatically in the background on Pro/Agency plans and is not tied to any explicit AI action.
- Data sent (Calendar Sync — Google/Microsoft only): connecting Google Calendar or Microsoft 365 in Settings authorises the relay to store the resulting OAuth access/refresh tokens on your behalf. On each sync, the relay uses those tokens to read busy time (start/end and event title) from your connected calendar, and to create or delete a calendar event when a booking is made or cancelled. This only happens for a provider you've explicitly connected.
- Privacy Policy: https://clientoctopus.com/privacy-policy/

**Apple iCloud (CalDAV)**

If you connect Apple iCloud in Settings, the plugin talks to Apple's calendar servers directly using the Apple ID and app-specific password you provide — unlike Google/Microsoft, this does not go through the relay. The password is encrypted before being stored. Each sync reads busy time (start/end and event title) and creates or deletes an event when a booking is made or cancelled. Only runs if you connect an account.

- Service: Apple Inc.
- Data sent: your Apple ID and app-specific password, sent only to caldav.icloud.com to authenticate each request, plus calendar event data (times and titles) read from or written to your connected iCloud calendar.
- Terms of Service: https://www.apple.com/legal/internet-services/icloud/
- Privacy Policy: https://www.apple.com/legal/privacy/

**Cloudflare Turnstile**

If you enable Turnstile as the CAPTCHA provider for the lead capture form ([clientoctopus_lead_form] shortcode), Client Octopus verifies each form submission with Cloudflare before saving it, to block automated spam. This only runs when Turnstile is configured in Settings — it is off by default.

- Service: Cloudflare, Inc.
- Data sent: the Turnstile response token, the visitor's IP address, and your Turnstile secret key, sent server-side to Cloudflare's siteverify endpoint when a lead capture form is submitted.
- Terms of Service: https://www.cloudflare.com/website-terms/
- Privacy Policy: https://www.cloudflare.com/privacypolicy/

**Frankfurter (Exchange Rate Data)**

If you have set a Reporting Currency in Settings that's different from GBP, Client Octopus fetches daily exchange rates from Frankfurter (a free, keyless exchange-rate API backed by European Central Bank reference rates) to convert proposal, invoice, and payment figures for display in Analytics. This only starts once you've actually chosen a non-GBP Reporting Currency — it never runs on its own. No personal data, licence key, or site information is ever sent — only a request for the current rates between GBP and the plugin's other supported currencies. Rates are cached locally for up to 24 hours. This never affects Client Detail, which always shows each client's real billed currency unconverted.

- Service: Frankfurter (frankfurter.app)
- Data sent: none identifying — only a request for current exchange rates between GBP and the plugin's other supported currencies.
- Terms of Service: https://frankfurter.dev/
- Privacy Policy: Frankfurter publishes no separate privacy policy; its documentation states the API "does not collect or log personal data, IP addresses, or request URLs" — https://frankfurter.dev/

**Freemius**

Client Octopus uses Freemius to manage plan licensing, activation, and upgrades. When you activate a licence key, the site URL, plugin version, and licence key are sent to Freemius to verify your plan and enable the correct feature set.

- Service: Freemius, Inc.
- Data sent: site URL, plugin version, licence key, and basic activation/deactivation events.
- Terms of Service: https://freemius.com/terms/
- Privacy Policy: https://freemius.com/privacy/

== Privacy ==

Client Octopus stores your client data in your own WordPress database. Nothing about your clients is sent anywhere except through the optional integrations described under External Services above, and only when you enable and use them.

**What is stored about the people you work with**

Client records (name, email, company, phone), leads submitted through the lead capture form, booked calls (name, email, phone and any message), the typed name, IP address and device recorded when a client e-signs a proposal, messages a client sends you through the portal, comments they leave on approval requests, and a record of any reminder emails they have unsubscribed from.

**Responding to a privacy request**

Client Octopus plugs into WordPress's own Tools → Export/Erase Personal Data. Searching there by a person's email address covers their client record, leads, booked calls, proposal signatures, project messages, approval comments and email preferences — you do not need to go through the database by hand.

An export returns everything held about that person. An erasure is handled differently depending on the record, because some of it you are legally required to keep:

* Booked calls and messages the client sent are deleted outright.
* Client records, accepted proposals and approval records are kept, but the personal details are removed from them — the name is replaced, the email and phone are cleared, and the IP address recorded at signing is anonymised. These are kept because invoices and payments are raised against them, and accounting records normally have to be retained for several years. What remains is a financial history no longer attached to an identifiable person.
* An unsubscribe record is kept, including the email address, because deleting it would start those emails again. An export reports it.

Files you upload to a project are your own deliverables rather than something the client supplied — the portal is download-only — so they are not included in an erasure.

**Removing everything**

Settings → Advanced has an option to delete all Client Octopus data when the plugin is deleted. It is off by default, so removing the plugin normally leaves your data in place in case you reinstall.

This is a summary rather than legal advice. If you handle personal data in the EU or UK, you remain the data controller for the client information you store.

== Changelog ==

= 1.4.6 =

* Fix: PayPal could not take payment on an invoice in a currency without decimal places, such as Japanese Yen or South Korean Won — the amount was sent with two decimals, which PayPal rejects outright. Auto-charging a recurring profile in those currencies failed the same way, counting as a declined payment and eventually pausing the schedule. The equivalent fault on proposals was fixed in 1.4.1; these two paths were missed.
* Fix: Client invoices showed amounts in currencies without decimal places with a meaningless ".00" on the end — a Yen invoice read "¥17,088.00" throughout, including the total due. Overdue reminder emails did the same. Invoices in currencies that do use decimals are completely unchanged.
* Fix: Saving a new invoice now keeps you in the editor instead of sending you back to the invoice list, so you can carry on working on it. Previously you had to find the invoice you had just created in the list and reopen it.
* Fix: Updating the plugin no longer prints a wall of PHP warnings and database errors on sites configured to display them. Blank lines inside the plugin's table definitions were being read as empty column definitions and turned into malformed queries. Every one of them failed outright, so nothing was ever changed or lost — it just looked alarming.
* New: Time tracking. Start a timer from the new Time screen, or from the clock in the WordPress toolbar on any admin page — it keeps running if you close the tab, because the timer lives on your site rather than in the browser. Log time after the fact too, assign it to a client and, on Agency, to a project, and mark anything non-billable. Durations can be corrected in place afterwards. On Agency accounts with more than one team member, the timesheet also shows who logged each entry and can be filtered by person. Pro and Agency.
* New: Bill tracked time onto an invoice. On a draft invoice, "Add unbilled time" lists what has not been invoiced yet and adds it as proper quantity-and-rate lines — summarised one line per entry, per day, per project, or as a single total. Hours are never billed twice; anything older than 60 days is listed but left unticked, so old work is not swept onto an invoice by accident; and deleting or cancelling the invoice hands the hours back as unbilled.
* New: Hourly rates. Set a default under Settings, or a rate on an individual client, or on a project — the most specific one wins. Each rate carries its own currency and is never converted: billing time onto an invoice in a different currency is refused rather than guessed at. Optional rounding, up to the nearest 5, 6, 15 or 30 minutes, applied when time is invoiced so your timesheet still shows what actually happened.
* New: Invoice line items can now carry a quantity and a unit price, not just a single amount. Tick "Itemise with quantity and unit price" on an invoice and each line reads "12.5 x 75.00" with the line total worked out for you, which is what hourly, day-rate and per-unit work needs. Invoices that do not use it are completely unchanged, and the line total is always calculated on the server so it cannot disagree with what the client is charged.
* New: An invoice raised from an accepted proposal now keeps the quantities from that proposal instead of flattening each line into one figure. Proposals whose lines are all a quantity of one are unaffected, so nothing gains a needless column of 1s.

= 1.4.5 =

* Fix: On a downloaded PDF, a pricing table or list of invoice line items no longer gets left as a stub at the foot of a page. If the heading row and at least two lines fit, it still splits as before; if fewer would fit, the whole table drops to the next page rather than leaving a lonely row behind. A single line item with a long bulleted description is no longer cut through the middle, the totals are no longer severed from each other, and the "Pricing Breakdown" label now travels with the table it belongs to.
* Fix: On a downloaded proposal PDF, your address, phone, email and website now sit in the header, stacked and right-aligned opposite your logo. A printed footer cannot be pinned to the page, so on a proposal that ended partway down its last page the contact line was left stranded mid-page with empty space beneath it. On screen they stay where they were, in the footer, and invoices are unchanged.
* New: Two more content blocks for proposals. A Callout puts something in a tinted box so it cannot be missed — a deadline, an exclusion, a condition — and can hold bullets and bold like any other text. A Divider draws a plain rule between sections.
* New: Subheadings. A new content block for a smaller heading inside a section — same look as a heading but a step down in size, and without the rule line that marks the start of a new section.
* New: Line item descriptions can now run to several lines and contain lists. Start a line with "- " for a bullet or "1. " for a numbered step, and wrap a word in **double asterisks** for bold. This works on proposals, package tiers, add-ons and invoices, so a scope of work no longer has to be crammed into one long sentence.
* New: When a proposal is accepted, a milestone now takes its name from the first line of the line item and keeps the rest as its detail, shown beneath it in the project and in the client portal. Previously that detail was squeezed into the milestone name and cut off after 255 characters.
* Fix: On a downloaded PDF, the logo, title and "Prepared for" line sat further in from the edge than the rest of the document.
* Fix: Line items on recurring billing profiles were not being cleaned up when saved, unlike those on proposals and invoices.

= 1.4.4 =

* Fix: In the Send Proposal box, clicking into Email Subject and typing jumped the cursor back to Client Email after the first character — so the subject could not be edited, and the rest of what you typed was quietly appended to the client's email address. The same fault affected every dialog in the plugin, including the one where a client types their name to sign a proposal.

= 1.4.3 =

* Fix: The "Powered by Client Octopus" credit appeared on client-facing proposals and in the client portal with no way to switch it off, on every plan. It is now controlled by the existing Branding setting, which is off by default — so unless you opt in, nothing of ours appears on anything your clients see. If you had already enabled it for emails, it will now also show on proposals and the portal.
* Fix: The Business Name you set under Branding was ignored on client-facing proposals, the client portal, and two of the emails sent to clients — all four showed your WordPress site title instead, despite the setting saying it applies to them. If your business name and site title are the same, nothing changes for you.
* Fix: The Blank template filled every new proposal with the placeholder text "Proposal Title" and "Add your proposal introduction here." That was real content, not a prompt, so it was sent to clients as written. A blank proposal now starts blank.
* New: Terms and conditions are now a section type of their own, so they can be placed anywhere in a proposal — below the pricing, typically — and they render as small print rather than as body copy. Settings → Branding takes a default, so you write them once instead of on every proposal. The Retainer template now uses it for its terms, which previously appeared as full-size body text under a second "Terms" heading.
* New: Your business address, phone number, email address and website can be set under Settings → Branding, and appear wherever your clients deal with you — at the foot of proposals and invoices, in your client portal, on payment receipts, and in every email you send them, including booking confirmations. Each line is left out when you leave it blank. If you are VAT registered, the address matters: an invoice is only valid if it carries one.
* New: If you send estimates or quotes rather than proposals, Settings → Branding now takes the word you use — and an optional plural, for a label like "Statement of Work" where adding an "s" would read oddly. It replaces "Proposal" throughout everything your clients see: the document and its Accept and Decline buttons, the wording you ask them to sign against, the browser tab, your client portal, and the emails they receive.
* New: Bold text, written by wrapping a word in `**double asterisks**`, now works everywhere your clients read your writing — body sections, bullet lists, line item and add-on descriptions, and invoice descriptions and notes. Previously only body sections supported it.
* New: Proposals now show the date they were sent, alongside the expiry date, so a client can see how current the quote is.
* Tweak: The proposal title is a little smaller, so a longer title sits better against the rest of the document.
* Fix: A proposal's expiry date was never shown to the client unless it had already expired or was within seven days. It now appears in the header throughout, and the internal status label is no longer shown to clients.
* Fix: On a phone, the action bar at the foot of a proposal squeezed its buttons into a row too narrow for them, so "Accept Proposal" was cut off at the edge of the screen and could not be reached. The row now scrolls sideways, and the page leaves enough room below it that the last of the content is no longer hidden behind the bar.
* Fix: Multi-line boxes in Settings — the lead auto-reply, booking confirmation and testimonial message bodies — were only one line tall with the text pressed against the top edge, so you were writing an email in a slot the size of a single field. They now open at a sensible height and can be dragged taller.
* Fix: Several things your clients read were not translatable, so they stayed in English on a translated site — the expiry dates on a proposal, the accepted and declined notices, and a number of labels in the client portal. They now use the site's language like everything else.
* Fix: "Prepared for" ran into the client's name with no space between them.
* Fix: A package tier left with no line items showed clients a selectable "£0.00" option they could accept but never pay, failing at checkout with a message about the total not being set. Tiers now need at least one line item, and any already saved without one are hidden from the client.

= 1.4.2 =

* Fix: Editing a proposal through the wizard replaced any content you had written in the content editor with the template's default text. If you wrote your own sections and later reopened the wizard to change a price, your writing was lost. Choosing a different template still resets the sections, as before.
* Fix: An accepted proposal could still be edited, which silently broke its signature — the signing certificate then reported the client's own signed document as altered. Accepted and completed proposals are now read-only; duplicate one to make an editable copy.
* New: Slack is now a webhook destination. Choose Slack when adding a webhook and paste your Incoming Webhook URL, and events arrive as readable chat messages. Previously a Slack URL was rejected by Slack and the webhook switched itself off after repeated failures. (Pro &amp; Agency)
* Fix: An invoice raised from a proposal could never be marked paid by hand, so a client paying by bank transfer could not be recorded at all. It can now, and the payment is counted in your revenue figures, the client's lifetime value and their activity timeline. An invoice already paid by card or PayPal is still protected from being counted twice.
* Fix: Deposit and balance invoices showed the amount not yet due as a "Discount" — a 25% deposit on a £10,000 proposal appeared to give the client £7,500 off. The line is now labelled for what it is.
* Fix: Six webhook events could be sent by the plugin but not chosen when setting one up — new client messages, the three milestone events, approval responses and proposal revision requests. Every event your plan can send is now listed, and none that it cannot. (Pro &amp; Agency)
* Fix: A project's Messages tab showed the unread count for your whole account, so a project with nothing new still carried a badge. (Agency)
* Fix: New-message emails opened the portal home page or the project list rather than the conversation. They now open the message itself, on both sides. (Agency)
* New: The client portal shows which project has unread messages, on the Projects menu and on the project itself. Previously nothing in the portal indicated a message had arrived. (Agency)
* Fix: A project's message view loaded every message ever sent, and reloaded all of them every thirty seconds. It now loads the most recent 200 and says so when there are more, which keeps a long-running conversation quick to open.

= Earlier versions =

Release notes for 1.4.1 and earlier are available in the plugin's development history.
