Blog

A link should carry its own rules

The same document goes to an investor, a procurement team and a competitor's analyst. Permissions belong to the link you gave each of them, not to the file.

The XDocs team4 min read

Most document sharing starts from the file. You set permissions on the thing, and everyone who gets it inherits them. It works right up to the first moment two audiences need different treatment — which is, in practice, immediately.

A pricing deck goes to a warm lead you want to make it easy for, to a procurement team that will circulate it internally whatever you say, and to somebody at a competitor who signed up with a personal address. One document. Three completely different sets of rules, and one of them you will want to switch off on a Friday afternoon without disturbing the other two.

So in XDocs the unit of sharing is the link, and every link carries its own settings.

GateWhat it is for
PasswordA shared secret for a small, known audience.
Email captureKnow who is reading. Cheap, and defeated by anybody willing to type a fake address.
Email verificationA six-digit code to the address given, which turns a claim into a fact.
Allow and block listsNamed addresses, or whole domains, admitted or refused by rule rather than by vigilance.
ExpiryAccess that ends on a date, because most sharing is about a moment.
View capsA link that stops working after N visits — useful when it will be forwarded.
NDA before viewingTerms presented and accepted before the first page is served, with the acceptance recorded.
WatermarkingThe reader's own details, composed into the page and the download.
Download controlReading without keeping a copy, when that is the deal.

None of these is novel on its own. What matters is that they are properties of one link: three links to one document can require three different things, and revoking the third leaves the first two untouched. No file permission model gives you that without a lot of duplicated files. Put many documents behind one set of gates and you have a data room, which is this mechanism with a folder tree on top of it.

Watermarks are composed, not stamped

A watermark that says CONFIDENTIAL deters nobody. A watermark that says the reader's own email address, the date and time they opened it and the IP it was served to changes how a document gets forwarded, because it makes forwarding attributable.

So the mark is a template you write per link — {email}, {date}, {time}, {ip}, {link} — with its position, opacity, rotation, size and colour. And the copy a reader downloads is stamped with the same mark as the one on screen, which is the part that is usually missing: a screen watermark with a clean PDF behind it is theatre.

The question a watermark should answer is not "is this confidential" but "whose copy is this".

NDA terms are written once and picked by name

An NDA gate is only as good as its wording, and wording pasted into a link settings box is wording nobody will ever find again. Terms live in an agreements library instead: write them once under Settings, pick them by name on any link.

Editing a set of terms then raises a question with only one honest answer. Everybody who accepted the old wording is re-asked, because they did not agree to the new text — and each existing record keeps the text that person actually agreed to, rather than being quietly upgraded to the current version. An acceptance record that drifts to match the latest draft is not a record of anything.

A custom domain serves the viewer and nothing else

Links can be served from your own domain. That is a branding feature with a security edge to it, so the edge is deliberately blunt: the root of the domain shows whose documents live there, every other path is a 404, and only that account's links answer on it.

Which means a link domain is never a second copy of the product on somebody else's hostname. There is no sign-in, no dashboard, nothing to probe — just the viewer, and only for the links you published.

Afterwards: who got in, and who did not

Gates generate a second kind of information, and it is easy to throw away. A visit that was refused is as interesting as one that was allowed — more so, when the person was somebody you were expecting.

  • Every view is recorded against the link, the document and the visitor, with per-section or per-page reading time.
  • Which gate turned a particular visitor away is a question with an answer: a wrong password, an address outside the allow list, an expired link, a cap already reached.
  • Webhooks fire on the sharing half as well as the signing half — a link opened, terms accepted, a copy downloaded — so another system can react.
  • Internal visits and ignored domains are left out of analytics retroactively as well as going forward, so your own team reading a deck does not look like demand.

And the direction nobody plans for

Sharing has a reverse gear: sooner or later you need documents *from* somebody. A file request is an upload-only page with no view of anything else — a link you send to collect the signed copy, the certificate of insurance, the three years of accounts — which is the same idea as everything above, pointed the other way.

More like this, by mail

One mail when something new is published. No sequence, no digest.

One place for every important document.

Create, sign, share and understand your documents with XDocs.