Architectural Overview
MailMergeSettings governs configuration parameters for Salesforce Classic Mail Merge and Extended Mail Merge. In enterprise scenarios requiring generation of printed correspondence, customized physical letters, or formal billing statements, Mail Merge merges CRM record fields (such as Account names, Contact addresses, and Opportunity amounts) into Microsoft Word document templates.
From an architectural standpoint, standard mail merge requires local desktop execution with Microsoft Word plugins, whereas Extended Mail Merge executes document generation asynchronously on Salesforce servers and automatically attaches the resulting merged document to the requesting user’s email or record.
Directory and File Conventions
MailMergeSettings is stored in the settings directory:
| Property | Value |
|---|---|
| Directory Name | settings |
| File Name | MailMerge.settings-meta.xml |
| Root XML Element | <MailMergeSettings> |
| API Version | 68.0 |
Key Metadata Fields
The MailMergeSettings schema configures merge execution limits:
| Field Name | Type | Description |
|---|---|---|
enableMailMerge |
boolean |
Master toggle activating mail merge functionality. |
enableExtendedMailMerge |
boolean |
Enables server-side asynchronous extended mail merge services. |
maxMailMergeRecipients |
int |
Maximum allowed number of merged recipient records per batch operation. |
Note
Extended Mail Merge requires enabling server-side document services. When enabled, merged files are delivered as compressed zip archives containing individual document files.
Declarative XML and Package Manifest Examples
Below is a standard MailMerge.settings-meta.xml configuration:
<?xml version="1.0" encoding="UTF-8"?>
<MailMergeSettings xmlns="http://soap.sforce.com/2006/04/metadata">
<enableMailMerge>true</enableMailMerge>
<enableExtendedMailMerge>true</enableExtendedMailMerge>
<maxMailMergeRecipients>1000</maxMailMergeRecipients>
</MailMergeSettings>Manifest Definition (package.xml)
Include the setting in package.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>MailMerge</members>
<name>Settings</name>
</types>
<version>68.0</version>
</Package>CLI Retrieval and Deployment Commands
Use the Salesforce CLI to deploy mail merge configurations:
# Retrieve MailMerge settings
sf project retrieve start --metadata Settings:MailMerge
# Deploy settings to production
sf project deploy start --source-dir force-app/main/default/settings/MailMerge.settings-meta.xmlSenior Architect Deployment Best Practices and Gotchas
- Legacy Dependency Management: While
MailMergeSettingsremains supported for backward compatibility, modern enterprise architectures should evaluate Salesforce Omnistudio Document Generation or AppExchange document engines for interactive, browser-native document authoring. - Batch Recipient Limits: Keep
maxMailMergeRecipientscapped at or below 1,000 records. Submitting excessively large batch merge jobs can lead to transaction timeouts or email delivery rejections. - Attachment Storage Consumption: Extended mail merge attaches generated documents to user records and sends email notifications. In high-volume operations, ensure sufficient Salesforce file storage is available.
Warning
Disabling <enableMailMerge> completely removes the Mail Merge button from page layouts and disables classic Word template generation across all objects.
Frequently asked questions
Where is MailMergeSettings saved in an SFDX repository?
It is stored in the settings directory within the file MailMerge.settings-meta.xml.
What is the difference between standard and extended mail merge?
Extended mail merge generates documents on Salesforce servers and emails results, avoiding local Microsoft Word client requirements.
How does maxMailMergeRecipients protect org performance?
It caps the number of records processed in a single batch merge operation to prevent server timeout exceptions.
Are classic mail merge templates still used in modern orgs?
While supported for legacy contracts and letters, modern implementations generally adopt Salesforce Omnistudio Document Generation.
Comments
Questions, corrections and tips are welcome. Comments are GitHub Discussions, so you sign in with GitHub.