The Platform

100% native.
Zero external callouts.

DocGen is built entirely from Apex and Lightning Web Components. Your record data never leaves your org. No sidecar servers, no webhook infrastructure, no third-party renderers — every PDF, DOCX, XLSX, and PPTX is assembled inside Salesforce, governed by the same sharing and FLS rules as the records it reads.

Architecture

How a document gets made.

Every step runs on-platform. The diagram below is the entire data path — start to finish.

Your Salesforce org
Step 1

Salesforce records

Accounts, Opportunities, custom objects — any record, any depth.

Step 2

Query engine

Apex resolves parent lookups, child loops, aggregates.

Step 3

Template merge

Word / Excel / PowerPoint template merged in-memory.

Step 4

Output saved

Final PDF / DOCX stored as ContentVersion on the record.

Nothing inside this boundary leaves the boundary. No HTTP callouts. No queued webhook delivery. No third-party rendering service. If your org can run Apex, DocGen can generate documents — even in air-gapped deployments.

Engineering principles

Three non-negotiables.

The rules we built around from day one.

01

Your data stays in your org.

All merge, render, and save operations happen inside Salesforce's platform boundary. We have no servers, no logs, no cache outside your org. CRUD and FLS are enforced on every query via stripInaccessible().

02

Native Apex rendering.

PDF generation uses Salesforce's own Blob.toPdf() engine. Word documents are assembled via the platform's Compression API. No external JavaScript PDF libraries, no XSLT processors, no Flying Saucer servers.

03

Zero HTTP callouts.

No outbound network calls during generation. Works inside air-gapped orgs, behind strict network policies, and when your competitors' third-party rendering services are down. Audit the source yourself on GitHub.

Giant Query

When 50,000 rows is just a starting point.

Most native doc generators tap out around 500–1,000 child records per document. Giant Query handles 50,000+ without breaking a sweat — and it does it with global ORDER BY preserved across every batch, so the first row of page 1 is still the first row even when there are 100 pages.

Under the hood: cursor-based SOQL pagination, batch-assembly of merged fragments in ContentVersion, and final document stitching in a queueable chain. Template-embedded images and rich text render correctly on every page.

50,000+
child records per document
500
rows per cursor page
Global
ORDER BY across all batches
Async
queueable-chained assembly
Giant Query · live batch trace
batch 01 · rows 00001–00500 500 ✓
batch 02 · rows 00501–01000 500 ✓
batch 03 · rows 01001–01500 500 ✓
batch 04 · rows 01501–02000 500 ✓
· · ·
batch 99 · rows 49001–49500 500 ✓
batch 100 · rows 49501–50000 500 ✓
Total merged 50,000 rows
What you get

Built for every role on the Salesforce team.

Admins set up templates, developers extend the engine, users click Generate.

For Admins

Configure once, generate forever
  • Visual template wizard with sample record preview
  • Manual SOQL with inline field autocomplete
  • Template versioning — restore any prior version
  • Document title formatter with merge-tag naming
  • Drag-and-drop Word / Excel / PowerPoint upload
  • Per-template category and description tagging
  • Export / import templates as portable JSON
  • Signature email branding (color, logo, footer)

For Developers

Open source, extensible, auditable
  • Apache 2.0 source on GitHub — fork, audit, extend
  • Invocable Flow actions (single, bulk, Giant Query)
  • Custom data provider interface for bespoke SOQL
  • Apex API for programmatic template generation
  • Managed 2GP package with ancestor chain
  • Namespace-aware guest user signing URLs
  • Platform events for async PDF rendering
  • E2E test suite + Apex test coverage

For End Users

One click, get the document
  • Generate from any record page in one click
  • Bulk generate from list views and reports
  • PDF preview before save
  • Save to record or download instantly
  • Document packets (combine multiple templates)
  • Merge generated PDFs with existing attachments
  • Signature-ready documents with one send
  • Mobile-friendly generation in the Salesforce app
Reference card

Every tag type in one place.

Quick-reference for template authors. Full examples and edge cases live in the User Guide.

Fields & lookups

{FieldName}
Direct field from the base object
{Parent.Field}
Parent lookup via dot notation
{Grandparent.Parent.Field}
Unlimited-depth parent chain

Child loops

{#Child}...{/Child}
Loop over a child relationship
{Name}
Field inside the loop body
{#Child}{#Grand}...{/Grand}{/Child}
Nested loops at any depth

Conditionals

{#Flag}...{/Flag}
Show only if truthy
{^Field}...{/Field}
Inverse: show if false or blank
{#IF Amount > 50000}...{/IF}
Comparison: =, !=, <, >, <=, >=

Aggregates

{SUM:List.Field}
Sum across a child list
{COUNT:List}
Number of children
{AVG:List.Field}
Also: MIN, MAX

Formatting

{Date:MMMM d, yyyy}
Date format string
{Amount:currency}
Also: percent, number
{Flag:checkbox}
Renders [X] or [ ]

Media & signatures

{%Logo}
Image from ContentVersion
{*Code128}
Code 128 barcode
{*Code128:qr}
QR code
{@Signature_Role}
E-signature placeholder
See it in motion

Watch a document get made.

Five minutes: Opportunity hits Closed Won, DocGen auto-generates a branded PDF invoice.

See real implementations on the Customers page →

Install in 30 seconds.

Open source. Free forever. Works in Production, Sandbox, Developer, and Scratch orgs.