diff --git a/apps/docs/content/docs/users/templates/create.mdx b/apps/docs/content/docs/users/templates/create.mdx
index d5b98f2a6..6e7f7f2e6 100644
--- a/apps/docs/content/docs/users/templates/create.mdx
+++ b/apps/docs/content/docs/users/templates/create.mdx
@@ -135,7 +135,9 @@ Additional options that apply to all documents created from this template:
## Template Visibility
-All templates are created in a team context. Team members can see, edit, delete, and use the templates in that team. See [Organisations](/docs/users/organisations) to learn about creating and managing organisations.
+All templates are created in a team context. By default, templates are **Private** and only visible to members of the owning team.
+
+If your organisation has multiple teams, you can set a template's type to **Organisation** to share it across all teams. See [Organisation Templates](/docs/users/templates/organisation-templates) for details.
---
diff --git a/apps/docs/content/docs/users/templates/index.mdx b/apps/docs/content/docs/users/templates/index.mdx
index 61b1ba089..c01977d16 100644
--- a/apps/docs/content/docs/users/templates/index.mdx
+++ b/apps/docs/content/docs/users/templates/index.mdx
@@ -24,6 +24,11 @@ description: Create reusable document templates for common signing workflows.
description="Create documents from your templates."
href="/docs/users/templates/use"
/>
+
---
diff --git a/apps/docs/content/docs/users/templates/meta.json b/apps/docs/content/docs/users/templates/meta.json
index 23bec564d..f67c03acb 100644
--- a/apps/docs/content/docs/users/templates/meta.json
+++ b/apps/docs/content/docs/users/templates/meta.json
@@ -1,4 +1,4 @@
{
"title": "Templates",
- "pages": ["create", "use"]
+ "pages": ["create", "use", "organisation-templates"]
}
diff --git a/apps/docs/content/docs/users/templates/organisation-templates.mdx b/apps/docs/content/docs/users/templates/organisation-templates.mdx
new file mode 100644
index 000000000..5e49e4e2c
--- /dev/null
+++ b/apps/docs/content/docs/users/templates/organisation-templates.mdx
@@ -0,0 +1,131 @@
+---
+title: Organisation Templates
+description: Share templates across all teams in your organisation so any team can create documents from them.
+---
+
+import { Callout } from 'fumadocs-ui/components/callout';
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+
+## Overview
+
+Organisation templates are templates shared across all teams within the same organisation. Any team in the organisation can browse and use them to create documents, but only the owning team can edit or delete them.
+
+This is useful when you have standardised documents that multiple teams need to use, such as company-wide NDAs, onboarding agreements, or compliance forms.
+
+## Requirements
+
+The Organisation template type is available when your organisation has **two or more teams**. If your organisation has only one team, the option does not appear.
+
+## Template Types
+
+| Type | Who can see it | Who can edit it | Who can use it |
+| ---------------- | ------------------------- | ----------------- | --------------------------- |
+| **Private** | Members of the owning team | Owning team | Owning team |
+| **Organisation** | All teams in the org | Owning team only | All teams in the org |
+| **Public** | Anyone with the link | Owning team | Anyone via direct link |
+
+## Set a Template as Organisation
+
+{/* prettier-ignore */}
+
+
+### Open template settings
+
+Navigate to **Templates**, open the template you want to share, and click **Edit Template** to open the editor. Then open the settings dialog.
+
+
+
+
+### Change the template type
+
+In the **Template type** dropdown, select **Organisation**. This option only appears if your organisation has at least two teams.
+
+
+
+
+### Save
+
+Click **Save** to apply the change. The template is now visible to all teams in your organisation.
+
+
+
+
+You can also set the template type to Organisation when creating a new template. The type dropdown appears in the template settings step.
+
+## Browse Organisation Templates
+
+{/* prettier-ignore */}
+
+
+### Open the templates page
+
+Navigate to **Templates** in the sidebar.
+
+
+
+
+### Switch to the Organisation tab
+
+Click the **Organisation** tab above the template list. This tab only appears for non-personal organisations.
+
+The Organisation tab shows all organisation templates from every team in your organisation, including your own.
+
+
+
+
+Templates from other teams display the owning team's name next to the template type.
+
+## Use an Organisation Template
+
+Any team member in the organisation can create documents from an organisation template, even if the template belongs to a different team.
+
+{/* prettier-ignore */}
+
+
+
+Find the template in the **Organisation** tab or click through from the template detail page.
+
+
+
+
+
+Click **Use Template** and fill in the recipient details. The document is created under your team, not the template's owning team.
+
+
+
+
+See [Use Templates](/docs/users/templates/use) for details on creating documents from templates.
+
+## Editing and Permissions
+
+Only members of the team that owns the template can edit or delete it. When viewing an organisation template from another team:
+
+- The **Edit Template**, **Direct Link**, and **Bulk Send** controls are hidden
+- The recipients section is read-only
+- The **Use Template** button is available
+
+To modify a template owned by another team, contact that team's members or ask an organisation admin to make changes.
+
+## Visibility
+
+Organisation templates respect the same visibility settings as other templates. A template's visibility determines which team roles can access it:
+
+| Visibility | Who can access |
+| --------------------- | --------------------------------------- |
+| **Everyone** | All team members (Admin, Manager, Member) |
+| **Manager and above** | Admins and Managers only |
+| **Admin** | Admins only |
+
+This applies to both the owning team and other teams in the organisation. A Member-role user on any team cannot see an organisation template set to Admin visibility.
+
+## Reverting to Private
+
+To stop sharing a template across the organisation, change the template type back to **Private** in the template settings. The template will only be visible to the owning team. Documents already created from the template are not affected.
+
+---
+
+## See Also
+
+- [Create Templates](/docs/users/templates/create) - Build reusable templates
+- [Use Templates](/docs/users/templates/use) - Create documents from templates
+- [Organisations](/docs/users/organisations) - Managing organisations and teams
diff --git a/apps/remix/app/components/general/envelope-editor/envelope-editor-header.tsx b/apps/remix/app/components/general/envelope-editor/envelope-editor-header.tsx
index 5e9f60915..4eda2ae87 100644
--- a/apps/remix/app/components/general/envelope-editor/envelope-editor-header.tsx
+++ b/apps/remix/app/components/general/envelope-editor/envelope-editor-header.tsx
@@ -1,7 +1,8 @@
import { Trans, useLingui } from '@lingui/react/macro';
-import { DocumentStatus, EnvelopeType } from '@prisma/client';
+import { DocumentStatus, EnvelopeType, TemplateType } from '@prisma/client';
import {
AlertTriangleIcon,
+ Building2Icon,
Globe2Icon,
LockIcon,
RefreshCwIcon,
@@ -94,12 +95,19 @@ export default function EnvelopeEditorHeader() {
{envelope.type === EnvelopeType.TEMPLATE && (
<>
- {envelope.templateType === 'PRIVATE' ? (
+ {envelope.templateType === TemplateType.PRIVATE && (
Private Template
- ) : (
+ )}
+ {envelope.templateType === TemplateType.ORGANISATION && (
+
+
+ Organisation Template
+
+ )}
+ {envelope.templateType === TemplateType.PUBLIC && (
Public Template
diff --git a/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx b/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
index 5f18db382..671cc83cf 100644
--- a/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+++ b/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
@@ -9,6 +9,7 @@ import {
DocumentVisibility,
EnvelopeType,
SendStatus,
+ TemplateType,
} from '@prisma/client';
import type * as DialogPrimitive from '@radix-ui/react-dialog';
import { InfoIcon, MailIcon, SettingsIcon, ShieldIcon } from 'lucide-react';
@@ -66,6 +67,10 @@ import {
DocumentVisibilityTooltip,
} from '@documenso/ui/components/document/document-visibility-select';
import { ExpirationPeriodPicker } from '@documenso/ui/components/document/expiration-period-picker';
+import {
+ TemplateTypeSelect,
+ TemplateTypeTooltip,
+} from '@documenso/ui/components/template/template-type-select';
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
import { CardDescription, CardHeader, CardTitle } from '@documenso/ui/primitives/card';
@@ -102,6 +107,7 @@ import { useToast } from '@documenso/ui/primitives/use-toast';
import { useCurrentTeam } from '~/providers/team';
export const ZAddSettingsFormSchema = z.object({
+ templateType: z.nativeEnum(TemplateType).optional(),
externalId: z.string().optional(),
visibility: z.nativeEnum(DocumentVisibility).optional(),
globalAccessAuth: z
@@ -196,6 +202,7 @@ export const EnvelopeEditorSettingsDialog = ({
const createDefaultValues = () => {
return {
+ templateType: envelope.templateType || TemplateType.PRIVATE,
externalId: envelope.externalId || '',
visibility: envelope.visibility || '',
globalAccessAuth: documentAuthOption?.globalAccessAuth || [],
@@ -270,6 +277,7 @@ export const EnvelopeEditorSettingsDialog = ({
try {
await updateEnvelopeAsync({
data: {
+ templateType: envelope.type === EnvelopeType.TEMPLATE ? data.templateType : undefined,
externalId: data.externalId || null,
visibility: data.visibility,
globalAccessAuth: parsedGlobalAccessAuth.success ? parsedGlobalAccessAuth.data : [],
@@ -606,6 +614,31 @@ export const EnvelopeEditorSettingsDialog = ({
)}
/>
+ {envelope.type === EnvelopeType.TEMPLATE && (
+ (
+
+
+ Template type
+
+
+
+
+
+
+
+ )}
+ />
+ )}
+
{settings.allowConfigureDistribution && (
{
const { _ } = useLingui();
return (
-
+