Skip to content
Last updated

EviSign

EviSign is the Namirial Notify service for sending documents for remote electronic signature. You create a signature request specifying the document, the signer or signers, and the signing method. Namirial Notify delivers the request, tracks each signer's actions, and records evidence for the configured workflow stages.

EviSign requests are created in the Namirial Notify platform. This page focuses on workflow behaviour, signer experience, and callback semantics. For issuer step-by-step instructions, see How to create a new EviSign.

For shared concepts and terminology used across services, see States and outcomes and Evidence and affidavits.


When to use EviSign

Pick EviSign when you need to obtain a remote electronic signature on one or more documents and record evidence for the signature workflow. Pick a different service when:

  • You need to deliver a certified message to a recipient's inbox without a signing step. Use EviMail.
  • You need recipients to access hosted content and record on-platform interactions. Use EviNotice.
  • You need to deliver a certified message via SMS or RCS. Use EviSMS.
  • You need certified physical mail. Use EviPost.

A side-by-side comparison is on the Services page.


How the pieces fit together

EviSign involves a small set of related concepts. Keep these distinct as you read the rest of the page.

via AffidavitPublished
callback

EviSign
(1 document + N signers)

Signing parties
(Signers, Reviewers, Interested)

Events
(Processed, Sent, Delivered,
Signed, Rejected, Closed…)

Evidence items
(stage timestamps + details)

Affidavits
(PDFs signed by Namirial Notify)

Callbacks
(filtered by push notification settings)

Your system
(HTTPS endpoint)

  • EviSign — a single signature request for one document and one or more signers. Identified by a UniqueId assigned by the platform.
  • Signing party — a signer, reviewer, or interested party. Each signer has their own delivery, access, and commitment events tracked separately.
  • Event — a recorded fact during the lifecycle, such as Sent (signature request delivered) or Signed (signer completed the flow).
  • Evidence item — the recorded data behind an event, including timestamps and signer details.
  • Affidavit — a signed PDF that certifies one or more evidence items.
  • Callback — an HTTP POST that Namirial Notify sends to a configured endpoint when an event matches the push notification filter you set.

How EviSign works

Lifecycle overview

Submit accepted

Content certified, workflow prepared

Signature requests sent to first signer(s)

Signed outcome

Rejected outcome

Expired / Cancelled / Failed outcome

Failed (processing error)

Submitted

Processed

Sent

Closed

Sent reflects the evidence-level state.
Each signer has their own party status:
None → Signed or None → Rejected.
FullySigned fires when all required
signers have signed.

Key state transitions

Submitted → Processed — Namirial Notify validates the submission, certifies the document content, and prepares the signature workflow.

Processed → Sent — Signature request notifications are sent to the first signer(s) in the configured order. For sequential multi-signer workflows, each subsequent signer receives their request only after the previous one completes. The evidence state moves to Sent when at least one signature request has been dispatched.

Sent → Closed — The workflow closes when all required signers have acted, the configured time to live elapses, the issuer cancels the request, or a failure prevents further processing. The Outcome field records the final result.

Party status (per signer) — Each signing party has its own status independent of the evidence state: None (awaiting action) → Signed or Rejected.


Signing methods

The signing method configured for each signer controls how they authenticate and complete the signature step.

ValueDescription
MobilePinA PIN is sent to the signer's mobile number. The signer enters it to confirm the signature.
EmailPinA PIN is sent to the signer's email address. The signer enters it to confirm the signature.
ChallengeThe signer answers a challenge question defined when the request is created.
HandwritingThe signer draws their signature on a web canvas.
ExternalHandwritingHandwriting signature collected via an external service.
UserCertificateThe signer signs using their own personal digital certificate.
WebClickSimple web click to accept. Deprecated — use MobilePin, EmailPin, or Challenge for new workflows.

The signing methods available depend on the certification level selected and on which methods are enabled for your tenant.


Request delivery channel

Each signer is defined in SigningParties with both a notification address and the way that address should be interpreted:

ParameterValuesMeaning
SigningParties[n].AddressTypeEmail, PhoneNumberWhether the signature request is delivered to an email inbox or to a mobile number.
SigningParties[n].AddressstringThe actual email address or international-format phone number.

