Documentation
Everything you need to install, configure, and get the most out of Client Octopus.
Getting Started
Client Octopus is a WordPress plugin that turns your WordPress admin into a complete client management system. It covers the full client lifecycle: lead capture, proposals, call booking, payments, a client portal, project milestones, file delivery, approvals, and team messaging — all without leaving WordPress.
Three plans are available. The Free plan covers lead capture, proposals, invoices, and the client database. Pro adds Stripe or PayPal payments, call booking with calendar sync, the client portal, AI writing tools, webhooks, and analytics. Agency adds projects, milestones, messaging, file storage, approval workflows, and up to 10 team seats.
Requirements
- WordPress 6.0 or later
- PHP 8.0 or later
- A Stripe or PayPal account (Pro and Agency only — required for payment collection)
Client Octopus is single-site only. Multisite networks are not supported.
Email deliverability
Client Octopus sends transactional emails (proposal delivery, portal invites, payment confirmations, testimonial requests) via WordPress's built-in wp_mail(). Without an SMTP plugin, emails may be marked as spam or fail to deliver entirely depending on your hosting environment.
For reliable delivery, install an SMTP plugin and connect it to a transactional email provider:
- SMTP plugins: WP Mail SMTP, FluentSMTP, GoSMTP
- Transactional providers: Mailgun, Postmark, SendGrid
Installation
From WordPress.org (Free)
- In your WordPress admin, go to Plugins → Add New.
- Search for Client Octopus.
- Click Install Now, then Activate.
From a ZIP file (Pro / Agency)
- Download the plugin ZIP from your purchase confirmation email.
- In your WordPress admin, go to Plugins → Add New → Upload Plugin.
- Select the ZIP file and click Install Now, then Activate.
- On first activation you will be prompted to enter your licence key. Paste the key from your licence dashboard and click Activate Licence.
On activation, Client Octopus creates its database tables, registers the client portal rewrite rules, and schedules a monthly usage-reset cron event. If the client portal URLs return 404 after activation, go to Settings → Permalinks and click Save Changes to flush the rewrite rules.
Quick Start
After activation a Client Octopus entry appears in your WordPress admin sidebar. The first time you open it, the setup wizard guides you through the essential steps. You can revisit any of these from Client Octopus → Settings later.
Step 1 — Add your branding
Go to Client Octopus → Settings. Enter your business name, sender email, brand colour, and logo URL. These are applied to all outgoing emails and the client portal.
Step 2 — Connect a payment provider (Pro / Agency)
Go to Client Octopus → Settings and choose Stripe or PayPal as your payment provider, then enter its API credentials and webhook details before sending any proposals, so payment collection is ready from the start. See the Payments section for the full setup steps.
Step 3 — Create and send a proposal
Go to Client Octopus → Proposals → New Proposal. In the proposal builder, fill in the client’s details (name, email, company, phone) — this automatically creates their client record. Build your proposal from the template library, set pricing, and optionally enable payment collection. When ready, click Send to Client. The client receives a magic-link email — no account required to view or accept.
Portal URLs returning 404? Go to Settings → Permalinks and click Save Changes to flush the rewrite rules. This only needs to be done once after activation.
Lead Capture
Collect inquiries directly into Client Octopus instead of a separate form plugin. Available on every plan, including Free.
Adding the form to a page
Add the [clientoctopus_lead_form] shortcode to any page or post. Under Client Octopus → Settings → Leads, choose which fields to show (Name and Email are always on; Phone, Company, Message, Budget Range, and Preferred Contact Method are optional), mark any of them as required, and customise their labels. You can also add a consent line for the visitor to agree to before submitting.
Where submissions go
Every submission lands in the Leads admin screen, where you can filter by status (New, Contacted, Archived), mark a lead as contacted, archive it, or convert it straight into a client record with one click.
Spam prevention
Optionally enable Cloudflare Turnstile CAPTCHA and configure submission-rate limits under Settings → Leads to help block automated spam. Both are off by default.
Notifications
You're emailed the moment a lead comes in. You can also turn on an automatic reply to the person who submitted the form — if Call Booking is enabled, this reply can include a "Pick a Time to Talk" link straight to your booking page.
Clients
Every proposal, invoice, project, and booking is tied to a client record. Client Octopus supports unlimited clients on every plan, including Free.
Client Detail
Opening a client shows an Activity Timeline of every proposal, invoice, and payment associated with them, so you don't have to piece their history together from separate admin screens. Quick-create buttons let you start a new Proposal, Invoice, or Recurring Invoice already prefilled with that client, and two stats — Lifetime Value and Outstanding Balance — sit at the top of the page. If a client has been billed in more than one currency, both stats are shown broken out per currency rather than added together into one misleading number.
Tags
Add custom tags to any client to organise and filter your client list — useful for grouping by service type, retainer status, referral source, or anything else that matters to your workflow. Manage the tags available across your account from the Manage Tags screen.
Duplicate protection
When creating a client, Client Octopus checks the email and phone number against your existing records and warns you before a duplicate is created — useful when a returning client comes in through a new lead or a different proposal.
Exporting
Export your full client list to CSV at any time, or export a single client's complete transaction history from their Client Detail page — useful for accountants, spreadsheets, or bringing records into another tool.
Importing
Bring clients in from another tool via CSV. Upload your export from Moxie, HoneyBook, Dubsado, or anywhere else, map the columns yourself (including split First/Last Name columns), preview the results, and bulk-create the records.
Proposals
Proposals are the core workflow in Client Octopus. Each proposal has a unique shareable link that clients open without needing a WordPress account.
Lifecycle
A proposal moves through the following statuses:
- Draft — Created but not yet sent. You can edit all content freely.
- Sent — Delivered to the client by email. The client sees Accept, Decline, and Request Revision actions.
- Viewed — The client has opened the link. Recorded automatically.
- Accepted — Client approved the proposal. On Agency, a project is automatically created. On Pro/Agency, the client receives a portal invite.
- Declined — Client rejected the proposal. An optional decline reason is stored.
- Revision Requested — Client asked for changes. Their note is stored and visible in the admin.
- Completed — Work finished and any payment collected. On Agency, the associated project is locked.
- Expired — The proposal link is no longer valid once its expiry date passes. Expiry date is required on every proposal.
Editing proposal content
After creating a proposal, the proposal detail screen shows a summary of the settings (client, pricing, payment options). To write or edit the actual proposal content — sections, text, and line items — click the Edit Content button. This opens the full proposal editor where you can build out your proposal before sending it to the client. Content blocks, including the Pricing block, can be reordered — the client-facing proposal renders each block wherever you place it, rather than always pushing pricing to the end.
Add images anywhere in a proposal by picking one from your Media Library. Choose full, wide, or half width, and add a description for clients using a screen reader — images appear both in the client's copy and when they print or save the proposal as a PDF.
Package Selector pricing
Every proposal uses one of two pricing modes. Flat Pricing is a single set of line items totalling one price, same as before. Package Selector lets you define unlimited pricing tiers — each with its own independent line items — plus optional add-ons the client can toggle on top of whichever tier they pick. The client-facing proposal recalculates the total live as they choose, and their selection is locked in the moment they accept. Available on every plan.
Recurring billing
A proposal can be set to Recurring billing instead of a one-off payment or deposit. Set the frequency, start date, and end condition on the proposal — the moment the client accepts, Client Octopus automatically creates a Recurring Invoice profile for them, fully editable afterward just like one created manually from Client Octopus → Recurring Invoices. Recurring proposals don't take a deposit or direct payment at acceptance; billing runs entirely through the generated invoice profile. Available on every plan.
Payment Plans
A proposal can also be set to Payment Plan billing — a fixed number of equal instalments on a schedule (e.g. 3 monthly payments), instead of a single payment, a deposit, or open-ended recurring billing. Choose Payment Plan as the billing type when creating the proposal, then set how many instalments and how often. The client sees the full payment schedule before accepting. Once accepted, each instalment is invoiced and emailed automatically as it comes due, and — on Pro/Agency — can be auto-charged to the client's saved card the same way a recurring profile can. Unlike Recurring billing, a Payment Plan has a fixed end point: once the set number of instalments is paid, billing stops on its own. Available on every plan.
E-signature
When a client accepts a proposal, they're prompted to type their full legal name and confirm a checkbox in a signing modal. The typed name, acceptance timestamp, and the device they signed from are recorded on the proposal and visible in the admin. The certificate also stores a fingerprint of the proposal exactly as it stood at the moment of signing — if the proposal is edited afterwards, the certificate reports that it has changed since signing rather than silently appearing to cover the new version.
Templates
The template library provides preset proposal layouts. Start from a template and customise content, line items, and pricing per client. Most templates are filtered by your current plan, but the Marketing Campaign template is available on every plan.
Payment collection
Enable payment on any proposal (Pro/Agency). Set a deposit percentage (1–100%) if you want to collect a partial amount at acceptance and the balance on completion, or collect the full amount upfront. Your payment provider (Stripe or PayPal) handles all PCI compliance. This doesn't apply to proposals set to Recurring billing — those never take a deposit or direct payment at acceptance; see Recurring billing above.
AI writing assist (Pro / Agency)
While editing a proposal, highlight any text and use the AI toolbar to Improve, Shorten, make it more Persuasive, or Generate content from a brief. See the AI Features section for quota details.
Limits
All plans, including Free, can create unlimited proposals. There is no monthly cap or counter.
Invoices
Standalone invoices are separate from proposals and available on every plan, including Free. Use them when you need to bill a client directly without going through the proposal workflow.
Creating and sending an invoice
Go to Client Octopus → Invoices → New Invoice. Assign a client, add line items, and optionally apply a discount and VAT. Each invoice is auto-numbered (INV-0001, INV-0002, …). Click Send to email the client a link to their invoice — no WordPress account required to view it.
VAT registration number
If you're VAT registered, set your VAT Registration Number once in Settings and it's filled in automatically on every new invoice, including ones generated from an accepted proposal — no retyping it by hand each time. Leave it blank if you're not VAT registered.
Statuses
Invoices move through Draft → Sent → Paid, with Overdue applied automatically once the due date passes and Cancelled available at any point before payment.
Client-facing invoice page
Clients view their invoice at a unique link, with no login required. A Print / Save as PDF button on the page renders a clean, A4-formatted layout — useful for clients who need a paper or PDF copy for their own records.
Getting paid
On the Free plan, clients pay you directly (e.g. bank transfer) and you mark the invoice as Paid manually from the admin. On Pro and Agency, a Pay Now button appears on the client-facing invoice page — it routes to whichever payment provider you've configured (Stripe or PayPal), and the invoice is automatically marked paid once the provider confirms the payment via webhook. See Payments for provider setup.
Recurring invoices
For clients you bill on a schedule, set up a recurring profile instead of creating invoices manually each time. Choose a client and a cadence — weekly, monthly, quarterly, or yearly — and Client Octopus automatically generates and sends a fresh invoice on that schedule. Recurring profiles support their own Payment Terms and Notes & Payment Instructions, matching standalone invoices, and are available on every plan.
By default, each generated invoice is still paid individually through the existing Pay Now flow — recurring profiles automate invoice creation and delivery, not payment collection. Pause, resume, or cancel a profile at any time from Client Octopus → Recurring Invoices.
Auto-charge (Pro / Agency)
Opt a recurring profile into Auto-charge to automatically charge the client's saved Stripe or PayPal payment method each billing cycle instead of sending a Pay Now link every time. The first invoice on the profile is always paid manually first — that's what securely saves the client's payment method for reuse on future cycles.
If a charge fails, the client is notified and Client Octopus retries automatically. After repeated failures, the profile pauses itself so you can follow up with the client — it resumes automatically the next time a charge succeeds. Auto-charge requires a fully configured payment provider; if you switch providers or your gateway configuration becomes invalid, affected profiles fall back to the manual Pay Now flow rather than failing silently.
Call Booking
Let leads and clients book a call with you directly, without back-and-forth emails. Available on Pro and Agency.
Adding the booking form to a page
Configure your weekly availability, buffer time between calls, minimum notice required before a booking, and maximum booking window (how far in advance someone can book) under Client Octopus → Settings → Booking. Then add the [clientoctopus_booking_form] shortcode to any page — visitors see your available slots and book one directly.
Confirmations and reminders
Both you and the client receive a confirmation email with a calendar invite (.ics attachment) and a one-click "Add to Google Calendar" link, followed by a reminder email an hour before the call.
Managing bookings
View, search, and cancel booked calls from the Bookings admin screen.
Calendar Sync
Keep your booking availability accurate against your real calendar, and have confirmed bookings show up there automatically. Available on Pro and Agency.
Connecting a calendar
Under Client Octopus → Settings → Booking, connect Google Calendar, Microsoft 365/Outlook, or Apple iCloud. Google and Microsoft connect via OAuth through the Client Octopus relay service; Apple iCloud connects directly from your site using your Apple ID and an app-specific password. If more than one calendar is found on a connected Apple iCloud account, you're asked which one to sync.
How syncing works
Existing events on any connected calendar automatically block matching slots in your booking availability, shown with their real event title — so you never get double-booked. Every confirmed booking made through Client Octopus is also pushed out to every connected calendar as a real event, including your configured meeting link, so it's already on your calendar without any manual entry.
Manual sync
Syncing normally happens automatically in the background, roughly every 15 minutes. If you've just added or removed an event and don't want to wait, use the Sync now button in Settings to pull the latest calendar events immediately, or Sync existing bookings to push any bookings made before you connected a calendar out to it right away.
Client Portal
The client portal is a set of pages hosted on your WordPress site where clients can review proposals, track payments, and (on Agency) interact with their projects. It is available on Pro and Agency plans.
How clients log in
Client Octopus uses magic links. When a proposal is accepted, the client receives an email with a one-time login link. Clicking it authenticates them and redirects to the portal dashboard. Links are single-use and expire after 24 hours. Clients can optionally set a password for future logins.
The portal login page lives at /clientoctopus/login on your site. No custom domain or subdomain is required — it runs on the same domain as your WordPress install.
Under Client Octopus → Settings, you can upload a Login Background Image for this screen. When set, the login card becomes a frosted glass panel with your logo moved inside it, so it stays legible over the photo.
Portal pages
| URL | What the client sees |
|---|---|
/clientoctopus/dashboard |
Overview of their account |
/clientoctopus/proposals |
List of their proposals — view, accept, decline, or request revision |
/clientoctopus/invoices |
All sent, paid, and overdue invoices, with status badges and a link to each invoice |
/clientoctopus/payments |
Payment history and receipts, including invoice payments |
/clientoctopus/projects |
Active projects, milestones, files, and messaging (Agency only) |
Basic vs Full portal
Pro (Basic) — Clients can view proposals, accept or decline, and see payment history. No project access.
Agency (Full) — Clients also see project milestones, can approve deliverables, download files, and message the agency directly from the portal.
Permalinks
If portal URLs return 404, go to Settings → Permalinks and click Save Changes to regenerate the rewrite rules.
Payments
Payment collection is available on Pro and Agency plans. Choose Stripe or PayPal as your active payment provider under Client Octopus → Settings → Payment Provider — whichever you choose, clients always see a single "Pay Now" button on proposals and invoices, and it routes to that provider automatically.
Connecting Stripe
- Log in to your Stripe dashboard and copy your Publishable key and Secret key.
- In your WordPress admin, go to Client Octopus → Settings.
- Paste both keys into the Stripe API Keys fields and save. The status badge will show Live or Test depending on which key prefix you entered.
Setting up the webhook
- In your Stripe Dashboard, go to Developers → Workbench → Webhooks and click Add destination.
- Select Webhook endpoint as the destination type.
- Copy the Webhook Endpoint URL from Client Octopus → Settings and paste it into the Endpoint URL field.
- Under events, select:
checkout.session.completed,checkout.session.expired,checkout.session.async_payment_succeeded, andcheckout.session.async_payment_failed. - Save the endpoint, then click into it to reveal the Signing secret (
whsec_…). - Paste that secret into the Stripe Webhook Signing Secret field in Client Octopus → Settings.
The key changes: "Workbench → Webhooks → Add destination" replaces the old "Webhooks → Add endpoint" path, and the two async payment events are added alongside checkout.session.completed (needed for bank transfers and other delayed payment methods).
Testing with sandbox mode: Use your pk_test_… / sk_test_… keys and create a separate webhook endpoint in Stripe pointing to your staging/test site. Test card number 4242 4242 4242 4242 (any future expiry, any CVC) triggers a successful payment.
Connecting PayPal
- Log in to the PayPal Developer Dashboard and create (or open) an app under Apps & Credentials.
- Copy the app's Client ID and Secret.
- In Client Octopus → Settings, set Payment Provider to PayPal, then paste the Client ID and Secret into the PayPal API Credentials fields.
- Set Mode to Sandbox for testing or Live for real payments — this must match whether your Client ID/Secret came from a sandbox or live app.
- Configure a webhook in the PayPal Developer Dashboard pointing to the webhook URL shown in Client Octopus → Settings, then paste the resulting Webhook ID back into the PayPal API Credentials fields.
Switching Payment Provider back to Stripe at any time keeps your PayPal credentials saved but inactive — clients will see Stripe checkout again immediately.
Deposit payments
On any proposal, enable payment and set a deposit percentage (1–100%). The client pays the deposit when they accept. You can mark the balance as due on project completion, which triggers a second checkout session with your active payment provider.
Currencies
Client Octopus supports 20 currencies, including GBP, USD, EUR, CAD, AUD, JPY, CHF, NZD, SEK, NOK, DKK, SGD, HKD, INR, PLN, CZK, BRL, MXN, ZAR, and KRW. Set a Default Currency in Settings (or during first-time setup) so new proposals and invoices open in the currency you actually bill in, or set the currency on each proposal individually. Existing records keep whichever currency they were created with if you change your default later.
Refunds
Refunds can be initiated from Client Octopus → Proposals on any completed payment made via Stripe — no manual action in the Stripe dashboard is needed. Refunds for PayPal payments currently need to be issued directly from your PayPal account.
Payment failure notifications
If a payment attempt on a proposal or invoice is declined, expired, cancelled, or needs extra verification from the client's bank, both you and the client are emailed automatically. Verification-required attempts get distinct, reassuring copy explaining the next step, rather than reading like a broken card.
Projects & Milestones
Projects are available on the Agency plan only. When a client accepts a proposal, a project is automatically created and linked to that proposal and client.
Project statuses
- Active — Work is in progress.
- On Hold — Paused. Can be reactivated.
- Completed — Finished. The project is locked for editing.
Milestones
Break a project into milestones under Client Octopus → Projects → [project name]. Each milestone has a title, description, due date, and status (Pending, In Progress, Submitted, or Completed). Milestones can be reordered by dragging.
Approvals
Create approval requests against any project for designs, content, deliverables, or other items. The client sees the request in the portal and can approve or reject it with a comment. Statuses: Pending, Approved, Rejected.
File uploads
Upload files to any project from Client Octopus → Projects. Clients can download them from the portal. Each Agency account has a 1 GB total storage limit across all projects. Files are stored securely and served via authenticated URLs.
Messaging
Each project has a message thread visible to both the agency team and the client. Clients send messages from the portal; the agency replies from the WordPress admin. Unread message counts appear as a badge on the Projects menu item. Messages are marked read when either party opens the thread.
Team Management
Team seats are available on the Agency plan. Agency accounts support up to 5 users (the account owner plus 4 invited members).
Inviting a team member
- Go to Client Octopus → Team → Invite Member.
- Enter the member’s email address and assign a role.
- The invitee receives an email with a link to accept and set up their WordPress account. They are created with the
clientoctopus_memberrole.
Roles
| Role | What they can do |
|---|---|
| Admin | Full access to all Client Octopus features and settings |
| Editor | Create and edit proposals, clients, and projects — cannot access Settings or Team |
| Viewer | Read-only access to proposals, clients, projects, and analytics |
All data created by a team member is owned by and counted against the account owner. Usage quotas (AI, storage, proposals) are shared across the team.
Webhooks
Webhooks are available on Pro and Agency. They allow Client Octopus to notify external services (Zapier, Make, custom endpoints) when events occur.
Registering a webhook
- Go to Client Octopus → Webhooks → Add Webhook.
- Enter the endpoint URL and select which events should trigger it.
- Copy the generated signing secret — you’ll use this to verify payloads on your endpoint.
- Use the Test button to send a sample payload and confirm delivery.
Available events
proposal.sentproposal.acceptedproposal.declinedproposal.revision_requestedpayment.completedpayment.failedproject.createdproject.completedinvoice.sentinvoice.paidinvoice.overdueinvoice.cancelledmilestone.submittedmilestone.approvedmilestone.completedapproval.respondedmessage.sentlead.captured
Delivery and retries
Deliveries are queued and sent in the background rather than inline, so triggering an event (like a proposal being accepted) never waits on your endpoint responding. If a delivery fails — your endpoint is down, times out, or returns an error — Client Octopus retries automatically rather than losing the event. A webhook that keeps failing is paused, with the full response from the last attempt recorded so you can diagnose what went wrong.
Verifying payloads
Every request includes an X-ClientOctopus-Signature header containing an HMAC-SHA256 signature of the raw request body, signed with your webhook secret. Verify this on your endpoint before processing the payload. The last 3 delivery attempts for each webhook are logged and visible in the admin.
Example verification (PHP)
$secret = 'your_webhook_secret';
$payload = file_get_contents( 'php://input' );
$header = $_SERVER['HTTP_X_CLIENTOCTOPUS_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac( 'sha256', $payload, $secret );
if ( ! hash_equals( $expected, $header ) ) {
http_response_code( 401 );
exit;
}
$data = json_decode( $payload, true );
// Process $data['event'] and $data['payload'] here
Automated Reminders
Automated reminders are available on every plan, including Free. They send follow-up emails to clients on your behalf so proposals don't stall waiting on a response.
Triggers
| Trigger | Fires when |
|---|---|
| Not viewed | A sent proposal hasn't been opened by the client |
| Not accepted | A viewed proposal hasn't been accepted, declined, or had revisions requested |
| Expiring soon | A proposal's expiry date is approaching and it's still awaiting a response |
| Invoice overdue | An invoice has passed its due date and hasn't been marked paid |
Configuring delays
Each trigger has its own configurable delay, in days, under Client Octopus → Settings → Automations. Reminders are checked once daily via WordPress cron, so a change to the delay takes effect on the next daily run.
Client unsubscribe
Every reminder email carries an unsubscribe link and a preferences page where the client can switch proposal reminders, invoice reminders, call reminders, and testimonial requests on or off individually. Essential emails — proposals, invoices, payment receipts, booking confirmations, portal login links, and approval requests — are never affected, since they concern work already agreed. A client's current preferences, and a link to copy them, are shown on their Client Detail page.
Analytics
The analytics dashboard is available on Pro and Agency plans under Client Octopus → Analytics. It gives you an at-a-glance view of your proposal pipeline and revenue performance.
Overview metrics
| Metric | What it shows |
|---|---|
| Total Revenue | Sum of all completed payments in the selected period |
| Proposals Sent | Number of proposals sent to clients |
| Acceptance Rate | Percentage of sent proposals that were accepted |
| Avg. Time to Close | Median days between proposal sent and accepted |
Revenue chart
The revenue chart plots completed payment totals over time. Use the time filter (This Week / This Month / This Year) to narrow the view. Hover over data points to see exact figures.
Proposal performance
The proposal performance table breaks down each proposal by status, value, and close time, so you can see which types of work convert fastest and at what price point.
Exporting data
Click Export CSV on the analytics page to download all proposal and payment data for the selected period. The export includes proposal ID, client name, value, status, sent date, accepted date, and payment total — suitable for spreadsheets, accountants, or external reporting tools.
Reporting Currency (Pro / Agency)
If you bill clients in more than one currency, set a Reporting Currency in Client Octopus → Settings. Once set, the Revenue KPI and revenue chart convert every proposal, invoice, and payment into that currency using daily exchange rates, instead of incorrectly adding figures in different currencies together as if they were the same one. This only affects the Analytics dashboard — Client Detail always shows each client's Lifetime Value and Outstanding Balance in their real billed currency, unconverted.
AI Features
AI writing assistance is available on Pro and Agency plans. It works inside the proposal editor.
How to use it
Select any text in the proposal editor and choose an action from the AI toolbar:
- Improve — Rewrite the selection to be clearer and more professional.
- Shorten — Condense the selection without losing meaning.
- Persuasive — Rewrite the selection to be more compelling.
- Generate — Produce new content from a brief you enter.
Quotas and limits
| Plan | AI requests per month |
|---|---|
| Free | Not available |
| Pro | 100 |
| Agency | 500 |
A 3-second cooldown applies between requests. Quotas reset on the 1st of each month. Shared across your team on Agency.
How it works
AI requests are processed through a Client Octopus relay server. Your WordPress site never calls the AI provider directly. This keeps your credentials private and allows Client Octopus to track costs and enforce plan quotas server-side. Proposal text is sent to the relay only when you trigger an AI action and is not retained after the response is returned.
Settings
All settings are under Client Octopus → Settings, organised into tabs: Branding, Payments, Leads, Booking, Automations, and Advanced. This page requires the WordPress manage_options capability (site administrators only).
Branding (all plans)
| Field | Used in |
|---|---|
| Business Name | Emails, portal header |
| Sender Name | The "From" name on all outgoing emails |
| Sender Email | The "From" address on all outgoing emails |
| Brand Colour | Proposal CTA buttons, portal accent colour |
| Portal Button Colour | Optional override for buttons in the client portal and public proposal/invoice/payment pages, used when Brand Colour doesn't work well as a solid button fill. Leave blank to use Brand Colour — button text colour is chosen automatically for contrast |
| Logo URL | Emails, portal header — recommended max 180×48 px |
| Login Background Image | Background image for the client portal login screen (Pro/Agency). The login card automatically becomes a frosted glass panel with the logo moved inside it for legibility over the photo |
Payment Provider (Pro / Agency)
Choose Stripe or PayPal as your active payment provider. Only the credential fields for the selected provider are shown; switching providers doesn't clear the other provider's saved credentials.
Stripe API Keys (Pro / Agency)
Enter your Stripe Publishable Key (pk_live_… or pk_test_…) and Secret Key (sk_live_… or sk_test_…). A status badge shows whether Client Octopus is in Live or Test mode. See Payments for webhook setup.
PayPal API Credentials (Pro / Agency)
Enter your PayPal Client ID and Secret from the PayPal Developer Dashboard, set Mode to Sandbox or Live, and paste in the Webhook ID from your configured PayPal webhook. A status badge shows whether Client Octopus is in Live or Test mode. See Payments for full setup steps.
Testimonial Emails (Pro / Agency)
Enable automated review-request emails sent to clients after their final payment is collected. Configure the email body, the URL you want them to visit (e.g. a Google Reviews or Trustpilot page), and the button label (default: “Leave a Review”).
Translations
Emails, the Settings and Plan & Usage screens, and the public booking and lead capture forms can be translated using a standard WordPress translation plugin (e.g. Loco Translate) with the included translation template. The React-based admin screens, the client portal, and the client-facing proposal view aren't covered yet.
Danger Zone
By default, uninstalling Client Octopus only removes the plugin's code — your proposals, clients, projects, and invoices stay in your database and are there again if you reinstall or upgrade. To permanently delete all Client Octopus data when the plugin is deleted, enable Delete all Client Octopus data when this plugin is deleted under Danger Zone. This is off by default and should only be enabled if you intend to remove Client Octopus and its data for good.
Free vs Pro vs Agency
| Feature | Free | Pro | Agency |
|---|---|---|---|
| Lead Capture | ✓ | ✓ | ✓ |
| Proposals | Unlimited | Unlimited | Unlimited |
| Client database | ✓ | ✓ | ✓ |
| Proposal templates | ✓ | ✓ | ✓ |
| Package Selector pricing | ✓ | ✓ | ✓ |
| Stripe or PayPal payments | — | ✓ | ✓ |
| Deposit payments | — | ✓ | ✓ |
| Analytics | — | ✓ | ✓ |
| Webhooks | — | ✓ | ✓ |
| Testimonial emails | — | ✓ | ✓ |
| AI requests/month | — | 100 | 500 |
| Client portal | — | Basic | Full |
| Call Booking | — | ✓ | ✓ |
| Calendar Sync | — | ✓ | ✓ |
| Invoices | ✓ | ✓ | ✓ |
| Recurring invoices | ✓ | ✓ | ✓ |
| Auto-charge recurring invoices | — | ✓ | ✓ |
| "Pay Now" on invoices | — | ✓ | ✓ |
| Automated reminders | ✓ | ✓ | ✓ |
| Projects & milestones | — | — | ✓ |
| Approvals | — | — | ✓ |
| Client messaging | — | — | ✓ |
| File uploads | — | — | 1 GB total |
| Team seats | 1 | 1 | 5 |
Troubleshooting
Client portal pages return 404
WordPress registers the portal URL on activation. If the pages return 404, the rewrite rules need to be flushed:
- Go to Settings → Permalinks in the WordPress admin.
- Click Save Changes without changing anything.
- Reload the portal page.
This only needs to be done once. If the 404 persists after flushing, check that your web server has mod_rewrite enabled and that .htaccess is writable by WordPress.
Payment webhook not delivering
If payment events are not reaching Client Octopus, work through this checklist:
Stripe:
- Correct events selected — the endpoint must be subscribed to at minimum
payment_intent.succeededandcheckout.session.completed. Check Stripe Dashboard → Webhooks → [your endpoint] → Events. - Signing secret copied correctly — the webhook signing secret (starting with
whsec_) must match the value saved in Client Octopus → Settings → Stripe. It is different from your API secret key. - Endpoint is publicly accessible — Stripe cannot reach
localhostor sites behind a VPN. Use a live URL or the Stripe CLI (stripe listen --forward-to) for local testing. - Test with the Stripe CLI — run
stripe trigger payment_intent.succeededand check the Client Octopus activity log to confirm receipt.
PayPal:
- Webhook ID saved correctly — the Webhook ID from the PayPal Developer Dashboard must match the value saved in Client Octopus → Settings → PayPal API Credentials.
- Sandbox/Live mode matches — a sandbox app's webhook events won't reach a site configured for Live mode, and vice versa.
- Endpoint is publicly accessible — same requirement as Stripe; PayPal cannot reach
localhostor sites behind a VPN.
Emails not sending
Client Octopus sends email via wp_mail(). If emails are not arriving, check your WordPress mail configuration — many hosts block outgoing PHP mail by default. Install an SMTP plugin (e.g. WP Mail SMTP) and configure a transactional mail provider such as Postmark, SendGrid, or Mailgun.
Privacy & Data
Where your data is stored
All client data — names, email addresses, proposal content, project activity, and file attachments — is stored in your own WordPress database on your own server. Client Octopus does not copy or transmit this data to external servers except where explicitly described below.
AI relay
When you trigger an AI action in the proposal editor, the selected proposal text is sent to the Client Octopus relay server to process the request. The text is not stored after the response is returned. The relay does not share your content with third parties. No AI actions are triggered automatically — data is only sent when you explicitly click an AI action button.
Payments
Payment card details are handled entirely by your active payment provider (Stripe or PayPal) and never pass through your WordPress site or the Client Octopus relay. Client Octopus stores only the provider's payment/order reference and payment status — never card numbers, CVVs, or bank details.
Client portal authentication
Clients authenticate via a short-lived magic link sent to their email address. Tokens are single-use and expire after 15 minutes. Session cookies are scoped to your domain and are not shared with any third party.
GDPR considerations
Because all client data lives in your database, you are the data controller. You are responsible for your own privacy policy, cookie notice, and any data subject requests from your clients. Client Octopus does not act as a data processor on your behalf beyond the AI relay described above.
Client Octopus integrates with WordPress's own Tools → Export/Erase Personal Data tools, so you don't have to track down a client's records by hand when a request comes in. An export or erasure request covers client records, leads, booked calls, the name and IP address recorded when a proposal was signed, project messages, approval comments, and unsubscribe preferences. Erasure deletes booked calls, project messages, and approval comments outright; invoices, payments, and accepted proposals are kept but stripped of personal details (including anonymising the signing IP), since accounting records have to be retained for tax purposes — the confirmation shown at the end of an erasure states exactly what was kept and why.
REST API
Client Octopus exposes a REST API under the base path /wp-json/clientoctopus/v1/. All endpoints return JSON.
Authentication
Admin endpoints require a WordPress nonce passed in the X-WP-Nonce header (the calling user must be logged in to WordPress and have the manage_clientoctopus capability). Client-facing portal routes accept either a short-lived portal token (passed as a query parameter or Authorization: Bearer header) or a portal session cookie.
Admin endpoints
| Method | Route | Description |
|---|---|---|
| GET | /proposals | List proposals |
| POST | /proposals/create | Create a proposal |
| POST | /proposals/{id}/send | Send proposal to client |
| POST | /proposals/{id}/duplicate | Clone a proposal |
| GET | /projects | List projects (Agency) |
| GET | /projects/{id} | Project details + milestones |
| POST | /ai/process | AI text action (improve / shorten / persuasive / generate) |
| GET | /analytics/overview | Revenue KPIs and chart data |
| GET | /webhooks | List configured webhooks |
| POST | /webhooks | Register a webhook |
| POST | /webhooks/{id}/test | Send a test ping |
| GET | /user/usage | Live usage stats (AI, proposals, storage, team) |
| GET | /invoices | List invoices |
| POST | /invoices/create | Create an invoice |
| POST | /invoices/{id}/send | Send invoice to client |
| POST | /invoices/{id}/mark-paid | Mark an invoice as paid manually |
| GET | /recurring-profiles | List recurring invoice profiles |
| POST | /recurring-profiles/create | Create a recurring invoice profile |
| POST | /recurring-profiles/{id}/pause | Pause a recurring profile |
| POST | /recurring-profiles/{id}/cancel | Cancel a recurring profile |
| GET | /automations | List automation reminder settings |
| POST | /automations/{trigger} | Update a reminder trigger's settings |
| GET | /leads | List leads |
| POST | /leads/{id}/status | Update a lead's status (new / contacted / archived) |
| POST | /leads/{id}/convert | Convert a lead into a client |
| GET | /bookings | List bookings (Pro/Agency) |
| POST | /bookings/{id}/cancel | Cancel a booking (Pro/Agency) |
Client-facing portal endpoints
These routes do not require a WordPress login and are used by the client portal frontend.
| Method | Route | Description |
|---|---|---|
| GET | /client/proposals/{token} | View a proposal |
| POST | /client/proposals/{token}/accept | Accept a proposal |
| POST | /portal/send-magic-link | Request a magic link |
| POST | /portal/verify | Verify token and log in |
| GET | /portal/projects/{id} | Client project view |
| GET | /invoices/public/{token} | View an invoice |
| POST | /invoices/{id}/pay | Create a checkout session for an invoice with the active payment provider (Pro/Agency) |
| POST | /leads/submit | Submit the lead capture form |
| GET | /bookings/availability | Get available booking slots (Pro/Agency) |
| POST | /bookings/create | Book a call (Pro/Agency) |
API stability: The REST API is currently internal and subject to change between minor versions. If you build integrations against it, pin your plugin version and test on upgrades. A stable, versioned public API is planned for a future release.