In response to the question about connecting Zoho Creator to Zoho Writer for prefilled documents, I wanted to share a working implementation that demonstrates how to use the
record_id parameter with the Zoho Writer Merge API. This allows Writer to automatically fetch data from your Creator record without manually building the merge data map.
The Solution
According to the
official Merge and Sign documentation, instead of using
merge_data, you can pass the
record_id and Writer will fetch the data internally:
Key Insight:
This approach is applicable only for Zoho CRM, Creator, Recruit and Bigin templates. When you pass the record_id parameter, Zoho Writer automatically retrieves the field values from your Creator record - no need to manually construct a merge data map.
Working Script Example
Here's a complete Deluge function that demonstrates using the Creator record ID with the Merge and Sign API:
Pro Tip:
When configuring your merge template in Writer, you'll connect it to a Creator report as the data source. If you trigger a merge manually within Writer, all fields will populate correctly. However, when triggered via the Merge API, Writer uses the
Creator Get Record by ID API to fetch data from your report — this means any fields not included in the connected Creator report will return empty in the merged document. Ensure all fields you need are present in the Creator report before using the API.
void zWriterSign.sendForSigning(Form_Name fnRecord)
{
//fetch employee record
eeRecord = Employee[ID = fnRecord.Employee_Lookup];
//
//Writer template ID (found in document URL)
templateId = "dfd8f76sf0dfdfeb8974ifcx9873d9876d8s03";
//
//Use the Creator record ID - Writer will fetch the data automatically
recordId = fnRecord.ID.toString();
//
param = Map();
param.put("record_id",recordId);
param.put("service_name","zohosign");
param.put("filename",fnRecord.Field_Name);
//
//Build signer list
signerList = List();
//
//First signer - approver
signerObj1 = Map();
signerObj1.put("recipient_1",ifnull(eeRecord.Email,"fallback@example.com"));
signerObj1.put("action_type","approve");
//approve|sign|view|in_person_sign
signerObj1.put("language","en");
signerList.add(signerObj1);
//
//Second signer - actual signer
signerObj2 = Map();
signerObj2.put("recipient_2",fnRecord.Signer_Email);
signerObj2.put("action_type","sign");
//approve|sign|view|in_person_sign
signerObj2.put("language","en");
signerList.add(signerObj2);
//
param.put("signer_data",signerList);
param.put("sign_in_order","true");
//
//Optional: custom message
if(!fnRecord.Custom_Message.isEmpty())
{
param.put("message",fnRecord.Custom_Message);
}
//
//Optional parameters
param.put("reminder_period","3");
param.put("set_expire","7");
param.put("test_mode",true);
//
//Execute the merge and sign request
newSignMerge = invokeurl
[
url :"https://www.zohoapis.eu/writer/api/v1/documents/" + templateId + "/merge/sign"
type :POST
parameters:param
connection:"zwritersign"
];
//
info newSignMerge;
}
Important: Data Center Considerations
The API endpoint URL must match your Zoho data center. Using the wrong domain will result in authentication failures or data access issues.
How to determine your data center:
- Log into your Zoho Creator application
- Check the URL in your browser's address bar
- If it shows
creator.zoho.eu, use zohoapis.eu - If it shows
creator.zoho.com, use zohoapis.com - Match the domain suffix accordingly for other regions
Prerequisites
Before using this API, ensure you have:
1. Template Access
Open your Writer template at least once from the Zoho Writer dashboard before sending API requests. Navigate to the hamburger menu → Automate tab.
|
2. OAuth Connection
Create a connection in Creator with the required scopes:
ZohoWriter.documentEditor.ALL
ZohoWriter.merge.ALL
ZohoSign.documents.ALL
|
Template Field Mapping:
Your Writer template merge fields must match your Creator form field names exactly. When using record_id, Writer automatically maps fields by their link names.
Available Merge API Endpoints
The record_id approach works with multiple Writer Merge APIs:
| API |
Endpoint |
Purpose |
| Merge and Sign |
/merge/sign |
Merge document and send for electronic signature via Zoho Sign |
| Merge and Email |
/merge/email |
Merge document and send as email attachment |
| Merge and Store |
/merge/store |
Merge document and save to Zoho WorkDrive |
| Merge Document |
/merge |
Merge and return download link (expires in 2 days) |
| Merge and Share Fillable |
/merge/sharetofill |
Generate pre-filled fillable links for data collection |
Signer Configuration Options
//Available action types for signers:
signerObj.put("action_type","sign"); //Requires signature
signerObj.put("action_type","approve"); //Approval only, no signature
signerObj.put("action_type","view"); //View only access
signerObj.put("action_type","in_person_sign"); //In-person signing
//Optional: Specify recipient name
signerObj.put("recipient_name","John Smith");
//Optional: Add private notes to signer
signerObj.put("private_notes","Please review section 3 carefully");
//Optional: Alternative delivery methods
deliveryType = Map();
deliveryType.put("type","sms"); //or "whatsapp"
deliveryType.put("countrycode","+1");
deliveryType.put("phonenumber","5551234567");
signerObj.put("delivery_type",{deliveryType});
Common Issues and Solutions
| Issue |
Cause |
Solution |
| "Invalid merge data" error |
Record ID not found or wrong format |
Ensure record_id is passed as a string using .toString() |
| Empty merge fields |
Field name mismatch between Creator and Writer |
Verify template merge field names match Creator field link names exactly |
| Authentication failure |
Wrong data center domain |
Match API domain to your account's data center |
| "Template not accessible" error |
Template not opened in Writer UI |
Open template once from Writer dashboard → Automate tab |
| Connection scope error |
Missing OAuth scopes |
Regenerate connection with all required scopes listed above |
Pro Tip:
Use param.put("test_mode",true); during development. This allows you to test the merge without consuming Zoho Sign credits (though the output will contain a watermark). Remove this parameter for production use.
📚 Documentation References:
Recent Topics
How do i move multiple tickets to a different department?
Hello, i have several tickets that have been assigned to the wrong department. I am talking about hundreds of automatically generated ones that come from a separate system. How can i select them all at once to move them to another department in one go? I can select them in "unsassigned open tickets view" but i can't find a "move to another department" option. I also can't seem to assign multiple tickets to the same agent in that same view. Could somebody advice?
Transferring CRM Attachments to Workdrive
relatedrecords = zoho.crm.getRelatedRecords("Attachments","Conditions",conId); attachid = List(); for each ele in relatedrecords { attachementId = ele.get("id"); attachid.add(attachementId); } for each ele in attachid { counter = 1; downloadFile = invokeurl [ url: "https://www.zohoapis.com/crm/v2/Conditions/" + conId + "/Attachments/" + ele type: GET connection : "work_drive" ]; resp2 = zoho.crm.attachFile("Deals",dealId,downloadFile); resp3 = zoho.workdrive.uploadFile(downloadFile, dealWD, "PlaceHolder"+counter+"",
New Customization options in the module builder: Quick Create and Detail view
Hello everyone, We have introduced two new components to the module builder: Quick create and Detail view. The Quick Create Component It is a mini form used to create a record and associate it to the parent record from a lookup field. For example, if you have a Deals lookup in the Contacts module, then you can associate existing deals or create a deal and associate it with the contact. You can customize this Quick Create form by adding standard as well as custom fields. There is no limit to the number
unblock my zoho mail account. outlines@zoho.com
please unblock my zoho mail account, outlines@zoho.com
SMTP email sending problem
Hello, I've sent emails before, but you haven't responded. Please respond. My work is being disrupted. I can't send emails via SMTP. Initially, there were no problems, but now I'm constantly receiving 550 bounce errors. I can't use the service I paid
Mailk got blocked / Inquiry About Email Sending Limits and Upgrade Options
Dear Zoho Support Team, My name is Kamr Elsayed I created this account to use for applying for vocational training in Germany. As part of this process, I send multiple emails to different companies. However, after sending only 8 emails today, I received
Forwarder
Hi, I tried to add a forwarder from which emails are sent to my main zoho account email . However, it asks me for a code that should be received at the forwarder email, which is still not activated to send to my zoho emial account. So how can I get the
No chat option
Chat option is not supported.
Direct “Add to Google Calendar” Option in Zoho Meeting
Hello Zoho Meeting Team, Hope you are doing well. We would like to request an enhancement related to the “Add to Calendar” functionality in Zoho Meeting. Currently, when we open Zoho Meeting and view our meetings under My Calendar, there is an Add to
Default Tagging on API-generated Transactions
If one assigns tags to an Item or Customer, those tags get auto-populated in each line item of an Invoice or Sales Order when one creates those documents. However, if one creates the Sales Order or Invoice via the API (either directly coding or using
DKIM cannot be enabled for the domain as no verified default selector present
Hi Support Team, For Domain DKIM record trying to enable status. but showing error "DKIM cannot be enabled for the domain as no verified default selector present" So, please resolve the issue. Thank you.
unable to send message reason 554 5.1.8 Email outgoing blocked
unable to send message reason 554 5.1.8 Email outgoing blocked
I can't log in to my account on Thunderbird
I've just had to rebuild my PC (calamitous mess from Microsoft with Win10/Win 11 'upgrade' - they confirmed I had to start with a new build). I have used Zoho mail for years via Mozilla Thunderbird, but now I've had to download the latest version of TBird,
Should I Use DMARC?
When I configure Zoho Mail's DMARC settings, it's mandatory to fill in the RUA and RUF (Aggregate notification email address*, Forensic notification email address*) addresses. When we enter an email address in these fields, we receive reports from the
Introducing Profile Summary: Faster Candidate Insights with Zia
We’re excited to launch Profile Summary, a powerful new feature in Zoho Recruit that transforms how you review candidate profiles. What used to take minutes of resume scanning can now be assessed in seconds—thanks to Zia. A Quick Example Say you’re hiring
Books API Receiving an Error that Doesn't Make Sense when Creating Credit Note - trying to use 'ignore_auto_number_generation' argument
Hello, I'm working on a newly created routine and I'm getting an error that doesn't make sense when trying to create a new Credit Note. Here is my POST request. Endpoint: https://www.zohoapis.com/books/v3/creditnotes?organization_id=########## Body: {
How to move emails to Shared Mailbox?
Hello, I created a Shred Mailbox instead of using a distribution group. But I cannot move previous emails to certain shared mailbox. Is it possible move some emails from inbox to shared mailbox?
Collaboration with free plan user.
Hello. Do both users need to be on Pro plan to collaborate? Or can a Pro user share a note with a free plan user with the ability to edit?
Connection to other user
Zoho Cliq handles sharing of Custom OAuth Connections that require individual user logins.
In arattai received message can't be deleted
The issue has been noticed in following: arattai app (Android) arattai app (Window) arattai web While the message posted by me may be deleted, the ones received from others can't be. The item <Delete> change to <Report> when the message is a received
Analytics Portal
I have the "standard plan" and want to explore the portal option; I activated the 15-day trial but do not see the pricing for the add-on. How can I get the price under "Upgrade add-ons." Thanks Rudy
Can I filter a Lookup field to only show related records from another Lookup in Zoho CRM?
In our Leads module, we have two Lookup fields: Recruitment Agency – the agency that the lead came from Recruiter – the individual contact from that agency who sent us the lead Both fields link correctly to their respective records in CRM. However, our
Zoho Books API invoice email bouncing with 'relaying-issues' error
I have waited over 30 days for zoho books uk to assist with the following and i have had no replies or tickets erronously closed. The service has been terrible - very unlike zoho! So i am raising this here hoping that a community member can assist: Hello,
How do I filter contacts by account parameters?
Need to filter a contact view according to account parameter, eg account type. Without this filter users are overwhelmed with irrelevant contacts. Workaround is to create a custom 'Contact Type' field but this unbearable duplicity as the information already
Zoho Writer to Zoho Sign Template Misalignment – Request for Community
We are currently facing a critical issue impacting our live business operations due to a misalignment problem between Zoho Writer templates and Zoho Sign output. Issue Summary: We have an automated workflow in Zoho CRM using Deluge scripts that generates
Account blocked
Yesterday I got my Zeptomail account blocked due to too many hard bounces. My account is used exclusively for sending transactional emails (eg. your order has been shipped, a form has been filled, etc) and the sudden blocking impacted hundreds of websites
Migration Tool Download
Since apparently you have to ask for the migration tool to download (why?), I need the download for the migration tool for exchange servers. Please forward link, thanks.
IF Formula
Hi, I'm having trouble setting up a custom formula in a field. Can you help me with it? The formula should do the following: If the created date is less or equal to 30 days the field should display a string New in pieline or Exisitng pipeline if above
Autorespond to one specific sender
Is there any way to create a rule or filter that sends an automatic reply to messages from one specific email address? I really need to set up something like a "vacation response" but only for one "received from" address.
View comprehensive logs of all actions in Custom Module History
Hello everyone, We are happy to announce our new feature, Detail View in Custom Module History, which enhances visibility, control and accountability over your records. Users can now access a detailed timeline of every action that has been performed on
Track ZohoForm Conversion using Postmessage event
Hi, I’ve been using a third-party lead tracking tool to capture leads from my website along with their source. Earlier, with the HubSpot form, the third-party script was able to detect the postMessage event that iframe forms typically send back to the
Email task creator when task is updated/marked complete
I am looking for a way to notify the creator of a task in zoho todo when - Task is updated Task is closed Comments entered 1 and 2 are critical, and I cannot find a zoho flow to do this. There is no way that as a manager I will know when someone has completed
Email Recall Feature In Zoho Mail Which Should Also Work For Outside Organisation Members
Add a feature to recall or undo sending an email within a configurable short time window (e.g., 30 seconds to 2 minutes) after hitting send, similar to Gmail’s undo send. Currently the sent email can not be recall If the recipient is not from within your
How to implement calculating average value of averaged values?
Hi, I'm trying to implement a formula in my layout for a module that calculates the average of 2 averaged values, but I can't do so using the formula custom field. To calculate the 2 averaged values, I could use the formula custom field, but in the custom
Zoho Recruit update published job boards
If we have a job thats already posted on several different job boards and we edit this job in zoho recruit (e.g. the description of the job), does this then automatically update this new information to all the published job boards? If not, how does the
Narrative 14: The magic bazaar of Desk
Behind the scenes of a successful ticketing system: BTS Series Narrative 14: The magic bazaar of Desk Marketplace is a centralized platform where users can discover Zoho and third-party applications that can be integrated with their Desk account to facilitate
Collections Management: #2 Late Payment Automation
"Sir, I'll process the payment by evening, please don't apply any late payment charges", the customer said while arranging papers on his desk. Sanjay stood there with a tired smile. He had already visited twice that week. Payment collection was one thing.
Create a table in the layout section of modules
Dear Sirs, I would like to know whether is possible to create a table under new fields in layouts section of modules. In fact in this section there are single line, multi line, pick list, multi-select, date, formula etc. but I am unable to add a table
Nimble enhancements to WhatsApp for Business integration in Zoho CRM: Enjoy context and clarity in business messaging
Dear Customers, We hope you're well! WhatsApp for business is a renowned business messaging platform that takes your business closer to your customers; it gives your business the power of personalized outreach. Using the WhatsApp for Business integration
Power of Automation :: Automatic Task Status Handling for Users
Hello Everyone, A custom function is a software code that can be used to automate a process and this allows you to automate a notification, call a webhook, or perform logic immediately after a workflow rule is triggered. This feature helps to automate
Next Page