When the signer is notified through a mobile number, SignatureRequestPolicy controls the channel used for the signature-request notification:

ValueBehaviour
SmsOnlySend the request by SMS only.
WhatsAppOnlySend the request by WhatsApp only.
SmsThenWhatsAppTry SMS first, then WhatsApp as fallback.
WhatsAppThenSmsTry WhatsApp first, then SMS as fallback.

For MobilePin signing, the PIN delivery itself is configured separately:

  • WhatsAppPinPolicy: Disabled, Optional, Fallback
  • AllowVoicePinFallback: allows the signer to request the PIN by voice call if PIN delivery is needed

Other delivery-related fields on each signer include RequiresCaptcha, DisableSignRequests, DisableFinalNotification, and DisableStateNotifications. The older top-level Options.RequireCaptcha field is kept only for backward compatibility; use SigningParties[n].RequiresCaptcha instead.


Signature questions

Signature questions (SignatureQuestions) are additional data fields presented to the signer during the signing flow — for example, to capture identity data, consent answers, or other information required by the process.

Each question is an object in the SigningParties[n].SignatureQuestions array with a Key, Label, TypeName, and optional Required, ValidationRegex, DefaultValue, and SelectListItems (for SelectList type only).

Supported TypeName values

TypeNameWhat the signer providesValidation
TextFree text (single line)None
MultiLineTextFree text (multiple lines)None
NumberInteger numberMust be a valid integer
DecimalDecimal numberMust be a valid decimal
DateDateMust be in dd-MM-yyyy format
CheckBoxCheckbox (true / false)None
SelectListOne option from a provided listMust match a value in SelectListItems
PasswordText (input is masked)None
EmailAddressEmail addressMust be a valid email format
PhoneNumberPhone numberMust be in international format (e.g. +34914237080)
BankAccountBank account numberNo format validation
BankAccountESSpanish bank account (20 digits, no spaces)Must be a valid Spanish account with check digit
BankAccountIBANIBAN account (ISO 13616)Must be a valid IBAN
BankAccountIBANESSpanish IBAN (24 digits, no spaces)Must be a valid Spanish IBAN with check digits
SwiftCodeSWIFT / BIC codeNone
DocumentIdIdentity document or passport numberNone
SpanishDocumentIdSpanish NIF or NIE (including check digit)Must be a valid Spanish NIF/NIE format
IntlVatIdInternational VAT IDNo check-digit validation
SpanishVatIdSpanish tax ID (NIF, CIF, or VIES VAT number with country prefix)Must be a valid Spanish fiscal identifier
ImageImage file upload (JPEG or PNG)Must be a JPEG or PNG
FileAny file uploadNone
DynamicSignatureBiometric handwritten signature with metadataRequires a mobile device and the Namirial signing app
NoneNo input — displayed as informational text onlyNone

DynamicSignature requires a supported mobile device and the Namirial mobile signing app. It is not available in standard browser-based flows.


Signature step

SignStep controls at what point in the signing flow the identity or authentication step happens relative to document review. It is set per signing party as SigningParties[n].SignStep (nullable — when omitted the platform uses AfterDoc).

ValueWhen authentication happensLite FlowTypical use
BeginBefore everything — authentication is the first action the signer takes, before any document or attachment is shown.✅ CompatibleWhen the issuer wants to confirm signer identity before exposing any content.
BeforeDocAfter any pre-document attachments, before the main document — signer authenticates, then reads the document.❌ IncompatibleWhen the issuer wants identity confirmed before the document is opened, but after optional prior information is reviewed.
AfterDocDuring or immediately after viewing the main document — the signer reads the document, then completes the authentication/signature step. This is the default when SignStep is not set.✅ CompatibleStandard signature flows where the signer reads the document and then signs.
EndAfter all documents and attachments — the signer reviews everything first, then authenticates and commits at the very end.❌ IncompatibleWhen the issuer wants the signer to see the complete package before any commitment.

SignStep is independent per signer — different parties in the same submission can use different values.

The older SignDelivery boolean is an earlier equivalent of SignStep: setting SignDelivery: true is the same as SignStep: Begin. To avoid ambiguity, set SignStep on its own rather than combining the two.


Generated Signed Document (GSD)

