Electronic signature on a website: where it breaks and what it costs
An electronic signature on a website does not break at the moment the stroke is rendered, but at the junction of three layers: the canvas in the browser, the document's coordinate grid, and cryptographic validity.
The client signs on a tablet, sees a smooth flourish — but in the saved file the stroke is shifted by dozens of points or clipped at the edge.
The cause is almost always the same: canvas coordinates are taken from CSS dimensions, whereas the internal rendering grid has a different resolution, and when the page is scaled or the device orientation changes, the points drift.
The second class of failures is lost strokes. A quick gesture, the finger went beyond the area boundary, the release event was not captured — and an empty or partially empty set of points is sent to the server. Formally the signature exists, but when trying to prove its origin, it cannot be reproduced.
A separate story is the invalidity of the signed document: if between signing and saving the document is reassembled, metadata or byte order changes, signature verification fails, even though visually everything is in place.
The cost of such failures is not in the code, but in the disputes.
A dispute with a client where the signature is illegible or cannot be confirmed is almost always resolved not in favor of the service: proving after the fact that the flourish is genuine and the failure was technical is impossible.
That is why a reliable electronic signature on a website is built around three things: normalized canvas coordinates, a complete log of signing events, and validity verification immediately on the server side, before writing to storage.
Let's break down how this is covered: from binding the stroke to the document grid to scenarios where the signature remains legally significant after the file is reassembled.
What a correct signature implementation delivers: the effect in numbers
A correct signature implementation is not a "drawing field" but a controlled process: stroke capture, binding to the document, integrity verification, and evidence storage.
When these parts are assembled into a single loop, the effect is visible in measurable quantities rather than in feelings.
Speed and completion of signing
Signing a single form is reduced from minutes to tens of seconds: the client does not type in data, does not scan, and does not send the file back.
The form stops "falling apart" at the confirmation stage — the share of incomplete submissions drops, because the signature is placed in the same window where the fields are filled in.
Form conversion grows without any changes to the offer: the single step where people dropped off is removed.
Data integrity and the class of failures
A separate gain is that the class of failures related to data loss disappears: a connection drop, a closed tab, or a page reload no longer reset the signature. The draft and the stroke itself are saved, and when the client returns they continue from the same place.
The signature is cryptographically bound to the document version — substitution of the content after signing becomes visible rather than hypothetical.
Repeat inquiries and dispute resolution
Every action leaves a trace: who, when, from which device, and to which version of the document placed the signature. Disputed situations are resolved using the log rather than through correspondence, so repeat inquiries about the same document decrease.
For legally significant scenarios, the loop is built on CryptoPro — the enhanced signature is verified on the recipient's side, not only on ours.
Bottom line: signing time — seconds, incomplete forms — less frequent, data loss — eliminated, action history — recoverable.
Ways to implement a signature: comparing approaches
Choosing an implementation is not about "which library draws more beautifully," but about where the signature lives, how it is verified, and what will remain in the archive years later. Below are three genuinely competing approaches that teams choose between at the start of a project.
| Option | When it fits | Limitations |
|---|---|---|
| Native canvas (canvas + Pointer Events) | You need full control over behavior: pen pressure, smoothing, custom cancel and clear gestures | Everything is written by hand: scaling for screens, retina, touch and stylus, accessibility. More code — more places for errors |
| Third-party signature library | You need a working result quickly, with ready-made gestures, undo, and vector export | Dependency on someone else's release, extra weight on the page, limited access to the internal geometry of the stroke |
| Hybrid scheme | The signature is drawn on the canvas, while the legally significant part goes to a server-side service | Harder to maintain: two contours, synchronization, separate storage requirements |
The boundaries between the options blur when a signature is needed not as a picture, but as proof.
If the stroke remains only in the browser, it can easily be swapped in the console — which means a server-side contour is needed that records the fact of signing, the time, and the contents of the document.
The hybrid is justified where a signature has consequences: contracts, acts, consents. The native canvas — where speed and your own interface logic matter. The library — where the signature is decorative or internal and time to launch matters more than depth of control.
A practical criterion for choosing: answer what exactly you are storing — a picture of the stroke or proof. This determines both the scope of work and which checks will have to be built in from the start, rather than redone after the first disputed document.
Stages of implementing an electronic signature on a website
Implementing a signature is not "attaching a field to a form" but changing the way consent is confirmed and a legally significant artifact is stored.
Below is how we carry out such work so that the output is a reproducible scheme, not a set of scripts that no one will be able to maintain a month later.
- Audit of the current form. We look at how consent is currently collected: which fields are required, where input is validated, what goes to the server and in what form it is stored. We identify the points where the signature is embedded and check that adding it does not break the existing submission scenario.
- Designing the signature scheme. We determine what exactly is being signed — consent, request, contract — and how the signature is linked to the document. We design the storage format: the image of the stroke, the link to the document version, the timestamp and the client identifier.
- Setting up capture. We implement the signature area with correct input handling: line smoothing, accounting for screen scale, undo and clearing of the stroke. We separately cover the case when the signature is made with a finger or stylus rather than a mouse.
- Testing on devices. We run the scenario on desktop, tablet and smartphone in different browsers: we check that the stroke does not shift when the screen is rotated and is not lost when the form is reopened. We look at behavior on a slow connection.
- Processing and storage. The signature goes to the server together with the document, is stored in an immutable form and is linked to the consent record. We configure it so that the artifact cannot be substituted after submission.
- Testing and acceptance. We check the full path: filling out, signing, submission, reopening, export. Separately — failure scenarios, so that the client sees a clear message rather than a blank screen.
- Handing over documentation. We provide the storage scheme, a description of the integration points and a maintenance instruction so that further changes do not require taking the code apart again.
This order removes the main risk — a signature that looks functional but is not linked to the document and does not survive verification. Describe your form and your consent requirements — we will come back with an estimate and a work plan.
Artifacts and configurations you receive
We hand over not a "working module" but a complete package that allows the signature to be operated, verified, and passed on to another team. Below is exactly what remains with you after implementing electronic signature on your site.
- Capture configuration — profiles for mouse, pen, and finger: smoothing, stroke start threshold, polling rate, behavior on focus loss and when the cursor leaves the area. It is separately described how the curve changes under client-side compression.
- Coordinate scheme — mapping points to the document coordinate system taking into account scale, scrolling, and screen rotation. Without this, the signature "drifts" on mobile and when printing, and its legal value drops.
- Policies for access to signature data — who and on what basis reads the biometric template, where it is stored, how it is linked to the document, and how it is deleted upon expiration. Roles, access log, separation of rights for viewing and export.
- Verification regulations — the procedure for comparing the signature with the reference, match thresholds, what is considered a match, what is a doubt, and what is a rejection. Scenarios for disputed cases and escalation rules.
- Instructions for users and support — how to sign from a phone, what to do if the connection drops, how to challenge a rejected signature. A separate version for the first line.
- Integration scheme — connection points to your document storage, approval system, and accounts, exchange formats, and behavior when an external service is unavailable.
- Set of test scenarios — reference signatures, edge cases, and forgery checks by which the team accepts the result and reproduces it during updates.
The package is self-sufficient: a new engineer deploys the signature from it without verbal explanations, and the support service responds to requests without escalating to developers. Describe the task — we will return with an estimate and a plan for your signing scenario.
Case study: how we eliminated stroke loss during signing
The client — a delivery service — accepted order confirmations via a signature screen on the courier's tablet. On some devices the line "broke": the client moved their finger, but separate fragments remained on the screen. The signature looked unreliable, and it had to be redone on paper.
We reviewed the complaints and saw a pattern: failures occurred on devices with a high sensor polling rate, when the handler could not keep up with the event stream and lost intermediate points.
The problem accumulated imperceptibly — up to a certain pace of pen movement everything worked, beyond that the stroke fell apart.
What we changed
We switched rendering to event buffering: points accumulate in a queue and are smoothed before being output to the canvas, rather than being drawn one by one as they arrive. We added interpolation between neighboring points — the line remains continuous even during fast movement.
Separately, we synchronized the canvas scale and the device's coordinate grid, which was causing the stroke to shift relative to the pen.
Metrics before and after
| Indicator | Before | After |
|---|---|---|
| Share of signatures with breaks | 18% | less than 1% |
| Repeat requests regarding signatures | 6-8 per week | isolated cases |
| Share of signatures redone on paper | 22% | 2% |
The solution was built on Signature Pad — an open-source signature rendering library, which we modified for our conditions.
Stable rendering removed the main cause of repeat requests: clients stopped asking again whether their signature was valid, and support stopped handling repetitive tickets.
How does an electronic signature differ from a simple image?
An image of a signature is just a set of pixels that the browser rendered on a canvas and saved as a picture.
It can be copied, pasted into another document, edited in a graphics editor — the system will not distinguish the original from a forgery, because there is nothing to compare.
Such a visual imprint is suitable where a signature confirms an intent rather than creates an obligation: agreement to the terms of an application, an acknowledgment of receipt, an internal checklist. The cost of an error here is low, so it is enough to record the fact of the action itself.
A legally significant signature is structured differently. It is tied to a specific document and point in time: when signing, a checksum of the content is computed, data about the signer and a timestamp are added to it, and all of this is sealed with cryptography.
Change even a single character in the text afterward — and the verification will show a discrepancy, and the signature will become invalid. The visual imprint in such a scheme is secondary: it is needed for readability, not for proof.
Hence the difference in requirements. For the simple option, a canvas, saving the picture, and binding to the user's session are enough.
For the significant one, identification of the signer, secure storage of keys, a log of all operations, and validation of the signature each time the document is opened are needed.
Verification must work autonomously: even years later, a party will be able to confirm that the document has not changed since signing.
The choice is dictated not by the convenience of the interface, but by the consequences of a dispute. If the signature ever has to be presented as evidence, validation and an immutable trail are needed.
If it merely records an action within a process, a visual imprint is sufficient, and there is no need to build cryptography around it.
Common technical concerns when implementing signature
Before starting, customers usually ask the same questions: will the signature work on tablets and old browsers, will the server go down from the flow of signatures, and what happens to the data between the device and the storage. Below are short answers to each.
Will the signature work on any customer device?
Drawing happens on the browser side via a standard canvas, so the signature is applied equally with a mouse, finger, or stylus — on a tablet, laptop, or office terminal.
We test the scenario on current versions of major browsers and on mobile, including a reduced-sensitivity mode for the stylus. If some partners have old devices, we fix the list of supported ones in advance and keep a fallback path via scan upload.
Will the server load increase?
The drawing itself is a compact set of coordinates, not an image, so the weight of a single signature is measured in kilobytes. The server does not draw or render — it receives a ready set of points, validates, and stores it.
Even at peak recording of dozens of signatures per minute, the load stays within the normal API profile, and storage goes to object storage rather than the main database.
How is the transmission of signature data protected?
The channel is closed with encryption, requests are signed and tied to the user session — forging someone else's signature from outside is impossible.
Along with the drawing, we save the timestamp, document identifier, and template version so that the signature can be unambiguously matched to a specific request. Access to viewing and export is restricted by roles, and all operations are logged.
What about rollback and legal validity?
Every action is versioned: if a client disputes a signature, we retrieve the original set of points, the timestamp, and the signing context. This makes it possible to prove that the document was not changed after signing.
If the process requires an enhanced signature, we integrate an external provider, while the basic scenario remains as a fast path.
Describe your scenario — we will come back with an estimate and a plan for compatibility, load, and data protection.
Let's discuss your e-signature implementation task
To come back with an estimate and an implementation plan rather than generalities, we need to understand your current form: where it lives, how the signer reaches it, and what happens to the signed file afterward.
Describe this in free form — then we'll ask clarifying questions and show how an electronic signature on your website will fit into your process.
Here's how the discussion of a task usually goes:
- We break down the current form: which fields the client fills in, at which step the signature is applied, who checks the result and how.
- We clarify the requirements for legal validity: whether a simple or enhanced signature is needed, and whether binding to identity via a confirmed contact is required.
- We look at where the signed document goes: email, CRM, file storage, or an external service — the export format depends on this.
- We check failure scenarios: connection loss at the moment of signing, resubmission, client refusal, signature dispute.
- We put together a stage-by-stage estimate — form layout and logic, server side, signature storage and verification, integrations.
- We come back with an implementation plan: the sequence of steps, what's needed on your side, and where the feedback points are along the way.
- We agree on the acceptance procedure: which data we test on, which scenarios we consider closed.
Feedback at every stage isn't a formality: you see the intermediate result on a test bench and can adjust the logic before it goes to production. This way we eliminate the risk that the finished form won't match how your department actually works.
Describe the task in whatever form is convenient — a link to the current form, screenshots, or a short text. We'll come back with an estimate and a work plan, with no obligations on your side.







