Skip to content

MainWP — Creating Contracts

Create contracts from MainWP → Extensions → WPSigner → Create (tab=create). You can also deep-link with client_id and/or site_id query args so Client and Site are preselected (used by widgets and columns).


  1. Have an active WPSigner template with signature fields mapped to Signer slots.
  2. Optionally configure Settings (agency signer, workflow, OTP/KYC defaults).
  3. For OTP/KYC toggles on Create, set WPSigner Security & Compliance to Choose per document (and configure Didit for KYC).

FieldDescription
TemplateActive WPSigner templates. The UI shows required signer count when greater than one.
Document titleOptional. Empty → {template name} - {Y-m-d H:i}.
MainWP ClientAssociates the contract; prefills Signer 1 when the client has an email.
MainWP SiteAssociates the contract; selecting a site can auto-select its linked client.
Signer 1…NName + email rows. Count matches template signer slots by default.
Sending orderParallel or sequential (shown when more than one signer).
Identity checksOTP / KYC when gates allow (see below).
Send immediatelyIf checked, emails go out after create (subject to rate limits).

WPSigner templates define signer orders on signature fields (Signer 1, Signer 2, …). The Create form builds one row per required order.

RuleDetail
Row orderFirst row = Signer 1, second = Signer 2, and so on
MappingSigning order and field mapping follow the list order
Minimum rowsYou cannot remove rows below the template’s required count
Extra rowsAdd signer can add more; a warning explains that the template must have matching slots

If the submitted signers do not cover every required signer_order, create fails with a missing-signers error.

SignerTypical source
Signer 1MainWP Client name/email (AJAX imwp_client_signer), or manual entry
Signer 2+Settings → Default agency signer, else current user

Available when signer count > 1. Default comes from Settings.

ModeWhat happens on Send
ParallelAll signer-role recipients receive the signing request email.
SequentialOnly the next signer in order is emailed; subsequent signers are notified after earlier ones complete.

Stored on the document as signing_workflow. See also Signer Workflows in core docs.


MainWP reads WPSigner SigningGates and renders the Create UI accordingly.

Gate modeCreate UI
AlwaysInfo message — OTP required for all documents
Choose per documentCheckbox (prefills from Settings default_require_otp)
OffMessage — set WPSigner Security → OTP to Choose per document
ConditionCreate UI
Always + Didit readyInfo — KYC required globally
Choose per document + Didit readyCheckbox (prefills from Settings)
Didit not configuredWarning — configure Didit in WPSigner first
OffMessage — set Security → KYC to Choose per document

When a gate is configurable and the checkbox (or Quick create default) is on, the addon writes per-document security_settings via WPSigner’s sanitizer.

v1.5.8 behavior

MainWP never changes global WPSigner options (otp_mode / kyc_mode). Enabling OTP/KYC from Create does not promote Off → per-document. Configure the policy in WPSigner first.

Related: Didit.me integration, Security & Permissions.


Create Pipeline (What Happens Server-Side)

Section titled “Create Pipeline (What Happens Server-Side)”
  1. Verify WPSigner ready + user can manage.
  2. Load template; non-admins may only use their own templates (admins can use any).
  3. Sanitize signers; assert all required signer orders are covered.
  4. If sending: soft rate-limit (create_send, ~30 seconds).
  5. Create document from template in WPSigner.
  6. Prefill template variables from Client/Site (Template Variables).
  7. Save signing_workflow and optional security_settings.
  8. Upsert MainWP link — if link fails, the draft document is deleted (no orphan).
  9. Apply tags (MainWP + optional Client/Site labels).
  10. Log activity created.
  11. Optionally send_document (separate send rate-limit also applies).

If send fails after a successful create+link, the API returns the document ID with sent: false and a send_error message so you can retry Send from the list.


Available from Client/Site Contract cards and the Site WPSigner tab when a Default template is set.

  1. Uses Settings → Default template.
  2. Builds title: Contract — {site or client name} — {Y-m-d}.
  3. Signer 1 from client email (fails if client has no email).
  4. Signers 2…N from Default agency signer / current user.
  5. Applies default OTP/KYC settings when gates allow.
  6. Sends according to Settings auto_send (or explicit POST send).
  • Need a different template
  • Need to edit signer names/emails carefully
  • Need a custom title or different OTP/KYC choice than defaults
  • Client has no email contact (enter Signer 1 manually on Create)

On create, Client/Site fields map into template variables (for example client_name, site_url, date). History records whether variables were prefilled.

Full key list and developer filter: Template Variables.