Installation

  1. Upload the proposal-system folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu in WordPress
  3. Go to Proposals > Settings to configure general options, email design, and (for Premium) Invoice Ninja integration
  4. Client Portal (optional): Create a page and add the shortcode [proposal_client_portal]. In Proposals > Settings, set the Client Portal page so the plugin can link to it.

Configuration

All plugin settings are under Proposals > Settings. Settings are organized into tabs:

General Tab

  • Default currency: Global currency for new proposals (e.g., USD, EUR)
  • Default language: Default locale for proposal text
  • Terms and conditions: See Terms & Conditions
  • Version cleanup: Limit versions per proposal and auto-cleanup

Invoice Ninja Setup (Integrations Tab)

  1. Navigate to Proposals > Settings > Integrations
  2. Enter your Invoice Ninja instance URL (e.g., https://invoiceninja.example.com)
  3. Enter your Invoice Ninja API token
  4. Set a webhook secret key for secure webhook communication
  5. Configure the webhook URL in Invoice Ninja: https://yoursite.com/proposal-system/webhook/

Creating a Proposal

  1. Go to Proposals > Add New
  2. Enter proposal title and description
  3. Fill in client information (name, email, company)
    • Select existing client from dropdown or enter manually
    • For clients with multiple contacts, choose which contact to use
  4. Use the Proposal Builder to add service options:
    • Click "Add Option" to create a new service option
    • Or click "Add from Library" to select from your reusable options library
    • Or click "Use Template" to apply a pre-configured template (Premium)
    • Enter name, description, and price (monthly for recurring, single for one-time)
    • Set default quantity, quantity unit, and SKU
    • Mark options as required if they must be included
    • Mark as one-time fee if it should be billed separately
  5. Configure billing settings:
    • Enable recurring billing (monthly, quarterly, yearly)
    • Set expiration date
    • Select currency (default or per-proposal)
    • Select language (default or per-proposal)
  6. Configure PDF settings (optional):
    • Choose PDF template (Default, Minimal, Modern, Classic)
    • Customize colors, fonts, and layout
    • Set content visibility options
  7. Set proposal status and generate access token
  8. Publish the proposal

Options Library

Build a reusable library of line items (service options) and add them to any proposal with one click.

Managing the Library

  • Go to Proposals > Options Library
  • Add item: Name, description, base price, default quantity, quantity unit (e.g., Per Hour, Per User), SKU, required flag, one-time fee flag
  • Edit or delete items from the list
  • Use categories to organize items

Using the Library in Proposals

  • In the proposal builder, click Add from Library
  • Select one or more items and add them; all fields (name, description, price, quantity, unit, SKU, required, one-time fee) are copied into the proposal
  • You can still edit any option after adding it

Terms & Conditions

Configure separate terms for single-invoice and recurring-invoice proposals. Clients must accept the applicable terms before accepting a proposal.

Where to Configure

  • Go to Proposals > Settings > General
  • Use the rich text editors for Terms for single invoices and Terms for recurring invoices

Behavior

  • If terms are set, a scrollable terms section and a required acceptance checkbox appear on the proposal frontend
  • Acceptance is validated before the client can complete the acceptance flow
  • Which terms block is shown depends on whether the proposal has recurring billing

Access Control

Proposals can be viewed in two ways: by secure token link or via the Client Portal (logged-in users).

Token-Based Access

  • When you send a proposal, use the Proposal Link (or copy link) from the proposal edit screen
  • The URL includes a unique token so only someone with the link can view the proposal
  • No WordPress login required; ideal for emailing links to clients
  • Optional: set token expiry in settings

Client Portal Access

  • Clients linked to WordPress user accounts can log in and see their proposals under the Client Portal
  • See Client Portal for setup (user linking, shortcode)

Access Logging

  • Each view is logged (token, login, or admin). Use View History & Analytics in the proposal edit screen to see who viewed and when.

View History & Analytics

See who viewed each proposal and when, with basic statistics.

Where to Find It

  • Open any proposal and find the View History meta box (usually in the sidebar)

What You See

  • View list: Each view with date/time, IP, user agent, and access type (token, login, admin)
  • Statistics: Total views, unique IPs, unique users, first view, last view, breakdown by access type

Dashboard Widget

On the WordPress dashboard, the plugin adds a widget with an overview of proposals and sync status.

Proposal Statistics

  • Counts for Draft, Sent, Accepted, and Declined proposals

Pending Proposals

  • List of sent/viewed proposals with expiration dates and time remaining
  • Color cues (e.g., green/orange/red) by urgency
  • Last email sent date per proposal

Client Sync (Premium)

  • Sync status and next scheduled sync time
  • Recent sync history (last syncs with status and client counts)

PDF Generation

Generate professional PDF documents from your proposals with extensive customization options.

PDF Templates

  • Default: Clean, professional layout with balanced spacing
  • Minimal: Simple, elegant design with minimal styling
  • Modern: Contemporary design with bold typography
  • Classic: Traditional business document style

Customization Options

  • Logo positioning and sizing (small, medium, large, custom)
  • Brand colors (primary, secondary, accent)
  • Typography (font family, base size, heading size)
  • Page settings (A4, Letter, Legal; portrait/landscape; margins)
  • Content visibility (company details, client address, proposal number, expiration, terms, footer)
  • Custom footer text with HTML support
  • Watermark support (text with adjustable opacity)

Using PDFs

  • Generate PDF from proposal edit screen
  • Batch generate PDFs for multiple proposals
  • Attach PDF to proposal emails automatically
  • PDF caching for improved performance (configurable 1-30 days)
  • Export specific proposal versions as PDF

Proposal Versioning

Track all changes to your proposals with complete version control.

Automatic Version Creation

  • Versions are automatically created when proposals are saved with content changes
  • Autosaves, revisions, and status-only changes don't create versions
  • Intelligent version naming based on detected changes
  • Optional version notes to document what changed and why

Version Management

  • View complete version history in proposal edit screen
  • Compare any two versions side-by-side
  • See changes in title, content, options, pricing, billing settings, and client info
  • One-click version restore (creates backup before restoring)
  • Export any version as PDF
  • Delete versions manually or automatically (configurable limits)

Version Cleanup

  • Set version limit per proposal (0 = unlimited)
  • Enable auto-cleanup to remove old versions automatically
  • Manual cleanup button to clean up all proposals at once

Digital Signatures

Allow clients to digitally sign proposals when accepting them.

Signature Capture

  • Drawing: Clients can draw signatures using mouse or touch
  • Typing: Clients can type signatures using signature-style fonts
  • Clear button to reset signature
  • Mobile-friendly touch interface

Legal Audit Trail

  • Signature image stored as base64
  • Timestamp of signature
  • IP address of signer
  • User agent information
  • Signature type (drawn or typed)

Display

  • Signatures displayed on accepted proposals (frontend and admin)
  • Signature preview in admin meta boxes
  • Proper CSS constraints to prevent overflow

Multi-Currency & Multi-Language Support

Multi-Currency

Support for 20+ currencies with configurable formatting:

  • USD, EUR, GBP, JPY, CAD, AUD, CHF, CNY, INR, BRL, MXN, ZAR, SGD, NZD, and more
  • Set default currency globally in settings
  • Override currency per-proposal
  • Configurable formatting: symbol position, decimal/thousands separators, decimal places
  • Automatic currency mapping to Invoice Ninja

Multi-Language

Per-proposal language selection with automatic locale switching:

  • Support for all WordPress languages
  • Set default language globally
  • Override language per-proposal
  • Automatic locale switching when rendering proposals
  • Localized JavaScript strings
  • RTL language support

Proposal Template Library (Premium)

Create reusable proposal templates for faster proposal creation.

Creating Templates

  • Go to Proposals > Template Library
  • Click "Create Template" or "Save as Template" from proposal builder
  • Enter template name and category
  • Configure template items, pricing, and settings
  • Save template for reuse

Using Templates

  • Click "Use Template" in proposal builder
  • Browse templates by category
  • Preview template contents before applying
  • Choose whether to apply template title/description
  • Template items are automatically added to proposal

Template Management

  • Edit, duplicate, or delete templates
  • Organize templates by category
  • Search templates by name
  • Add items from Options Library to templates

Client Portal

Full-featured client portal with dashboard, proposals, invoices, messages, documents, and profile. Clients log in with their WordPress user account and access everything in one place.

Setup

  • Create a page and add the shortcode [proposal_client_portal]
  • In Proposals > Settings, assign the Client Portal page so the plugin knows where to send clients
  • Link clients to WordPress users (see below) so they can log in and see their data

Linking Clients to WordPress Users

  • Edit a client: Proposals > Clients β†’ open a client
  • Use the WordPress User meta box to link to an existing user (with proposal_client role) or click Create user from client
  • When creating a user, you can choose which contact to use if the client has multiple contacts
  • All proposals tied to any of the client’s contact emails are synced to that user automatically
  • An email with login credentials is sent to the client when a new user is created

Portal Sections

  • Dashboard: Overview and quick links to proposals, invoices, messages, documents
  • Proposals: List of proposals with status; open via token link or view summary
  • Invoices: Invoices from Invoice Ninja; status, amounts, due dates; payment links for unpaid; PDF download for paid
  • Messages: Send and receive messages with administrators
  • Documents: Shared documents and files (page is block-editor friendly so you can edit it in WordPress)
  • Profile: Client profile and account details

Invoice Access (Premium)

  • View all invoices linked to the client
  • Filter by status; use payment links for unpaid invoices; download PDF for paid invoices

Invoice Ninja Integration (Premium)

When a proposal is accepted:

  • An invoice is automatically created in Invoice Ninja
  • For recurring proposals, a recurring invoice is created (frequency matches proposal: monthly, quarterly, yearly)
  • One-time fees can be separated into a separate one-time invoice
  • The invoice includes all selected options, quantities, and the proposal description as public notes
  • Email confirmation is sent to the client (and invoice can be sent to customer if configured)

Invoice Settings (Integrations Tab)

  • Non-recurring invoice status: Create new invoices as Draft or Save and Send to Customer
  • Invoice due date (days): Number of days until the invoice is due (e.g., 30)

Client Synchronization (Premium)

Configure how clients sync between WordPress and Invoice Ninja:

  • Sync Direction: Choose bidirectional, Invoice Ninja β†’ WordPress only, or WordPress β†’ Invoice Ninja only
  • Auto-sync from Invoice Ninja: Enable automatic scheduled synchronization
  • Sync Frequency: Set sync frequency (Hourly, Twice Daily, Daily)
  • Manual Sync: One-click buttons to sync all clients from/to Invoice Ninja

Email Template Customization

Customize email templates in Proposals > Settings > Email Design:

  • Template types: Proposal Sent, Proposal Accepted, Proposal Declined, Proposal Reminder
  • Rich text editor with preview functionality
  • Customize email subjects and content
  • Reminder diagnostics and testing tools
  • Option to attach PDF to proposal emails
  • Logo and branding customization

Reminder System

Automatic reminder emails are sent based on proposal expiration dates so you can follow up with clients in a timely way.

How It Works

  • Reminders are sent only for proposals that have an expiration date and are in Sent or Viewed status
  • Schedule: 1 day or less β†’ every 12 hours; 3 days or less β†’ daily; 7 days or less β†’ every 2 days; 14 days or less β†’ every 3 days; more than 14 days β†’ weekly
  • Content uses the Proposal Reminder template in Proposals > Settings > Email Design

Testing & Diagnostics

  • Use the reminder diagnostics tools in the Email Design tab to test reminder content and see when the next reminder would run

Hooks & Filters

Actions

  • proposal_system_after_acceptance - Fires when proposal is accepted
  • proposal_system_client_synced - Fires after client sync completes
  • proposal_system_user_synced - Fires after user sync completes
  • proposal_system_version_created - Fires when a proposal version is created
  • proposal_system_version_restored - Fires when a proposal version is restored
  • proposal_system_version_deleted - Fires when a proposal version is deleted

Filters

  • proposal_system_before_invoice_create - Filter invoice data before sending to Invoice Ninja
  • proposal_system_calculate_total - Filter for custom calculation logic
  • proposal_system_before_client_sync - Filter client data before syncing
  • proposal_system_currencies - Filter to add custom currencies
  • proposal_system_invoice_ninja_currency_mapping - Filter currency mapping to Invoice Ninja
  • proposal_system_skip_version_creation - Filter to skip version creation for specific saves

Need More Help?

Can't find what you're looking for? Contact our support team.

Contact Support