PD Agreements for WHMCS

PD Agreements — Versioned Terms, Contracts & E-Signature with Evidence PDFs

Versioned terms, contracts and SOWs your customers actually sign — with evidence you can produce years later

Made and supported by Projektif Digital Ltd. Runs inside PD Modules, the panel every module installs into.

Billing & Sales Clients & Productivity

PD Agreements lets a hosting company put its Terms of Service, Acceptable Use Policy, Data Processing Agreement or any statement of work in front of the right customers, have them sign it, and keep proof of exactly what each customer agreed to. You write the agreement once in your WHMCS admin and publish it as a numbered version. Customers sign at checkout or the next time they sign in, and every signature is stored with the version, a content fingerprint, the date and time, and the method used.

It is built for hosts and agencies who need more than a tick box. When a chargeback, an abuse complaint or a data-protection question arrives years later, you can produce the signed record and an evidence PDF instead of an argument.

Why hosts choose PD Agreements

Proof, not a tick box. Publishing freezes the text as a version with its own SHA-256 fingerprint, publisher, time and change note. Earlier versions stay exactly as published, so a customer who signed version 1 stays attached to what version 1 said.

The order cannot skip the contract. A required checkout agreement blocks the order until it is accepted, and the acceptance is recorded against the order number. Agreements you set to "next sign-in" take the customer to a signing page when they next open the client area.

Ask only the customers who need to sign. Aim an agreement at everyone, or at chosen products, product groups, add-ons, client groups or individual clients. A support addendum can go only to customers who bought the support add-on. Choose "any of these" or "all of these", and leave out clients who have a product, add-on or group you name. An exclusion always wins.

Changed terms, asked again. Publish a new version and, if you tick "everyone who signed an earlier version must accept this one", earlier signers are asked again. Customers already on the current version are never asked twice, and a customer is only shown agreements that apply to them.

No chasing by hand. An Awaiting signature list shows every customer who owes a signature and exactly what is missing. Send a reminder to one customer or all of them, or switch on automatic reminders, which email everyone outstanding at most every N days through an email template you can edit and translate.

Evidence that stays yours. PD Agreements makes no outbound calls. The evidence PDF is generated on your own server, and your signatures live in your own WHMCS database.

How it works

  1. Write the agreement. Compose it in plain Markdown, choose its type and how the customer signs, and save it as a draft. A draft is never shown to customers.
  2. Choose who signs and when. Pick the customers it applies to, and ask at checkout, on next sign-in or on demand. An agreement aimed at nothing is never enforced.
  3. Publish. The text is frozen as a numbered version with its fingerprint.
  4. Customers sign. They read, tick, and sign with a typed name, a drawn signature or a tick box, whichever you chose.
  5. You keep the proof. Open any signature to download its evidence PDF, or export signatures to CSV.

What you get in WHMCS

Writing and versioning

  • Agreements of any kind: terms, acceptable use, data processing, statements of work, or your own
  • Numbered, immutable versions, each with fingerprint, publisher, time, change note and a re-accept flag
  • Drafts that stay private until published
  • Delete an agreement to stop it being asked; every signature and the exact versions signed are kept

Targeting and timing

  • Checkout, next sign-in, or on demand. An on-demand agreement never blocks anything, and the acceptance is still recorded
  • Products, product groups, add-ons, client groups and individual clients, with add-ons chosen from a searchable list
  • An agreement aimed at an add-on is asked at checkout when that add-on is in the cart, and on next sign-in for customers who already have it
  • Put an agreement in front of one client whatever its targeting says, and take it back again; anything they signed is kept
  • One switch pauses every checkout agreement, another every sign-in agreement, without deleting anything

Signing

  • Tick box, typed full name (the default) or drawn signature, set per agreement
  • "Require scroll" keeps the accept control disabled until the customer reaches the end of the document, and short documents unlock at once
  • A drawn-signature agreement can be signed by typing a name instead, and the record shows the method actually used
  • Keyboard and screen-reader friendly, with a "Jump to the end" control and labelled fields
  • A grace period of N days adds "Remind me later"

Evidence and records

  • Each acceptance records the version, fingerprint, date and time, source (checkout or client area), order number, and, while "record IP address" is on, the IP address and browser
  • Evidence PDF with title, version, signer details, method, the signature or typed name, the full text as accepted, the fingerprint, a reference number and your own footer line
  • A signature can be revoked with a reason and time recorded, never deleted; a revoked customer is asked again
  • Signatures and the audit log export to CSV, filtered by agreement and date range, with the IP and browser columns left out when you have switched recording off

Running it day to day

  • The client profile shows an Agreements row: signed, outstanding, evidence links, and a copyable signing link you can email
  • While something waits for a signature, the client area shows a notice
  • Choose what an unsigned customer can still do: by default they can pay invoices and open tickets, or you can block everything except new orders, or everything until they sign. Sign-out, password reset and the signing page always work
  • Read-only assistant tools answer who has signed what and who is outstanding; the tools that change something ask for confirmation and are audited

What your customers get

  • One clear block at checkout: the document, a tick, and their name as a signature. Nothing to download or send back
  • Their own signed copies: customers can download their own evidence copies, and nobody else's
  • Accessible signing: a keyboard-only or screen-reader customer can reach the end of the agreement, accept it and sign
  • Your look: the order-form block renders on Six, Twenty-One and Nexus and their child themes

