Sliick / Articles / App Development
App Development 18 May 2026

Sliick Docs: Complete User Guide

Sliick Docs v1.0 (Captivating-v1). The complete admin and end-user guide: install, theme, authoring, merge fields with Format dropdown, conditional and repeating content, image merge fields and hyperlinks, watermarks, Doc Bundles, Doc Batches, auto-email, Flow actions, and Export / Import.

Jerry Huang

Jerry Huang

Author

Sliick Docs: Complete User Guide

Sliick Docs: Complete User Guide

Version: Updated for Sliick Docs v1.0.0 (Captivating-v1), live on the Salesforce AppExchange. This release adds theme-driven styling and an inline formatting toolbar, image merge fields, hyperlinks, lists, watermarks, 5-hop parent lookups, aggregate merge fields, the Doc Batches console, multi-template Doc Bundles, auto-email, three Flow actions, and Template + Bundle Export / Import.

Sliick Docs brings native, versioned document generation to your Salesforce org. Admins design templates in a WYSIWYG editor and publish them as immutable releases; business users generate the resulting PDFs in one click from any record page; Flows generate them in bulk; and the auto-email pipeline routes the finished file to the right recipients automatically. This guide is the complete reference for everyone who touches the product.


Guide overview

  1. What is Sliick Docs?
  2. Quick start: generate a PDF from a record
  3. Install, permission sets, and the org-wide theme
  4. Authoring templates
  5. Templates, Bundles, and Batches: the three units of work
  6. Bulk generation with Doc Batches
  7. Multi-template Doc Bundles
  8. Auto-email after generation
  9. Flow integration: three Flow actions
  10. Template and Bundle portability: Export and Import
  11. Security and permissions
  12. Troubleshooting and reference

What is Sliick Docs?

Sliick Docs is a 100% native Salesforce document-generation app. Everything runs inside your org and PDF rendering uses the native Salesforce PDF engine, so no document content ever leaves your boundary or transits a third-party service.

Key concepts:

  • Template: one per logical document type (Account Summary, Quote Cover Letter, Work Order). Admins edit a template; end users generate from it.
  • Draft and Release: while a template is being edited it lives as a draft. Publishing creates an immutable Release: a frozen snapshot the runtime renders from. Drafts can change freely; releases never do.
  • Active Release: the release currently serving end users. Switching versions or rolling back is a single, fully audited change.
  • Bundle: a named, ordered collection of templates rendered together against a single record as one combined PDF. Bundles publish to immutable releases too.
  • Batch: a bulk run that produces many PDFs from one template (or one bundle) against many records.
  • Base object: every template (and bundle) is anchored to a single Salesforce object. Merge fields and runtime data come from records of that object.

There are three ways to generate a document: from a record page (one click), from the Doc Batches console (bulk), or from a Flow (record-triggered, scheduled, or screen). All three share the same rendering engine, so what your admin sees in proof is what every recipient gets.


Quick start: generate a PDF from a record

The fastest path from a fresh install to a generated PDF, assuming an admin has already done section 3 below.

  1. Open a Salesforce record on an object that has a published Sliick Docs template (Account, Opportunity, your custom object).
  2. Find the Sliick Docs Generator component on the record page.
  3. Pick a template from the list (only templates with an active release for this object appear).
  4. Click Generate.
  5. The PDF appears in the Files related list. Click to open or download.

That is the end-user experience. Everything else in this guide is about giving admins the tools to design those templates well and to scale generation up to bulk, automation, and multi-template bundles.

Generated PDF in Files


Install, permission sets, and the org-wide theme

Install the package

Install from the Sliick Docs AppExchange listing.

When prompted, install for All Users (or Admins Only if you want a controlled rollout, then assign the relevant permission set per user).

Permission sets

Three permission sets ship with v1.0. Assign each user the one (or two) that match their role.

Permission setGrants
Sliick_Docs_AdminTemplate authoring, proof, publish, the Doc Batches console, and the Doc Bundles console.
Sliick_Docs_UserRecord-page generation only - no authoring, no consoles.
Sliick_Docs_AutomationFor the running user of any Flow that calls Sliick Docs, or for a dedicated integration user. Just enough access to run document generation from automation. No broad “View All / Modify All” rights.

