Encrypted storage
Customer files are stored in Cloudflare R2. R2 encrypts objects at rest by default with AES-256, and the app is built around S3-compatible credentials plus presigned URLs instead of broad browser credentials.
Last reviewed July 10, 2026
Customer files are stored in Cloudflare R2. R2 encrypts objects at rest by default with AES-256, and the app is built around S3-compatible credentials plus presigned URLs instead of broad browser credentials.
Production traffic reaches DokuTrak through Caddy, which terminates HTTPS for dokutrak.com and app.dokutrak.com and supports TLS 1.3.
The audit_logs table records security-sensitive activity with actor, organization, action, entity, timestamp, IP/user-agent context, sanitized metadata, and payload hashes. A Postgres trigger blocks UPDATE and DELETE on audit rows.
External recipients upload through scoped secure upload links instead of creating accounts. Links expire, are validated server-side, are rate-limited, and are invalidated when the underlying request/link record is removed.
Team authentication is handled by Clerk. The API verifies Clerk JWTs server-side, resolves organization context before protected actions, and can enforce Clerk second-factor verification for paid workspaces.
The production API, web app, marketing site, Postgres, and Redis run as separate Docker services. Postgres and Redis are on an internal Docker network and are not exposed through the public reverse proxy.
| Provider | Purpose |
|---|---|
| Clerk | Authentication, sessions, user profile, MFA/TOTP flows, and auth emails. |
| Stripe | Billing, checkout, subscriptions, invoices, and payment webhooks. |
| Resend | Transactional business emails such as document requests and reminders. |
| Cloudflare R2 | S3-compatible object storage for uploaded customer documents. |
| Sentry | Application error monitoring and production debugging context. |
| PostHog EU | Product analytics for usage and funnel events. |
| Cloudflare Workers AI | Inference for AI First-Pass Review when enabled by a workspace, and document type/date suggestions in the public AI Document Renamer after the visitor gives explicit consent. The renamer processes one uploaded file in memory for the request; DokuTrak does not save it to customer document storage or to disk. It also turns a visitor’s recurring sent emails into reusable templates in the public Inbox Follow-up Audit, when the visitor ticks that option before connecting their mailbox; those emails are processed in memory for the request and are not kept. Same infrastructure provider as document storage. Cloudflare states in its Workers AI terms (last updated April 21, 2026) that customer inference inputs are not used to train its models. |
AI First-Pass Review moved to Cloudflare Workers AI on July 9, 2026. Documents are stored and reviewed on the same infrastructure provider; as of July 10, 2026, DokuTrak does not send first-pass review content to standalone AI API vendors.
Send reproduction steps, affected URLs, impact, and your preferred contact address. Do not send customer files, secrets, or destructive proof-of-concept payloads.
DokuTrak uses Vault as a product metaphor for a private document collection space: professionals send a scoped upload link, clients upload requested files, and access is mediated by application permissions. It is not a claim that DokuTrak uses a hardware security module or a separate secrets-vault product for customer files.
Files are encrypted at rest by Cloudflare R2 with AES-256 (provider default). The app issues scoped, expiring presigned URLs for upload and access. The R2 bucket is private (verified June 24, 2026); lifecycle policies remain an operational checklist item.
Upload links are random tokens scoped to a document request. The API validates token format and expiry, applies route-level rate limits, and rejects expired or removed links.
DokuTrak uses Clerk for account authentication. The codebase includes paid-plan MFA enforcement based on Clerk second-factor verification, with the exact TOTP/session settings configured in the Clerk dashboard.
The current subprocessors are Clerk for auth, Stripe for billing, Resend for transactional email, Cloudflare for file storage (R2), AI First-Pass Review and, after explicit visitor consent, the public AI Document Renamer (Workers AI), Sentry for error monitoring, and PostHog EU for analytics.
AI First-Pass Review sends document content to Cloudflare Workers AI only when a workspace admin enables it; it is assistive, audit-logged, and a human reviewer makes every final decision. The public AI Document Renamer sends a file to Cloudflare Workers AI only after the visitor gives explicit consent, to suggest its document type and dates. DokuTrak processes that file in memory for the request and does not save it to customer document storage or to disk. The public Inbox Follow-up Audit sends the subjects and bodies of a visitor’s sent emails to Cloudflare Workers AI only when the visitor ticks the optional templates box before connecting; those emails are processed for that request and are not kept, and DokuTrak removes names, addresses, phone numbers and amounts from every template it keeps. DokuTrak sends document content to no other AI vendor. Cloudflare states in its Workers AI terms (last updated April 21, 2026) that customer inference inputs are not used to train its models.
Email security@dokutrak.com with the affected URL or endpoint, reproduction steps, expected impact, and your preferred contact address. Do not send customer files, secrets, or destructive payloads.