GSD produces an additional PDF after the signing process completes. The output document contains the original content with each signatory's electronic signature graphically embedded at the configured position. It is independent of the affidavits generated during the process.

API parameters

GSD is controlled by two parameters in the top-level Options object:

ParameterTypeDescription
Options.GenerateSignedDocumentboolSet to true to enable GSD for this submission.
Options.GenerateSignedDocumentOptions.CertificationCertificatestringIdentifier of the site or user certificate to use when certifying the generated document. Omit to use the default configured certificate.

Signature appearance per signer

Each object in SigningParties accepts a SignatureAppearances parameter that defines where the signer's signature is placed in the generated PDF.

SignatureAppearances: '[{"PageNumber":1,"Left":100,"Bottom":100,"Right":300,"Top":150}]'

The value is a JSON array serialized as a string. Each element defines one appearance on one page:

FieldTypeDescription
PageNumberint1-indexed page number where the signature box is placed.
LeftnumberX coordinate of the left edge of the signature box, in PDF points from the left of the page.
BottomnumberY coordinate of the bottom edge of the signature box, in PDF points from the bottom of the page.
RightnumberX coordinate of the right edge of the signature box, in PDF points from the left of the page.
TopnumberY coordinate of the top edge of the signature box, in PDF points from the bottom of the page.

The PDF coordinate system has its origin (0, 0) at the bottom-left of the page. X increases to the right; Y increases upward. One point equals 1/72 of an inch.

If SignatureAppearances is omitted for a signer, GSD still runs but that signer's signature is embedded without a visual representation at a specific location.

SignatureAppearances requires Handwriting signing method and is not compatible with Lite Flow.


Lite Flow

Lite Flow is a simplified signing interface that reduces the number of steps a signer sees, for a faster signing experience.

API parameter

LiteFlow is set per signing party in SigningParties:

ParameterTypeDefaultDescription
SigningParties[n].LiteFlowbool?falseSet to true to activate Lite Flow for this signer. Can be mixed — some signers can use Lite Flow while others use the standard flow in the same submission.

Compatibility

Not all EviSign features are supported when LiteFlow is true for a signer.

FeatureSupported
Challenge signing methodNo
Handwriting signing methodNo
SignatureAppearancesNo
SignedRedirectUrlNo — always redirects to the finish page
BeforeDoc sign stepNo
End sign stepNo
GeolocationNo
LandingPageInfoTextNo — accepted but not shown
MobilePin signing methodYes
EmailPin / WebClick signing methodYes
Voice PIN fallbackYes
WhatsApp (Disabled, Optional, Fallback)Yes
Iframe deliveryYes — requires simple delivery
Signature questionsYes
Begin sign stepYes
AfterDoc sign stepYes
Attachments (with or without required signature)Yes
Additional commitmentsYes
Commitment optionsYes
Accept / reject reasonsYes
Generated Signed Document (GSD)Yes
Reviewer roleYes
Signing orderYes

Party roles

RoleDescription
SignerMust complete the signing step. Their action is tracked and drives the party status.
ReviewerReviews the document before the signing step. Depending on configuration, a reviewer may need to accept or reject before signers can act.
InterestedReceives notifications at configured stages but does not sign.

Certification level

The certification level determines the legal strength of the signature and which signing methods are supported.

ValueDescription
NoneNo legal certification. Evidence is recorded but no certified affidavit is generated.
Standard:EUStandard electronic signature under EU eIDAS.
Standard:CO, Standard:CR, Standard:EC, Standard:MX, Standard:PEStandard signature for the respective country.
Advanced:EUAdvanced electronic signature under EU eIDAS. Requires a stronger signing method.
Advanced:CO, Advanced:CR, Advanced:EC, Advanced:MX, Advanced:PEAdvanced signature for the respective country.

Do not submit Standard or Advanced without a country suffix. For regions not covered, the EU value is usually used, as European regulations are widely accepted.


Evidence access control

EvidenceAccessControlMethod controls who can open the evidence record after the process closes. It is set in Options alongside optional challenge fields.

