Free plan

n8n

Workflow automation for document sharing, tracking, and triggered actions using the n8n community node.

The n8n-nodes-everypage community node brings EveryPage document management and event-driven workflows to n8n. Upload PDFs and generate tracked share links, access readership analytics, and trigger workflows instantly when documents are read, downloaded, or unlock lead gates.

Install

The package is published on npm and approved by n8n — it is generally available, with no invite or early-access step.

On self-hosted n8n, go to SettingsCommunity NodesInstall and enter:

n8n-nodes-everypage

Or install it on the host directly:

cd ~/.n8n/nodes
npm install n8n-nodes-everypage

On n8n Cloud, search for EveryPage in the nodes panel on the canvas.

Once installed, create an EveryPage API credential. Generate an API key at everypage.co/account under API Keys (keys start with ep_live_), paste it into the credential, and optionally set the Base URL — only needed when pointing at a staging or self-hosted EveryPage deployment. The key is sent as a bearer token and validated against GET /api/v1/user.

Authentication

Credentials require a valid EveryPage API key. For details on generating and managing API keys, see API Keys.

File actions

The File resource handles document uploads, imports, updates, deletions, and analytics retrieval. All file-producing operations return shareUrl, qr_url, and embed_code alongside uuid and shortId. The share link and embed code prefer the short ID and never use a vanity slug; qr_url is the public, unauthenticated QR endpoint keyed on the UUID, so downstream steps can render it without an API key.

OperationDescriptionPlan
UploadUpload a PDF and create a tracked share link with full settings controlFree
Import From URLFetch a PDF from a URL (without credentials) and upload as a tracked linkFree
GetRetrieve a document by UUID or short IDFree
Get ManyList your documents. The upstream list is unpaginated, so Limit (default 50) and Return All are applied by the node. There is no name-filter input — filter with an expression or a Filter nodeFree
Update SettingsModify viewer mode, expiry, passcode, gates, protections, and other settingsFree
DeleteMove a document to trash (restorable) or purge permanentlyFree
Replace ContentSwap the PDF behind a link in place; UUID, settings, and readership history survivePro
Get QR CodeDownload the tracked QR code as a PNG for print or embedded workflowsFree
Get ReadershipFetch the analytics report (summary, funnel, sessions, contacts) as JSONFree

Upload and Import From URL accept all plan-tiered settings in their Options parameter: viewer mode, passcode, email gates, domain allowlists, watermark, page ranges, protection toggles, expiry/never-expire, view limits, and more. Update Settings applies only the options you specify; omitted fields retain their current values.

Import From URL fetches the file without your EveryPage API key, so your credentials never travel to a user-supplied host, and checks the downloaded bytes actually start with a PDF header before uploading them.

Delete trashes by default (recoverable through the trash and recovery flow). Enable Purge Permanently to remove the document and all associated share links and readership data irreversibly.

Replace Content swaps the PDF behind an existing link while preserving its UUID, short ID, slug, QR code, settings, and readership history. Enable Keep Page-Anchored Hotspots and Notes only when the new PDF has identical page layout to the original; anchors are cleared by default to prevent broken references.

The Link Variant resource creates per-recipient tracked links, so readership attributes to the individual you sent each link to. Every operation takes the parent document; all but Create also take a variant UUID.

OperationDescription
CreateMint a new variant with a recipient label and optional per-recipient overrides
Get ManyList a document's variants (Limit default 50, or Return All)
UpdateChange a variant's label, revoked state, or overrides
RevokeDeactivate a variant so its URL stops resolving (recipients who already opened it know the canonical link)
DeleteRemove a variant, or with Redact Label GDPR-redact it in place instead

When updating variant overrides (allowDownload, pageFrom, pageTo), providing any override field replaces the whole overrides object rather than merging. Re-state every override you intend to keep. See Link Variants for the full variant contract.

Overrides are limited to download permission and page range. Per-variant passcodes and email gates are not supported — those settings live on the parent document and apply to every variant.