Security built in

  • Signatures are never deleted and published text can never change
  • Customers can only open their own signing records
  • The authenticated API refuses callers without a valid connection token, and a connection limited to some clients cannot read or change any other client
  • A drawn signature is stored in your database as an image and is never returned by the assistant tools
  • Uninstalling removes the module's tables and settings; the reminder email template is kept

One product, every feature

PD Agreements is one paid module with everything included. There are no add-on tiers. It installs into PD Modules in one click, updates itself, and adds its own tables without modifying WHMCS files, so it does not collide with other modules or a customised theme.

If your subscription ever lapses, the signatures you have already collected stay readable and downloadable. Managing agreements locks once the licence has expired, and asking customers to sign stops only if it is later suspended.

Requirements

  • WHMCS 9 or later on PHP 8.2 or later, with the ionCube Loader
  • PD Modules, the free control panel every PD module installs into

Watch the full tutorial

WHMCS Customer Agreements: Setup, Signatures & Version Control - PD Agreements | PD Modules. Watch on YouTube. The player loads from YouTube when you press play.

Questions

Does this replace the WHMCS "Terms of Service" tick box?

It replaces what that tick box is for. WHMCS links to a ToS URL and records nothing; PD Agreements shows the document itself, records who accepted which version, and gives you a downloadable evidence record. You can leave the native ToS setting in place or clear it — they do not conflict.

Is a typed name or a drawn signature legally binding?

In most jurisdictions an electronic signature is capable of being binding, and what decides a dispute is the evidence that a specific person accepted a specific text at a specific time — which is exactly what is stored: the version, a fingerprint of the wording, the date and time, the IP address and browser, and the signature itself. Whether a particular method suits your contract type and country is a question for your legal adviser.

What happens when I change my terms?

Publishing creates a new version; existing signatures stay attached to the version they signed. Tick "everyone who signed an earlier version must accept this one" and customers on older versions are asked again on their next login or next order. If you do not tick it, they are left alone and only new customers see the new version.

Can I edit a published version?

No, deliberately — the value of the record is that the text cannot be changed after the fact. Edit and publish again: you get a new version, and version history shows what changed and when.

Will an unsigned customer be locked out of everything?

Only if you choose that. By default an unsigned customer can still pay invoices and open tickets, so you never block a customer from paying you. You can tighten it to "nothing until signed" or loosen it to "everything except placing new orders". Logging out and password reset are always available.

Does anything leave my server?

No. PD Agreements makes no outbound calls. Agreements, signatures and evidence records live in your own WHMCS database, and the evidence PDF is generated on your server using the PDF engine already bundled with WHMCS.

Can a customer get a copy of what they signed?

Yes — by default they see their signed agreements in their client area and can download the same evidence PDF you can. You can turn that off in Settings.

Can I delete a signature?

You can revoke one, which records the reason and the time and asks the customer to sign again. You cannot delete it, because a record you can quietly remove is not evidence. Deleting an agreement removes it from your list and stops anyone being asked, but every signature keeps its evidence record, with the exact text that was signed.

Does it work with my client theme?

Yes. The order-form block uses paired Bootstrap 3 and Bootstrap 4 classes so it renders on Six, Twenty-One and Nexus and on child themes of either. The signing page is a standalone screen with its own styles. Both are fully translatable and can be overridden, and your overrides survive updates.

What if my subscription lapses?

Your customers are never locked out — the signing surfaces keep working and everything you have already collected stays readable and downloadable. Authoring new agreements and chasing signatures is what pauses until the licence is active again.

What does it cost to run, on top of the subscription?

Nothing beyond the module subscription. PD Agreements runs entirely inside your WHMCS and does not connect to a paid third-party service, so there is no usage bill, no per-message or per-GB charge, and no metered anything.

Can customers who use a keyboard or screen reader sign?

Yes. The agreement scrolls from the keyboard, the signature pad is labelled for screen readers, and a customer who cannot draw a signature can choose to type their name instead. The record shows the method actually used.

Can I aim an agreement at a particular add-on, or at customers who match several conditions?

Yes. Target products, product groups, add-ons, client groups or individual clients, and choose whether a customer is asked when they match any of your choices or only when they match all of them. You can also ask a single client to sign any published agreement.

Can I export signatures for an auditor?

Yes. Download the signatures or the audit log as a CSV for any period. A drawn signature appears as yes or no rather than the image, and the IP address and browser columns are left out when you have turned that recording off.

Can I stop asking customers who have bought a particular add-on or plan?

Yes. In the agreement, under "Except these customers", pick the add-ons, products, product groups or client groups to leave out. A customer who has any of them is not asked, whatever else you targeted, including an agreement for everyone. It is checked every time, so when a customer buys the add-on they stop being asked with nothing for you to remove, and if they lose it they are asked again. Signatures already collected are kept.

Can I take back an agreement I asked a client to sign?

Yes. Open the agreement and press Remove beside the client in the list of clients asked by name, or press Remove on their page in your admin area. They are no longer asked because they were named, and anything they already signed is kept. If your targeting still reaches them they are still asked, and the screen tells you so.

What’s new in 0.2.43

  • Leave customers out of an agreement: choose add-ons, products, product groups or client groups to except, and anyone who has one is no longer asked, for example once they buy a waiver add-on. You can also take back an agreement you asked one client to sign, from the agreement or the client's page.

Get your website online with PD Hosting

UK hosting, domains and support from a real team. From a first site to a full server.

Terms and Conditions  ·  Privacy Policy

PD Hosting is the trading name of Projektif Digital Ltd, registered in England and Wales, company number 12482555.

PD Hosting
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.