Assign from Setup > Users > Permission Sets.

Tip: in production, treat Sliick_Docs_Admin as a privileged role for a small group of template authors. End users only ever need Sliick_Docs_User. The running user of every Sliick Docs Flow needs Sliick_Docs_Automation.

Set the org-wide theme

Open the Sliick Docs app from the App Launcher and click Settings. The Brand & theme panel controls the palette every template inherits.

SettingDefaultNotes
Brand primary / secondary / accent#1F5FBF / #475569 / #00A1E0Pickable as brand.primary / brand.secondary / brand.accent in any colour picker.
Body colour / body size#1C1C1C / 11 ptDefault text colour and size for body copy.
Heading colour#1C1C1CDefault heading colour.
Heading size H1 / H2 / H324 / 20 / 16 ptHeading-level defaults.
Spacing: tight / normal / spacious4 / 8 / 16 ptThe three named spacing presets every block’s Spacing control uses.

Theme changes take effect the next time a template is published. Existing releases keep the theme they were published with, so historical PDFs remain reproducible even after a rebrand.

Open the Template Library

Open the App Launcher and select Sliick Docs. The default landing tab is the Template Library. The other top-level tabs you will use are Doc Bundles, Doc Batches, and Settings.

Sliick Docs app and library


Authoring templates

Create a template

A template is anchored to a single base SObject (for example Account, Opportunity, or any custom object). Every document the template generates is for one record of that object.

  1. Open the Template Library and click New template.
  2. Give the template a clear name (this becomes part of the generated PDF file name). Names are unique across the org, case-insensitive.
  3. Choose the Base Object the template will run against.
  4. Click Create. Sliick Docs creates the template and an initial draft, then opens the editor on that draft.

Create a new template

Note: the base object cannot be changed after creation. If you need a different base object, create a new template.

Editor anatomy

The Template Editor has four regions:

  • Top bar: Save, Generate proof, Preview, Publish, history drawer, test record picker.
  • Left rail: Blocks palette and Merge fields tab.
  • Designer canvas: the page being authored.
  • Right rail: Page settings and the Properties / Block style panels for the selected block.

A pinned inline formatting toolbar sits above the canvas whenever a styleable block is selected.

Template editor regions

Pick a test record

Every draft needs a test record so proofing can render against real data.

  1. In the top bar, click the Test record picker.
  2. Pick any record on the base object. Use a record with realistic data including any parent lookups or child collections you reference.

The selection is saved with the template and reused across draft sessions. Picking a test record is a prerequisite for publishing.

Setting the test record

Block reference

Drag blocks from the Blocks tab on the left rail, or click + Add block inside any container. Every block is selectable; the right rail switches to its Properties and Block style panels on select.

BlockUse
HeadingH1, H2, or H3 heading line. Supports merge field chips inline.
TextParagraph text. Supports inline formatting per run and merge field chips.
DividerHorizontal rule.
SpacerConfigurable vertical space.
ImageStatic image embedded in the document (Salesforce File backed).
TableStatic table with manually authored rows and cells.
Two columns50/50 layout (compiles to <table> at runtime).
Page breakForces a new page at runtime.
Signature2+ signer block with top-bordered lines and merge-field signer labels.
SectionGroup of blocks with optional padding and “start on new page” behaviour.
CalloutSection variant with a tinted background and a coloured left bar (Captivating-v1).
Show if (cond)Conditionally renders its children based on parent-record data.
Repeat for eachLoops over a child relationship of the base object; children render once per row.
ListBulleted or numbered list, with merge field chips inside list items (Captivating-v1).

Block-level styling

Every styleable block exposes a Block style section in the right rail. The controls render live in the canvas so what you see matches what the PDF will contain.