The Delete operation supports GDPR label redaction, and the two paths do opposite things. With Redact Label off, the variant is removed. With it on, the variant is not removed: its recipient label is scrubbed from the variant, readership history, and stored webhook payloads, while the variant keeps working and its anonymised analytics survive. The deleted and redacted outputs report which happened. A redacted label cannot be re-set afterwards.

Event bulk pulls

The Event resource pulls analytics events in bulk for warehouse loads and incremental syncs. The Get Many operation walks one event stream at a time from a since cursor you supply — each stream has its own independent ID sequence. Use the trigger node instead when you want workflows to fire on new events. Supported event types are:

Event TypeDescription
ViewRead sessions with pages viewed and time spent
DownloadExplicit PDF downloads (includes your own saves)
GateEmail-gate and lead-form completions with captured fields (Pro-gated)

Cursor logic: since = 0 (the default) returns a single newest-first window, descending, capped at 100 — there is no way to page further back from it. Supply a since above 0 and the node walks forward in ascending order from that event ID, pulling 100 at a time until it reaches your Limit or the feed runs out; Return All removes the limit. Cursors are per-stream: a view cursor is meaningless against the gate stream. Gate event IDs are 64-bit — pass them through unmodified.

Trigger node

The EveryPage Trigger node fires workflows when documents are read, downloaded, gated, commented on, or burned. Choose between instant webhook delivery (default) or polling for firewalled self-hosts.

Webhook mode (instant)

On activation, the node subscribes to your selected events; deactivating it deletes the subscription. Every delivery carries X-Everypage-Signature — HMAC-SHA256 over <timestamp>.<raw body>, keyed with the webhook secret returned once at subscribe time — and the node verifies it and fails closed: a missing stored secret, a missing signature, a mismatch, or a timestamp outside the 5-minute tolerance all return 401 and the delivery never reaches your workflow. Comparison is constant-time. This is a real advantage over the Make app, which cannot verify signatures at all.

EveryPage webhooks are available on every plan. The only plan requirement is on gate.completed, which the server delivers only while the account is on Pro at the time of the event.

Webhook mode covers all nine event kinds:

  • file.viewed — read sessions with pages viewed, time spent, and link-variant attribution
  • file.downloaded — reader downloads (non-owner only; the feed includes your own saves)
  • gate.completed — email-gate or lead-form completion with captured fields (Pro at event time)
  • note.created — reader feedback note with author, body, and page number
  • receipt.confirmed — confirmation of receipt by a viewer who was asked
  • file.burned — self-destructed link (view limit reached)
  • content.replaced — PDF swapped behind a link
  • invite.viewed — invited recipient opened their invite link
  • proofing.updated — proofing review decision changed

Optionally scope the subscription to a single document.

Poll mode (fallback)

For self-hosted n8n instances unable to receive inbound webhooks. Walks the events feed on your configured Poll Times with independent per-stream cursors, advancing a cursor only after a fetch that actually returned events. Poll mode covers the three feed-backed streams only: view, download, and gate. Event IDs are namespaced as <type>:<id> so a view and a gate event sharing a numeric ID cannot collide. Manual executions fetch a small newest-first sample without moving the cursors, so testing in the editor never skips a live workflow forward.

Bundled workflows

Three example workflows are included:

  • ai-report-to-tracked-link — AI agent generates a report, a Code node renders it to PDF, EveryPage creates a tracked link, Slack receives the share URL
  • gated-leads-to-crm — instant gate.completed webhook triggers lead capture, shapes fields, and forwards to CRM
  • agent-with-everypage-tool — chat agent with EveryPage attached as tools for document listing and readership lookup via $fromAI

On self-hosted n8n, enable N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true to let AI Agent nodes call EveryPage directly.

Plan-tiered features

Fields above your plan tier are labeled in their descriptions and link to Pricing. The node maps server-side tier checks (403 responses) to user-friendly errors that name the plan and upgrade path. Size caps: Free 20 MiB, Basic 200 MiB, Pro 2 GiB. Rate limit: 120 requests/minute per key. Enable Retry On Fail in the node settings for resilience under rate limiting.