Directory / plugin
Assinafy
v1.5.0 · by Assinafy
Send PDFs for electronic signature with Assinafy, follow every signer from wp-admin, and download the certified file when it is signed.
About this plugin
Assinafy connects your WordPress site to the Assinafy electronic signature service. Choose a PDF you have already uploaded, name the people who must sign it, and send it for signature without leaving the admin. Each request stays on record inside WordPress, and its status is kept current until the document is signed and certified.
An Assinafy account is required. Connect your production workspace with OAuth from the settings screen. Existing API keys continue to work, and the sandbox still uses an API key.
What it does
- Send any PDF in the media library for signature, with a message and a deadline.
- Invite as many signers as you need, each with a name, an email address and an optional WhatsApp number.
- Control the order: signers sharing a number are invited together, a higher number waits for every lower number to sign.
- Track each request as its own record under Assinafy Documents, with a status badge and a per-signer progress line.
- Copy the signing link for any signer who has already been invited.
- Resend an invitation, move the deadline, rename the document before it is sent, or cancel the request.
- Download the original PDF, the signed PDF, the signature certificate page, the PAdES file and the complete bundle. Downloads are proxied through WordPress behind a capability check, so no Assinafy URL is ever exposed to a browser.
- Keep status current automatically: Assinafy can notify this site over a webhook, and an hourly background job reconciles anything a webhook missed.
- Three roles’ worth of access control: separate capabilities to send, to manage and to view signature requests.
- Optional WooCommerce integration: attach a PDF to a product and the customer is asked to sign it when their order is completed. The order gets a note either way.
- Optional Elementor Pro Forms action: send an existing local PDF to a mapped name/email signer. Development adapter: documented API contract tests pass; licensed Pro runtime validation is pending.
- WP-CLI:
wp assinafy status,send,syncandwebhook. - Privacy tools: the WordPress personal data exporter reports a person’s signature requests, and the eraser redacts their name, address and signing link while retaining the signature evidence.
Form integrations
The source repository also contains separate development add-ons for Gravity Forms, Contact Form 7 and WPForms. They are not bundled in this core ZIP. Each provides an existing-PDF workflow; none generates contracts or requires payment. CF7 and WPForms Lite have real-host tests. Gravity Forms, Elementor Pro and WPForms Pro still require licensed-host validation. See README.en.md and docs/integrations.en.md in that repository for exact scope and setup.
Sending from your own code
Any form plugin, theme or custom integration can send a document by firing one action:
do_action( 'assinafy_send_document', array(
'attachment_id' => 123,
'signers' => array( array( 'name' => 'Jane Doe', 'email' => '[email protected]' ) ),
) );
Use assinafy_send_document_async for the same thing on a scheduled event. Status changes fire assinafy_document_status_changed, plus assinafy_document_certificated, _rejected, _expired and _failed.
Verification methods
Assinafy offers four, and a signer uses one of them:
- Email (the default) — the signer receives a one-time code by email. No credits.
- WhatsApp — the code arrives over WhatsApp. Requires a phone number and a paid Assinafy plan.
- Digital certificate — the signer signs with their own ICP-Brasil certificate. Requires a virtual assignment, the Digital Certificate feature on the Assinafy account, and the signer must be alone in their signing step. Collect certificate requests are rejected before they can be charged or invited. The SDK also supports templates without placed signer fields; templates with placed fields are rejected by the API. The signer requires a valid CPF.
- Biometric —
IdDocumentFaceMatchBasicuses government ID photos and a liveness check on Assinafy’s hosted page with explicit signer consent. Requires the account feature and an existing signer with a valid CPF. Certification waits for account approval if identity review is required.
The send screen and WP-CLI send command use email verification. All four methods are available to code that calls the assinafy_send_document action or shared send service. DigitalCertificate covers A1 and A3. Certificates and biometric verification allow either Email or WhatsApp notifications.
Signing happens on Assinafy’s own hosted pages, not inside WordPress. This plugin composes the request, stores the document and assignment identifiers, and fetches status and files back.
Contract tracking
Open Assinafy, Contracts to list workspace contracts or enter a document ID. The Manage contract link on a local document keeps its workspace binding. Contract controls require assinafy_manage; edits, renewals and termination require a plan with contract tracking.
Save counterparty details, value/currency, start/end dates, automatic renewal, renewal months and notice days. Blank form fields clear their current values. Each existing contract write includes its revision; reload after a conflict. Renewal sends the current term so repeating a request cannot renew twice. Termination stops lifecycle alerts without changing the signed PDF.
Link a new document as an amendment, renewal or termination of an existing contract. View its proposed value/date and related documents; a pending link can be removed. Assinafy applies changes after certification. Advanced metadata, external references and all six contract methods are available through the SDK and wp assinafy contract.
OAuth uses documents:read and documents:write, already requested by the plugin. Contract state is read from Assinafy rather than copied into local WordPress records.
External services
This plugin connects to the Assinafy electronic signature service, which is where documents are uploaded, signed, certified and stored. It is required for the plugin to do anything.
API requests use one of two hosts, chosen by the Environment setting:
api.assinafy.com.br— Production. Real, legally effective signatures.sandbox.assinafy.com.br— Sandbox. Test signatures with no legal effect.
Production OAuth connection opens auth.assinafy.com.br for consent. A new tab first visits integrations.assinafy.com.br/wordpress/oauth-start with the public client ID, requested permissions, random state and PKCE challenge. Assinafy sends a short-lived authorization code to integrations.assinafy.com.br/wordpress/oauth-callback. That page validates the browser session, state and issuer, then shows the code for the admin to copy into the original WordPress settings tab. It does not forward the code to a site or receive the PKCE verifier, access token or refresh token. The plugin exchanges the code directly with api.assinafy.com.br using the verifier stored on this WordPress site. WordPress stores both tokens encrypted and renews them as needed. Each renewal is valid for another 30 days, so you only reconnect after 30 days without one, when Assinafy rejects the connection, or when a renewal was interrupted after leaving the site: a refresh token Assinafy may have retired is never sent again.
Production API requests use Authorization: Bearer after OAuth connection. Existing API-key connections and Sandbox requests use X-Api-Key. The signer-side token route needs neither credential.
Disconnect, and deleting the plugin with “Delete data on uninstall” enabled, revoke the connection at api.assinafy.com.br and remove this site’s OAuth tokens even if remote revocation fails. In that case, revoke the app in Assinafy Connected Apps. Both wait for a renewal in progress, so the latest token is the one revoked; Disconnect asks you to try again shortly.
What is sent, and when:
- Testing the connection, or registering the webhook (when you press either button): your account id. Registering also sends this site’s webhook URL and the notification address you type into the field.
- Pricing a request (immediately before a send): the number of signers and the verification method chosen for each. No file and no personal data.
- Sending a document for signature (when you press Send, when a WooCommerce order is completed, when an enabled form adapter processes an eligible submission, or when the
assinafy_send_documentaction fires): the PDF file, the document name, and for every signer their full name, email address and/or WhatsApp number, signing order, verification method and notification method, plus your optional message and the deadline. - Checking status (hourly, on a webhook delivery, when you open a document, and on
wp assinafy sync): the Assinafy document id. - Resending, moving a deadline, cancelling or renaming (when you press the button): the Assinafy document or assignment id, and the new deadline or name.
- Downloading a file (when you press a download link): the Assinafy document id and the name of the file requested.
No site visitor data, no post content and no WordPress user account data leaves the site beyond the connection details above and what you enter or explicitly map into a signature request.
Assinafy delivers status notifications back to this site over the webhook endpoint, if you register one. Those deliveries are used only as a signal to re-check a document.
Service terms: Terms of Use and Privacy Policy.