ControlWhat it does
SpacingCombobox per side (above / below / inner top / inner bottom). Pick Tight (4 pt) / Normal (8 pt) / Spacious (16 pt) from the theme, or Custom for 0 to 48 pt.
BackgroundA brand or theme swatch (Brand Primary / Secondary / Accent, Heading or Body colour), or a hex code like #F4F6F9.
BorderWidth 1 to 8 pt, style is one of solid / dashed / dotted, colour (hex or theme reference). Per-side checkboxes pick which edges the border applies to.
Corner radius0 to 16 pt, all four corners.
Line heightDefault / 1.0 (tight) / 1.15 / 1.5 / 2.0 (loose).
IndentStepper 0 to 4. Each level adds 24 pt of left padding. Text, heading, and callout blocks only.

Theme references (brand.primary, theme.headingColor) resolve at compile time, so an org-wide theme change repaints every block using those references the next time the template is published. Hex codes are literal one-offs that do not track theme changes.

Inline formatting toolbar

When you select a text, heading, table cell, callout, or other styleable block, a toolbar pins itself above the canvas.

ControlActs onWhat it does
Font familyWhole blockCombobox: Arial / Helvetica / Times New Roman / Courier New (the four fonts the native Salesforce PDF engine supports).
Font sizePer-run / next-typedNumeric input + chevron. Type any value 6 to 96 pt, or open the popover for a vertical slider plus preset chips (8 / 10 / 11 / 12 / 14 / 16 / 18 / 24 / 36 / 48 / 72 pt).
B / I / U / SPer-run / next-typedBold, Italic, Underline, Strikethrough. Hidden on heading blocks. Shortcuts: Cmd / Ctrl + B / I / U.
Align L / C / R / JWhole blockLeft, centre, right, justify.
Line spacingWhole blockDefault / 1.0 / 1.15 / 1.5 / 2.0.
A (text colour)Per-run / next-typedLetter over a coloured bar showing the active colour. Opens a swatch picker with brand / theme refs, hex fallback, Clear.
H (highlight)Per-run / next-typedSame picker pattern for background highlight.

The per-run controls work in two modes: highlight a range first then click a control (Selection mode), or with just a caret click a control to arm it (Toggle-then-type mode). Active / Mixed / Off states reflect the selection: a Mixed underline button means part of the selection is underlined and part is not.

Merge fields

Merge fields are first-class objects in Sliick Docs. They are stored as structured chips inside text runs, not as plain text placeholders, so they cannot be accidentally broken.