ValueBehaviour
DefaultUses the access control method configured for the site or reseller.
PublicNo access restriction — anyone with the evidence URL can view it.
SessionDeprecated. Throws an error for all new integrations. Use Challenge or AutoChallenge instead.
ChallengeThe viewer must correctly answer a custom question defined by the issuer at submission time.
AutoChallengeThe viewer must answer a system-generated question based on known transaction data (for example, the issuer's email address or the destination address used in the submission).

When Challenge is selected, set the question and expected answer in the same Options object:

ParameterTypeDescription
Options.EvidenceAccessControlMethodAccessControlMethod?The access control method to apply.
Options.EvidenceAccessControlChallengestringThe challenge question shown to the viewer. Required when method is Challenge.
Options.EvidenceAccessControlChallengeResponsestringThe correct answer. Required when method is Challenge. Comparison is case-insensitive.

For how recipients experience the access challenge when following an evidence link, see Accessing archived evidence as a recipient.


What the signer sees

The signer receives the signature request through the channel configured for their party — email for Email parties, or SMS/WhatsApp delivery for PhoneNumber parties. They follow a secure link into the Namirial Notify signing flow, complete any required authentication step (challenge, PIN, etc.), review the document, and accept or reject.

For the full recipient experience, see How a recipient receives an EviSign.


Embedded delivery integration

EviSign supports loading the signing flow directly inside your application via an iframe or a native WebView. This allows you to embed the signing experience without redirecting the user away from your product.

Per-party delivery parameters

The following parameters in each SigningParties object control how the signing URL is delivered and loaded:

ParameterTypeDescription
DeliveryWebViewstringIdentifier of the WebView channel registered for your site. When set, the signing URL is scoped to that WebView context.
DeliverySubDomainstringCustom subdomain under which the delivery area is loaded. Used when the signing flow should be served from a branded domain.
DeliveryCustomUrlstringCustom redirect URL used when DeliverySubDomain is set.
DeliveryProfilestringID of the delivery profile that selects which delivery portal the signer should sign on.

Status events during the signing flow

During the embedded signing process, Namirial Notify communicates status changes back to the host application through the X-Herma-Problem-Details response header. The payload follows RFC 7807 — Problem Details for HTTP APIs.

For WebView channels, the header is set on each response within the signing flow:

X-Herma-Problem-Details: <JSON>

For iframe channels, the same data is dispatched as a JavaScript event to the parent window, allowing the host page to react without inspecting response headers.

Payload structure

FieldTypeDescription
TypestringURI identifier of the event type.
StatusintHTTP status code of the request.
TitlestringShort human-readable description of the event.
DetailstringDetailed description of the event.
InstancestringURL that triggered the event.
DataobjectAdditional event-specific data. Common keys include PartyId (present when the event is associated with a specific signer) and error detail entries when a problem occurred.

Example payload

{
  "Type": "https://namirial.com/evisign/event/signed",
  "Status": 200,
  "Title": "Signer completed the signature step",
  "Detail": "The signer accepted and signed the document.",
  "Instance": "/delivery/evisign/abc123/commit",
  "Data": {
    "PartyId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  }
}

Callbacks and what you receive

When a state in the push notification filter is reached, Namirial Notify sends an HTTP POST to the configured endpoint. Callbacks are per-EviSign and opt-in. They are configured at creation time either in the platform UI or through Options.PushNotificationUrl and Options.PushNotificationFilter in API-based submissions.

Available events

EventWhen it fires
ProcessedThe document was certified and the workflow was prepared
SentA signature request notification was sent to one signer
DeliveredA signature request notification was delivered to one signer
SignedOne signer completed the signing step
RejectedOne signer rejected the document
FullySentSignature request notifications were sent to all parties
FullyDeliveredSignature request notifications were delivered to all parties
FullySignedAll required signers completed the signing step
ClosedThe workflow reached its final state
AffidavitPublishedAn affidavit was generated and is ready for download

Sent, Delivered, Signed, and Rejected fire once per party. FullySent, FullyDelivered, and FullySigned are aggregate events that fire once for the whole EviSign.

Base payload

Every callback shares the same envelope:

{
  "Identifier": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "Kind": "Signed",
  "Date": "2026-03-10T09:22:14.0000000+01:00",
  "EvidenceId": "9f3e1a02-b74c-4d8e-91c5-f00012345678",
  "EvidenceType": "eviSign",
  "EvidenceState": "Sent",
  "Owner": "John Doe",
  "OwnerEmail": "sender@example.com",
  "Site": "my-site",
  "AdditionalData": { }
}

Use Identifier as the idempotency key on your side. For retry behavior and general callback guidance, see Callbacks and webhooks.

AdditionalData fields — per event

Most events include signer details in AdditionalData.

The field names SignerNotificationAddres and SignerNotificationAddresType (both missing the final s) and OutCome (capital C) reflect the actual payload produced by the platform. Use these exact strings when reading from AdditionalData.

Sent — signature request sent to one signer

{
  "Kind": "Sent",
  "AdditionalData": {
    "SignerName": "Alice Martin",
    "SignerNotificationAddres": "alice@example.com",
    "SignerNotificationAddresType": "Email",
    "SignerRole": "Signer",
    "TransmissionSuccess": true,
    "TransmissionDescription": "Signature request sent",
    "EventDescription": "Signature request dispatched"
  }
}

Delivered — signature request confirmed delivered to one signer

{
  "Kind": "Delivered",
  "AdditionalData": {
    "SignerName": "Alice Martin",
    "SignerNotificationAddres": "alice@example.com",
    "SignerNotificationAddresType": "Email",
    "SignerRole": "Signer",
    "TransmissionSuccess": true,
    "TransmissionDescription": "Delivery confirmed",
    "EventDescription": "Signature request delivery confirmed"
  }
}

Signed — one signer completed the signing step

{
  "Kind": "Signed",
  "AdditionalData": {
    "SignerName": "Alice Martin",
    "SignerNotificationAddres": "alice@example.com",
    "SignerNotificationAddresType": "Email",
    "SignerRole": "Signer"
  }
}

Rejected — one signer rejected the document

{
  "Kind": "Rejected",
  "AdditionalData": {
    "SignerName": "Alice Martin",
    "SignerNotificationAddres": "alice@example.com",
    "SignerNotificationAddresType": "Email",
    "SignerRole": "Signer"
  }
}

FullySent, FullyDelivered, FullySigned, Processed — no AdditionalData fields beyond the base payload.

Closed — workflow reached its final state

{
  "Kind": "Closed",
  "AdditionalData": {
    "OutCome": "Signed"
  }
}

When the outcome is Cancelled, CancelComments is also included if a reason was provided:

{
  "Kind": "Closed",
  "AdditionalData": {
    "OutCome": "Cancelled",
    "CancelComments": "Request withdrawn by issuer"
  }
}

AffidavitPublished — an affidavit is ready

{
  "Kind": "AffidavitPublished",
  "AdditionalData": {
    "AffidavitId": "b7f1e3c0-1234-5678-abcd-ef0987654321",
    "AffidavitKind": "PartyCommitted",
    "AffidavitName": "Party commitment affidavit"
  }
}

RequestId is included only for on-demand affidavits. Regenerated: true is included only when the affidavit was regenerated by a platform command.

What each callback means

KindWhat happenedTypical action
ProcessedDocument certified, workflow readyLog and wait for Sent
SentSignature request sent to one signerLog signer notification
DeliveredSignature request confirmed deliveredUpdate signer delivery status
SignedOne signer completed signingTrack per-signer progress
RejectedOne signer rejected the documentNotify your process owner
FullySentAll parties notifiedConfirm all parties received the request
FullyDeliveredAll parties delivery confirmedConfirm delivery for all
FullySignedAll required signers signedTrigger downstream business process
ClosedWorkflow completeCheck OutCome and update your records
AffidavitPublishedAffidavit readyDownload and store using AffidavitId

Callback reliability

Namirial Notify retries failed callbacks. Return 2xx before doing heavy processing — use a background queue for the work. Use Identifier as an idempotency key; the same event can arrive more than once on retries.

Securing your callback endpoint

Namirial Notify sends callbacks as plain HTTP POST requests with no authentication header. Use HTTPS, restrict by IP, and validate EvidenceType and EvidenceId on every incoming request. See Security and authentication for full guidance.


States reference

StateDescriptionTerminal?
DraftThe EviSign has been staged but not yet submittedNo
SubmittedThe submission was accepted and is being processedNo
ProcessedThe document was certified and the workflow was preparedNo
SentSignature requests have been sent to signer(s)No
ClosedThe workflow reached its final state — no further changes expectedYes

Forwarded and Received exist in the source but are not part of the normal main workflow. They may appear in specific or legacy flows.


Outcomes reference

The Outcome is None until the EviSign reaches Closed. Once closed, it reflects the final result.

OutcomeWhen it is set
NoneWorkflow is still active
SignedAll required signers completed the signing step
RejectedAt least one required signer rejected the document
ExpiredThe configured time to live elapsed before all required signers acted
CancelledThe issuer cancelled the signature request
FailedA processing error prevented the workflow from completing normally

Evidence and affidavits

When each affidavit is generated

Affidavit kindStageWhat it certifies
SubmittedProcessingDocument content and submission metadata at the moment of submission
SubmittedAdvancedProcessingExtended submission certification
SignatureRequestDispatchedPer signer — SentThat the signature request was sent to a specific signer
SignatureRequestResultPer signer — Signed or RejectedThe signer's action (accepted, rejected, or expired)
PartyCommittedPer signer — commitmentThe signer's explicit commitment action with timestamp and identity details
FinalNotificationDispatchedClosureThat the final notification was sent after the workflow closed
FinalNotificationResultClosureThat the final notification was delivered
MainClosureMain evidence document
SummaryClosureFull workflow summary. Must be explicitly requested.
AttachmentPer attachmentCertifies each attached file
EventPer tracked eventPer-event evidence record
FailedOn failureFailure details and state at failure time

Affidavits are delivered via AffidavitPublished callbacks if subscribed.


Integration checklist

Use this as a reference when integrating callbacks or downstream processes with an EviSign workflow.

Workflow configuration

  • Callback endpoint URL is HTTPS in production
  • Push notification filter includes at minimum FullySigned,Closed,AffidavitPublished
  • Affidavit kinds are selected to match your compliance requirements
  • Certification level matches the legal requirements for your use case

Callback handling

  • Your endpoint responds 2xx before doing any heavy processing
  • Your endpoint is idempotent — the same callback may arrive more than once
  • You validate EvidenceType == "eviSign" on every incoming callback
  • You use Identifier to deduplicate retried callbacks

State handling

  • You do not treat FullySigned as final — wait for Closed before updating your records
  • You handle all terminal outcomes: Signed, Rejected, Expired, Cancelled, Failed

Affidavits

  • You download and store affidavits when the AffidavitPublished callback fires

Troubleshooting

The signer never received the signature request

Possible cause: The notification address is incorrect, or the notification was filtered as spam.

What to check:

  1. Ask the signer to check their spam or junk folder.
  2. Verify the email address or phone number configured for the signer.
  3. Check whether the Sent callback fired — if not, the notification may not have been dispatched yet.
  4. Confirm the EviSign has progressed to Sent state.

I receive Signed callbacks but no FullySigned

Possible cause: Not all required signers have acted yet. FullySigned fires only when all required parties have signed.

What to check:

  1. Review the signing party list and confirm whether parties with None status are required.
  2. Check whether those parties have received their signature request — look for a Sent callback per party.
  3. If the workflow uses a sequential signing order, earlier parties must sign before later ones receive their request.

The Closed callback arrived with OutCome: "Rejected"

Possible cause: At least one required signer rejected the document.

What to check:

  1. Identify which party rejected by reviewing the Rejected callbacks received before Closed.
  2. Decide whether to create a new EviSign with corrected content or contact the signer directly.

I am not receiving AffidavitPublished callbacks

Possible cause: AffidavitPublished is not in the push notification filter, or no affidavit kinds were selected at creation time.

What to check:

  1. Confirm AffidavitPublished is included in the configured event filter.
  2. Confirm at least one affidavit kind was selected when the EviSign was created.

Possible cause: The EviSign has already closed (signed, rejected, expired, or cancelled), or the signing link has reached its configured time limit.

What to check:

  1. Check the current state of the EviSign.
  2. If the EviSign is still open (Sent state), the issuer can use the platform to resend the signature request.
  3. If the EviSign is already Closed, it cannot be reopened — create a new one.