Efficient communication and personalized document generation are crucial for maintaining strong customer relationships in your business. Manual document generation can be time-consuming, repetitive and error-prone, decreasing productivity and customer satisfaction. You can solve this with automatic document generation by creating merged documents from predefined mail merge templates.
With Zoho CRM's mail merge templates you can create personalized documents, including forms, envelopes, and letters, by utilizing variables also known as merge fields. These templates enable you to merge data from variables, ensuring accurate information is incorporated into the documents without the need for manual data entry for each record. For additional information, please consult the guidelines on
Managing Mail Merge Templates.
In Zoho CRM, you can automate document generation using its mail merge template APIs. You can send, sign, and download customized documents automatically.
Send Mail Merge API : To send emails to users using mail merge template. You can also attach files either as inline images or separate attachments with the email through the API.
Let us discuss two use cases where these APIs are used. Assume you manage your business for a technological company, Zylker Technologies, using Zoho CRM.
Prerequisites
- Create a connector with required scopes. For the below use cases a connector with the below scopes was created -ZohoSign.documents.ALL, ZohoCRM.modules.ALL, ZohoWriter.documentEditor.ALL, ZohoWriter.Merge.ALL, ZohoCRM.settings.mailmerge.CREATE
Use Case 1: Using Mail Merge APIs for sending Letter of Intent for customers
Let us consider a scenario where you want to send a LOI (Letter of Intent) to be signed by your customer. A Letter of Intent is a formal document that contains a preliminary agreement and commitment to move forward with the deal, outlining key terms and conditions. You can create a mail merge template for your LOI with merge fields from your Customer module. You can find mail merge templates in Zoho CRM UI under Setup > Customization > Templates > Mail Merge. Refer the below image for a sample LOI mail merge template.
Sample Mail Merge Template for Letter of Intent
Note that the merge fields given in the mail merge template are fields from Accounts module (renamed as Customers) with additional custom fields.
You can automate sending the LOI to your customer using a
custom button with an associated function for the Customers module. In this case, a custom button "send LOI" is added as shown in the screenshot below.
Screenshot of Customer module showing sendLOI button
The below function calls sign mail merge API which sends the merged letter of intent document to your customer for signing. The customer will receive an email notification containing the document which can be signed using Zoho Sign. Sign mail merge API's response includes a Zoho Writer document link that can be used to track the signing status. In the below function, the system will send mail to the customer along with the mail-merged document for them to sign, and it will store the link to track the sign status in a custom URL field named Document Sign Details. This field allows you to access and review the document from your record conveniently.
customerMap = zoho.crm.getRecordById("Accounts",customerId.toLong()); name = customerMap.get("Account_Name"); to_email = customerMap.get("customer_Email"); merge_template_name = "LOI";
//Replace with your mail merge template name
info name; info to_email; input_json = "{'sign_mail_merge':[{'mail_merge_template':{'name':'" + merge_template_name + "'},'file_name':'letterofintent','sign_in_order':false,'signers':[{'recipient_name':'" + name + "','action_type':'sign','recipient':{'type':'email','value':'" + to_email + "'}}]}]}"; header_data = Map(); header_data.put("Content-Type","application/json"); response = invokeurl [ url :"https://www.zohoapis.com/crm/v5/Accounts/" + customerId.toLong() + "/actions/sign_mail_merge" type :POST parameters:input_json connection:"zylkercrm" ];
//Replace above connection name with your connection name
info response; details = response.getJSON("sign_mail_merge").toJSONList(); link = ""; for each detail in details { link = detail.get("details").get("report_link"); info link; } mp = Map(); mp.put("Document_Sign_Details",link); update = zoho.crm.updateRecord("Accounts",customerId.toLong(),mp); return ""; |
The system sends a merged document, as shown in the screenshot below, to the customer.
Final Merged Document sent to Customer
Use case 2: Using mail merge API for sending different types of SLA
Assume that in Zylker Technologies, when you sell a product, your customer can opt for different types of after sales support . A check list field - Support Type - indicates type of support - Standard or Premium. SLA document(Service Level Agreement) is a contract between you and your customer that defines level of service and the metrics used to measure the service.The service level provided to different customers will be different based on the kind of support they opted for and you need to send different SLA document based on this. This can be achieved by maintaining two SLA mail merge templates.
Similar to use case 1, a custom button can invoke the below function and in the function, a mail merge template is selected based on the type of service provided. The support_Type fields gets the value of the "Support Type" check list. Merge mail template is decided based on this field and send mail merge API is called to send the merged document. After sending the mail with appropriate mail merge template document, the function downloads the merged document and uploads it to the Attachments related list.
Using download mail merge API, the merged document is obtained and then attached to the Contacts module with the attachFile function.
customerMap = zoho.crm.getRecordById("Accounts",customerId.toLong()); to_email = customerMap.get("customer_Email"); from_email = customerMap.get("Owner").get("email"); support_Type = customerMap.get("Support_Type"); if (support_Type == "Premium" ) { merge_template_name = "SLA_Premium"; } else { merge_template_name = "SLA_Std"; } //Replace above merge template names with your merge template names input_json = "{'send_mail_merge':[{'mail_merge_template':{'name':'" + merge_template_name + "'},'from_address':{'type':'email','value':'" + from_email + "'},'to_address':[{'type':'email','value':'" + to_email + "'}],'subject':'Hi there','type':'attachment','attachment_name':'testdocument','message':'Big Deal'}]}"; header_data = Map(); header_data.put("Content-Type","application/json"); response = invokeurl [ url :"https://www.zohoapis.com/crm/v5/Accounts/" + customerId + "/actions/send_mail_merge" type :POST parameters:input_json connection:"zylkercrm" ]; //Replace above connection name with your connection name input_json = "{'download_mail_merge':[{'mail_merge_template':{'name':'" + merge_template_name + "'},'output_format':'pdf'}]}"; header_data = Map(); header_data.put("Content-Type","application/json"); //The merged document is stored to file_object file_object = invokeurl [ url :"https://www.zohoapis.com/crm/v5/Accounts/" + customerId.toLong() + "/actions/download_mail_merge" type :POST parameters:input_json connection:"zylkercrm" ]; //Replace above connection name with your connection name response = zoho.crm.attachFile("Accounts",customerId,file_object); return ""; |
The benefits of using the mail merge template APIs from Zoho CRM, which enable automated document generation, are highlighted in this article. These APIs enable the easy customization of the documents like Letters of Intent (LOIs), Service Level Agreements (SLAs), Request for Proposal (RFPs), etc. Businesses can increase efficiency, accuracy, and customer happiness by automating this procedure.
We hope you found this article useful. We will be back next week with another interesting topic. If you have any questions, write to us at
support@zohocrm.com or let us know in the comment section.
Recent Topics
Zoho Books - France
L’équipe de Zoho France reçoit régulièrement des questions sur la conformité de ses applications de finances (Zoho Books/ Zoho Invoice) pour le marché français. Voici quelques points pour clarifier la question : Zoho Books est un logiciel de comptabilité
Checklist/ save to onedrive/ a group of items invoicing in Zoho FSM
hi, is there a way to add a specific checklist to any WO without passing eachtime by the model customization? can we save file such picture directly in our sharepoint ak onedrive? is there any way to add a group of item pre defined to make invoicing easier
Pushing Data from One CRM account to another.
We have business partners that want to collaborate through the CRM. Other than pre-planned data migrations what are the options for Zoho Users to transfer data between the accounts. For instance, could I create a webhook that is sent from our CRM and then is picked up in the partner's Flow?
How to query for Deals record based on Pipeline?
I want to query for Deals records that matches a specified Pipeline using a Deluge function. When I call zoho.crm.searchRecords("Deals","(Pipeline:equals:" + myPipeline + ")"), I get this error: { code: 'INVALID_QUERY' , details: {...} , message: 'Invalid
Difference: Linking Module Record vs. Subform Row with lookup
In terms of "database relationship structure", is there is difference between a Linking Module Record and a Subform Row with a lookup? Both have the ability to store data related to a specific connection of two modules, right? Do I miss something? When
Explication sur comment mettre en place des règles d'affichage ou "layout Rules"
J'ai passé plus d'une heure hier avec le support et je n'ai rien compris !! Je suis lecteur assidu des guides (je "RTFM") qui ne sont absolument pas orienté "client" chez Zoho, et je tiens à le rappeler ici . Dans la documentation on m'indique un cas
Kaizen #96 Automatic Mail-Merge Document Creation Using Zoho CRM APIs
Efficient communication and personalized document generation are crucial for maintaining strong customer relationships in your business. Manual document generation can be time-consuming, repetitive and error-prone, decreasing productivity and customer
Values in multi pick list are not copied to copied deal
Hi, After a deal is completed in our sales funnel we copy the deal to an automatically created new deal in our project funnel. All fields are copied properly, but only a Multi Pick List is not copied. How can we copy the selected values in this field
Zoho Form linked to an external OneDrive Account
HI Can you connect to an external users OneDrive account from Zoho forms that is not a user in Zoho? I have a form that is shared externally where a sub contractor needs to receive info (including pictures) to their OneDrive account. When I try to connect
Automation#26: Notify Parent Ticket Owner on Child Ticket Status Updates
Hello Everyone! Ever found yourself juggling multiple service requests that seem like pieces of a larger puzzle? Managing interconnected tickets can be challenging, especially when updates on child tickets need to be tracked. That’s where our custom function
Zoho Workplace renforce sa sécurité avec l'intégration Zoho Vault
Dans un monde où l’information a une valeur inestimable, la protection des données sensibles n’a jamais été aussi essentielle. Une fuite de données peut non seulement compromettre la réputation d’une entreprise, mais également engendrer des pertes financières
Can the Product Image on the Quote Template be enlarged
Hello, I am editing the Quote Template and added ${Products.Product Image} to the line item and the image comes up but it is very tiny. Is there anyway that you can resize this to be larger? Any help would be great! Thanks
How to sort a data in summary report with Monthly ?
Hi Team, Can any one help me out how to sort a data based on monthly, Month was shuffled based on aliphatic order. i want to sort the below data monthy?
Directly Edit, Filter, and Sort Subforms on the Details Page
Hello everyone, As you know, subforms allow you to associate multiple line items with a single record, greatly enhancing your data organization. For example, a sales order subform neatly lists all products, their quantities, amounts, and other relevant
Set another Layout as Standard
We created a few layouts and we want to set another one to standard:
Create custom rollup summary fields in Zoho CRM
Hello everyone, In Zoho CRM, rollup summary fields have been essential tools for summarizing data across related records and enabling users to gain quick insights without having to jump across modules. Previously, only predefined summary functions were
How can I create individual records from a subform
Hi, I am collecting subform data into a Lead record and I need to create individual records for each row associated to the account when it is converted. How can I do this?
What is the Desk API?
I'm trying to fetch a lookup field data from desk to our creator application and it doesn't work. I'm guessing that my search parameter is wrong? On my trial function fetch if I use these: tickets = invokeurl [ url :"https://desk.zoho.com/api/v1/tickets/351081000145244764"
How to choose other payment methodes than creditcards
We have connected stripe as a payment provider in zoho books, booking, commerce and checkout. In stripe we selected al major payment methodes for Belgium (mainly bancontact). However, at checkout customers seems to have only the possibility to pay with
Why is Zoho support so terrible?
I've spent the last week trying to get zoho to fix sudden SSL certificate issues with our desk and project portals. I've raised a ticket and constantly been told the issue is on our side despite it being exceedingly obvious it's not. After finally convincing
Custom "Filter By" in Client Portal
Currently our client portal only shows items for that specific person that is logged on to the portal, we want the current logged user to see all items for that user's company. An example would be invoices, so the current user would see all invoices for
Ticket Views: filter criteria -> dynamic date values in relation to the current date
Hello all, It would be very helpful if you could build custom views in such a way that you do not have to adjust the criteria daily or at whatever interval in order to change the fixed date value as needed. For example, I would like to create a view that,
Unlocking New Horizons: A Year in Review
As we bid farewell to 2024, let's celebrate and revisit the key highlights of the year. From adding a new edition to cross-platform enhancements, here’s a roundup of all the feature updates designed to simplify accounting, optimize financial management,
Introducing 'Queries' In Zoho CRM
Hello everyone! We are here with an exciting feature - Queries in Zoho CRM! A little context before we dive right into the feature specifics :) In today’s fast-paced business environment, immediate access to relevant data is essential for informed decision-making.
Enable Sending Direct Messages to Self in Zoho Cliq
Hi, I would like to request a feature enhancement for Zoho Cliq to allow users to send direct messages to themselves. Currently, Zoho Cliq does not have the option to send a direct message to oneself. While creating a channel with just one member (the
Admin Access to Direct Messages in Zoho Cliq
Hi Zoho Cliq Team, We would like to request a feature enhancement to enable admin access to one-on-one conversations (direct messages) conducted through Zoho Cliq. Use Case: As administrators, there are situations where it becomes essential to access
Zoho developer edition does not work for us
Hi Is anyone else having this problem? I'm signed in with our admin/super user account. When I click on the link on this page: https://www.zoho.com/crm/developer/docs/dev-edition.html I am asked to agree to Terms and Conditions. Clicking Agree to Terms
Need help with KPI Widget on Dashboard
What I am trying to accomplish seems simple, but I cannot figure it out. Please help. I would like to show in a KPI Comparison Widget: Number of Meetings (CRM) Held in Last 30 Days compared to Number of Meetings Held the previous 30 days (from the date
Need to send message to slack channel from zoho people form
- I have setup slack connection in zoho people, it is successfully showing connected - I am using connection name to send message view custom function, but it is not working: response = invokeurl [ url :"https://app.slack.com/client/T78002gHF/C089773324"
User tiers
I am trying to add tiers of users. I would like: Me - CEO Next Tier down - Managers Next tier down - All the salepeople reporting to each manager I can only seem to add myself with mansagers below. Surely I can add more tiers?
Flow to follow up on trade fair contacts
Hi, Before we moved to Zoho we had some flows (sequences) in HubSpot to follow up on trade fair contacts. To explain further on this it had the following characteristics: New contacts could be added to the sequence When added a flow of communication started.
Queries filtered by current page/record
I have been trying to use the new queries feature, and I can filter the query, but I'm coming unstuck because I don't understand how to make the query dynamically include the filter of the current record. ie if I'm on a deal, to filter all the records
Article Numbers for KB articles
Hello, I was wondering if it's possible to turn on article numbers/ part numbering for KB articles. If this is not already a feature, we'd like to request it. Frequently a solution will require multiple articles so tracking which articles are referenced
Audit Log Export via API
Hello, Based on the documentation here https://www.zoho.com/crm/developer/docs/api/v7/create-export-audit-log.html I need to specify the scope ZohoCRM.settings.audit_logs.CREATE to create a log export. I've created a Self Client app but when I specify
Zoho CRM API Credits & Limits for Workflow
Hi Team, Just wanted to clarify how the API credits work for Zoho CRM and workflows with custom functions. API Credits are based on your subscription and are set at the account level. You can buy additional credits if needed. For Enterprise customers,
CRM Calendar Sync Not Working
I can't get any meetings where I am a participant to sync with either Bookings or Office 365. It syncs fine when I am the host, but as a participant, it just ignores the event. I have clients booking meetings when agents are in training or OOO or any
How to easy change layout in existing records in Deals?
Hello, So far i have used only 1 layout in Deals. I have about 1000 records. Now i want to make new layout. So i have 2 layouts: Layout Old (1000 records) Layout New (0 records) How to easy change layout from Layout Old into Layout New for existing records?
Change Last Name to not required in Leads
I would like to upload 500 target companies as leads but I don't yet have contact people for them. Can you enable the option for me to turn this requirement off to need a Second Name? Moderation update (10-Jun-23): As we explore potential solutions for
"Copy Field Values from one Module to another" how to use?
Hi everyone! I'm sorry if this question was already asked, I didn't find it! So let me explain: In my Tickets module, we have the custome field "customer type" where we indicate if it's a lead, user, etc... In the Contact module I used the "type" field with exactely the same entries. I would like when in the tickets module an operator choose an option that it automatically update it in the contact module. I found the "Copy Field Values from one Module to another" custom function which seems perfect
New Leave Type: Compensatory off
Hi, there is a new Leave Type: Compensatory off. Can someone tell me how to use it, because it sounds it could work for overtime compensation for our techs. Thanks Andreas
Next Page