To insert a merge field:

  1. Click into a Text, Heading, or table cell block.
  2. Open the Merge fields tab on the left rail (or type {{ to open the autocomplete).
  3. Search by label or API name and click the field to insert it.

Merge field browser

Scope of merge fields (v1.0)

  • Root scalar fields on the base object.
  • Parent lookup fields up to five hops (for example Account.Owner.Profile.UserType.Name). Works at root scope and inside Repeat scope.
  • Child collections rendered via Repeat for each blocks (one-hop child relationships, no nested repeats).
  • Conditional visibility via Show if (cond) blocks (see grammar below).
  • Aggregate functions over child relationships: SUM, COUNT, AVG, MIN, MAX, with an optional Format.
  • Image merge fields: any ContentVersion / URL field can be rendered as an image (toggle in the chip popover).
  • Hyperlinks: text or merge-field chips can be wrapped in <a href>; merge-field placeholders are allowed inside the URL (https://salesforce.com/{{Account.Id}}).

Field-level security

Sliick Docs always honours your Salesforce permissions. When an admin browses for merge fields, they only see fields they themselves can read - so two different admins may see different field lists depending on their access. If a field you expect to see is missing, ask your Salesforce admin to check your profile or permission sets.

Format dropdown

Every scalar merge-field chip carries a Format dropdown alongside the fallback input. The format choice applies at PDF render time using the running user’s locale; the chip’s stored value is untouched.

FormatWhat it doesExample (Opportunity.Amount = 12345.6 in en-AU)
raw (default)Renders the value as Salesforce returned it. Useful inside URLs or downstream calculations.12345.6
currencyCurrency formatted using the running user’s locale and the field’s currency ISO code.$12,345.60
numberLocale-aware thousands separators; uses the field’s display scale.12,345.6
percentMultiplies fractional values by 100 and appends %. 0.125 renders as 12.5%.12.5%
dateLocale short-date form.18/05/2026
datetimeLocale short date + time.18/05/2026, 14:32

Fallback text

The same chip popover offers a Fallback text input. If the resolved value is blank at runtime, the fallback renders instead. Useful for Account.Phone with a fallback of (no phone on file).

Image merge fields

To merge a Salesforce ContentVersion or URL field as a dynamic image:

  1. Insert the merge field chip as usual.
  2. Click the chip to open its popover.
  3. Toggle Render as image. Width and height inputs appear.

At runtime the chip resolves to an <img> tag using the field’s URL or the latest ContentVersion’s download URL. Image merge fields work the same way inside Repeat scope: each iteration resolves to its own image.

Wrap text or merge-field chips in <a href> via the link affordance in the inline toolbar. URLs accept merge-field placeholder tokens, for example https://help.example.com/account/{{Account.Id}}. The merge fields inside the URL resolve per record.

Lists

Bulleted and numbered lists are first-class blocks. Each list item is a text run that supports merge field chips and inline formatting.

Conditional content (Show if)

A Show if block conditionally renders its children based on parent-record data. Expressions are parsed at save time, so any syntax errors surface in the right rail as plain-English messages while you author.

ConstructExample
ComparisonAccount.AnnualRevenue > 1000000
EqualityAccount.Industry = 'Technology'
InequalityAccount.Industry != 'Healthcare'
ContainsAccount.Name contains 'Acme'
Logical ANDAccount.IsActive = true AND Account.AnnualRevenue > 1000000
Logical ORAccount.Industry = 'Technology' OR Account.Industry = 'Software'
NegationNOT Account.Industry = 'Healthcare'
Grouping(Account.Industry = 'A' OR Account.Industry = 'B') AND Account.Amount > 1000000
Null checkAccount.Description = null

Operators: =, !=, >, >=, <, <=, contains (case-insensitive substring). Literals: single-quoted strings, decimals (including negative), true, false, null.

Repeating sections

A Repeat for each block loops over a child relationship of the base object. The block’s children render once per row (one row per Opportunity Line Item, one row per Contact, and so on).

  • Source relationship: pick from the dropdown of available child relationships. The list only shows relationships you have access to.
  • Filter (optional): narrow the rows that render, for example Opportunities.StageName != 'Closed Lost'.
  • Inside a Repeat block, the Merge fields tab flips to show the child object’s fields. Insert chips like {{Opportunities.Amount}}; they resolve per row at runtime.
  • Five-hop parent lookups also work inside Repeat blocks, for example Opportunities.Account.Owner.Profile.Name.
  • Nested Repeat blocks aren’t supported in v1.0.

Signatures

A signature block renders a 2+ signer area with top-bordered lines and merge-field signer labels (for example Account.Name for the customer line, Account.Owner.Name for the rep line). Add or remove signers in the right rail; minimum two.

Watermarks

In the right rail Page settings, the Watermark field accepts a string that renders on every page of the generated PDF. Theme references and merge-field chips are not yet supported inside the watermark (string only). Use this for DRAFT, CONFIDENTIAL, copyright lines, or document-classification labels.

Validation, proof, and the Ready state

Sliick Docs validates your template every time you save (and again when you proof or publish). It checks that every merge field, theme reference, and inline expression still resolves and that block-level styling is within bounds, so problems surface before generation rather than during.

The right rail shows the current state (Valid, Warnings, Errors) with a plain-English summary you can act on. Unresolved merge fields are treated as errors so they never silently render as blanks at runtime.

To generate a proof:

  1. Save your changes.
  2. Click Generate proof in the top bar.
  3. Review the resulting PDF. Generated proofs are saved to Salesforce Files with the file name <Template Name> - v<Version Number> - Proof - <Record Id>.pdf.

A version becomes Ready when validation is Valid and the version has been proofed against its test record at the current saved contract. Saving after proofing drops the version back to Draft until you re-proof.

Proof PDF preview

Publishing

Publishing freezes your current draft into a new, immutable release and atomically makes it the active version. Releases never change after publish, so a document generated today will look identical when re-generated next year.

  1. From the editor, click Publish in the top bar. (The button appears once the version is Ready.)
  2. Confirm. Sliick Docs creates the release, snapshots the theme alongside it, and switches end users onto the new version - all in one step.
  3. The editor goes read-only. A + Create draft button replaces Publish when you’re ready to iterate again.

To roll back, point the template at a prior release (or clear it to take generation offline for that template). Past releases are preserved for audit.

Active release


Templates, Bundles, and Batches: the three units of work

It is worth naming the distinction up front.

  • Template is the unit of authoring. One template renders one PDF for one record at a time.
  • Bundle is the unit of composition. One bundle stitches several templates together into a single combined PDF for one record. Bundles publish to immutable releases too.
  • Batch is the unit of bulk. One batch runs one template (or one bundle) against many records. Each batch has its own status (Queued, Running, Merging, Succeeded, Partial Success, Failed, Aborted) and tracks one job per record.

Behind the scenes all three follow the same path: load the record, evaluate any conditional or repeating sections, substitute merge fields, render using the native Salesforce PDF engine, save to Salesforce Files. The difference is who initiates and how many records are covered.


Bulk generation with Doc Batches

The Doc Batches tab is where admins submit and monitor bulk runs.

Submit a new batch

  1. Click New batch.
  2. Pick a template (only templates with a published release appear) or a bundle.
  3. Pick a source:
    • By filter: type a SOQL WHERE clause (or leave blank to target every record of the base object).
    • By report: pick a tabular Salesforce report (up to 2,000 rows).
    • By record IDs: paste a list of up to 2,000 record IDs (also available from the Flow action).
  4. Pick a batch size (1 to 200, default 1).
  5. Pick an output mode:
    • Individual (default): one PDF per record, attached to that record via ContentDocumentLink.
    • Combined PDF only: one merged PDF attached to the batch row; no per-record files.
    • Both: one PDF per record plus a combined PDF.
  6. Click Analyze.

The pre-flight verdict shows release readiness, record count vs the 50,000 cap, and (for Combined / Both) a combined-heap estimate vs the 12 MB async-heap ceiling.

Spot-check sample

From the verdict, click Preview sample to step through up to 5 sample records and see exactly how each will render. This catches merge-field problems before generating 500 PDFs.

Monitor

The batch monitor refreshes every 5 seconds. The header shows a status badge and progress bar; the per-record table updates as each record completes. While the run is in flight, Cancel is available and Sliick Docs stops the underlying job as soon as it can.

When the run terminates, the recent-batches sidebar updates and a Sliick Docs Batch notification is sent to whoever submitted it.

Download

  • Individual / Both modes: Download all as ZIP is available on the monitor. Sync up to 50 records; asynchronous above (a notification fires when the ZIP is ready). Each batch also lists per-record files inline.
  • Combined / Both modes: the combined PDF is on the batch row itself, available as a single download.

Retry failed

After a batch ends as Partial Success or Failed, expand the row and click Retry failed. If the template has been republished since the original run, Sliick Docs surfaces that in the confirmation dialog so you can decide whether to re-run against the original release or the new one. The new batch links back to the original so you can trace retry chains. Capped at 2,000 failed records per retry.

Limits worth knowing

LimitDefaultConfigurable?
Records per batch50,000No - Salesforce platform limit
Record IDs per Flow call2,000No
Concurrent batches per template / bundle3No
Sync ZIP record cap50Yes, via custom metadata
Batch size (records per chunk)1Yes, per submission, 1 to 200
Combined-mode size cap~10 MBNo - Salesforce async heap limit

Multi-template Doc Bundles

A bundle is a named, versioned bundle of templates rendered together against one source record to produce a single combined PDF. A Sales Bundle might combine a cover letter, the actual quote, the terms and conditions, and an optional NDA addendum.

Create a bundle

  1. Open the Doc Bundles tab.
  2. Click New bundle.
  3. Fill in the display name, base object API (every member template must share this base object), and an optional description.
  4. Click Create.

Add templates to a bundle

  1. On the bundle card, click + Add template.
  2. Pick a template that shares the bundle’s base object. Templates already in the bundle are filtered out.
  3. Set Required or Optional. Required = the bundle fails if the template is inaccessible. Optional = soft-skip and continue.
  4. Click Add. The item appends to the end.

Reorder items with the up / down arrows on each row. Remove items with the trash icon.

Per-item inclusion expressions

Each bundle item can carry an optional inclusion expression (same grammar as the Show if block, for example Account.Industry = 'Technology'). The expression is frozen into the bundle release at publish and evaluated at runtime against the source record. Items that evaluate to false are silently skipped from the combined PDF.

Publish a bundle

Click Publish on the bundle card. Sliick Docs snapshots each member template’s current active release into the new bundle release. Once published, the bundle renders the same way every time, even if a member template is later republished.

Drift handling

Bundle releases are immutable by design. When a member template is republished after the bundle was published, the bundle does not auto-update. Instead:

  • The bundle library card shows a yellow Members updated badge with a tooltip listing affected templates.
  • A one-click Republish with current members action produces a fresh release that re-snapshots all current member releases.
  • The retry-failed confirmation dialog on the Doc Batches console calls out drift in the same way.

Bundle runtime

Single-record bundle generation is available through the Generate Sliick Bundle Flow action (section 9). Bulk bundle generation is available through Generate Sliick Docs (Bulk) (pass the bundle instead of a template) or directly from the Doc Batches console.


Auto-email after generation

Configure email-on-success per template via six fields on the Template record.

FieldPurpose
Auto Email EnabledMaster switch. Default off.
Auto Email Template IdLightning or Classic Email Template (both supported).
Auto Email Recipient FieldField path on the base object, for example Owner.Email or PrimaryContact__r.Email.
Auto Email Cc FieldOptional CC path.
Auto Email From Address IdOrg-Wide Email Address used as the From address.
Auto Email Save As ActivityDefault on. Logs sent emails as Activities on the source record.

When generation succeeds for a record (single or batch), Sliick Docs sends the email automatically. The subject and body come from your chosen Email Template (with full merge-field support against the source record); the generated PDF is attached.

Every record’s job carries an email audit trail:

FieldValues
Email StatusNot Required (template has auto-email off) / Pending / Sent / Failed / Skipped (no file to attach)
Email Sent AtTimestamp
Email RecipientsThe actual addresses resolved at send time
Email ErrorThe reason, when status is Failed

Behaviour on failure: if generation succeeds but the email fails (for example the recipient field is blank), the document still counts as successfully generated and the file is saved. The Email Status field records the failure separately. The batch’s overall status rolls up: any failed email flips the batch to Partial Success even when every document generated cleanly.

Daily limit. Salesforce caps single-recipient emails at 5,000 per 24 hours, org-wide. A batch that would exceed the daily allotment is flagged in the pre-flight analyzer.


Flow integration: three Flow actions

Sliick Docs ships three Flow actions for use in Record-Triggered, Scheduled, and Screen Flows. All three are designed to never throw. Failures are returned cleanly as success=false plus an errorMessage, so your Flow can branch on the outcome rather than halting the whole transaction when something goes wrong.

Generate Sliick Doc (single record, synchronous)

InputRequiredNotes
templateIdyesMust reference a template with a published release
recordIdyesMust match the release’s base object

Outputs: jobId, contentDocumentId (the saved PDF), success, errorMessage.

Generate Sliick Docs (Bulk) (asynchronous; returns the batch ID immediately)

InputRequiredNotes
templateIdeitherOne of templateId or bundleId is required (not both).
bundleIdeitherPass for bundle bulk runs.
queryConditionone ofA SOQL WHERE clause to target records by filter.
recordIdsone ofA list of up to 2,000 record IDs.
reportIdone ofA tabular Salesforce report (up to 2,000 rows). The report’s primary object must match.
jobLabelnoDefaults to Flow Run @ <timestamp>.
batchSizeno1 to 200, default 1.
outputModenoIndividual (default) / Combined / Both.

Outputs: batchId, success, errorMessage.

One important Flow-authoring rule: pass your record collection to the bulk action once, not inside a Loop. Wrapping the bulk call in a Loop creates one batch per record instead of one batch for the whole set, which is almost never what you want.

Generate Sliick Bundle (single record, synchronous)

InputRequiredNotes
bundleIdyesMust reference a bundle with a published release
recordIdyesMust match the bundle’s base object

Outputs: jobId, contentDocumentId (the combined PDF), success, errorMessage.

Three common automation shapes this unlocks

  1. Auto-on-state (Record-Triggered Flow): Opportunity entry condition IsClosed = TRUE → call Generate Sliick Doc with templateId + [Record].Id. A closeout PDF lands on every newly-closed Opportunity automatically. Pair with auto-email to email it to the customer too.
  2. Recurring batch (Scheduled Flow): daily at 2am → Get Records (Accounts updated yesterday) → single call to Generate Sliick Docs (Bulk) with the resulting collection. Customers receive an overnight statement PDF.
  3. User-driven bulk (Screen Flow): picker for template, picker for filter or report → Generate Sliick Docs (Bulk) → display the returned batch ID with a follow-up link to the Doc Batches tab so the user can monitor progress.

Template and Bundle portability: Export and Import

Templates and bundles are Salesforce records, not metadata, so Change Sets and SFDX deploy do not move them. The Library and the Bundles tab both ship Export and Import actions.

Export

  • Template Library: every template card has a download icon. Clicking it downloads sliick_<TemplateName>_<YYYY-MM-DD>.json.
  • Bundles tab: every bundle row has an Export link. The export includes the bundle header, items, and every member template by default so the target org has everything it needs.

Org-specific references (test record ID, auto-email recipient / CC / from-address / template IDs) are scrubbed automatically.

Import

  1. Open the target org’s Template Library (or Bundles tab) with Sliick Docs installed and Sliick_Docs_Admin assigned.
  2. Click Import Template (or Import Bundle).
  3. Choose the .json file. Click Import.
  4. A summary modal lists what was imported with any warnings (renamed-on-collision, unresolved merge fields, fields hidden by your permissions, unresolved bundle members).

What an imported template starts as

  • Status: Draft. Imported templates never start as Active. Re-publish after picking a test record and re-validating.
  • No active release. Releases are immutable runtime snapshots local to each org.
  • Test record is unset.
  • Auto-email is disabled. Recipient / CC / from-address / template IDs are org-specific Lookup values and are scrubbed on export.

Name collisions

If the target org already has a template with the same name, the import auto-renames to <Name> (Imported 1), then (Imported 2), and so on. The summary surfaces the rename so you can fix it from the Library.


Security and trust

Sliick Docs is built to a Salesforce-first security model and has passed the AppExchange security review. The short version for a security or compliance reviewer:

  • Your data never leaves Salesforce. Documents are rendered by the native Salesforce PDF engine, inside your org. No external rendering service, no third-party endpoint, no Remote Site or Trusted Site is required.
  • Your existing Salesforce permissions are enforced everywhere. Every read and write Sliick Docs performs runs with the user’s own sharing, profile, and field-level security. Two users will see only the data they’re already entitled to see, in the editor and in the generated documents.
  • Published documents are tamper-proof. Each Publish action creates an immutable release. Releases are never edited or overwritten, so a document generated today will look identical a year from now, even if the underlying template has been rewritten.
  • Every generation is fully audited. Each PDF, single or bulk, is logged with who ran it, when, against which record, with which template version, the resulting file, and (when auto-email is on) every recipient address.
  • Least-privilege permission sets out of the box. Three permission sets ship with the package - Admin, User, and Automation - so end users only get the ability to generate, automation accounts only get what they need to run, and admin rights stay with a small group of template authors.
  • Reviewed by Salesforce, not by us. Sliick Docs is listed on the AppExchange, which means an independent Salesforce security review has examined the package against the AppExchange Security Requirements before it was made available.

Detailed technical guarantees (sharing semantics, query enforcement, stripInaccessible usage, audit-field write paths) are available on request for security-review processes.


Troubleshooting and reference

Authoring

SymptomCause and fix
Validation shows “All checks passed” but the proof PDF is missing fieldsThe test record has no value for those fields. The validator confirms the field exists and is readable; it cannot confirm a particular record has data.
”The repeat source X is not a known accessible child relationship”The relationship name doesn’t match any of the parent object’s child relationships, or the running user doesn’t have permission to read the child object.
Proof PDF shows raw {{Account.Field}} textThe merge field could not be substituted: the field was deleted after publish, or the running user no longer has permission to read it. Re-proof to surface the cause.
”Create draft” is missing from the editorThe template has no active release yet. Create draft only appears for published templates.
Repeat block renders nothing in the proofThe test record has zero rows in the chosen child relationship. Pick a test record that has child rows, or accept that the empty case is expected.
A specific error keeps appearing in a toastThe toast carries the root cause. For the full technical stack, ask your Salesforce admin to enable a debug log on the user and reproduce.

Batches

SymptomCause and fix
”This template already has 3 active batches” on submitHit the per-template concurrency cap. Wait for one to finish, or cancel a Queued one.
Analyzer says “Cannot proceed” with heap error in Combined modeReduce the record count via a tighter filter, or switch to Individual mode (per-execute heap is independent across chunks).
Batch is Running for hours without progressOpen the monitor - it will re-check the underlying job and reconcile its state. If still hung, Cancel and resubmit.
Combined PDF is missing on the batch rowIf status is Merging, the merge is still in flight - wait. If status is terminal but no file is attached, check the batch’s error summary.
”Download all as ZIP” doesn’t appearMode is Combined-only (no per-record files), or success count is zero.
Flow logs show one batch row per Loop iterationThe Bulk action was called inside a Flow Loop. Replace the Loop with a single Bulk call that passes the whole collection at once.
Record-Triggered Flow stops with no PDF generatedThe Flow action returns success=false and an errorMessage rather than throwing. Add a Decision element on success and read errorMessage on the failure path.

Imports

SymptomCause and fix
”Import file uses schemaVersion N but this org only knows version 1”The export file came from a newer package version than the target org. Upgrade Sliick Docs in the target org, then retry.
”Base object ‘X’ does not exist or is not accessible in this org”The object (or relevant access) is missing in the target org. Add the object, then re-import.
Merge field unresolved warningsA referenced field doesn’t exist in the target org. Add it (or update the editor state) and re-validate. No need to re-import.
Import succeeded but the new template name is “X (Imported 1)“Auto-rename on collision. Rename to your preferred name from the Library or the editor.
No “Import Template” buttonThe user lacks Sliick_Docs_Admin. Assign it.

Runtime (end users)

SymptomCause and fix
No templates appear in the Generator componentNo template has an active release for this object, or the template has not been published. Contact your admin.
Generation fails with a permission errorA field referenced by the template is hidden from you by Salesforce permissions. Ask your admin to grant access or adjust the template.
The generated PDF has missing dataA merge field could not resolve. This should normally fail at validation. Ask your admin to re-proof and re-publish.
The generated PDF formatting looks unusualThe proof in your admin’s editor is the source of truth. Ask them to compare against a fresh proof; if it differs, raise an issue.

Generated file naming

  • Proof files: <Template Name> - v<Version Number> - Proof - <Record Id>.pdf
  • Runtime files: the per-template File name pattern (with merge-field tokens like {{Account.Name}} - Summary.pdf), or the default {{<BaseObject>.Name}}.pdf if blank. Illegal filename characters are stripped automatically.

What is intentionally NOT in v1.0

  • Per-page running headers and footers: the native Salesforce PDF engine doesn’t yet support repeating headers and footers on every page.
  • Nested Repeat blocks: one level of looping only.
  • Two-hop child paths from inside a Repeat: for example Opportunities.Account.Name inside an Opportunities repeat. Parent lookups outside Repeat blocks go five hops.
  • Junction relationships: multi-hop lookups across junction objects.
  • Word / DOCX export: PDF only.
  • External rendering engines: native Salesforce PDF engine only - by design, so nothing leaves your org.
  • Custom fonts: Arial, Times New Roman, Helvetica, and Courier New only (the fonts the native Salesforce PDF engine supports).

Further reading

Share this article

Continue reading