Hey there!
Welcome back to yet another insightful post in our Kaizen series!
In this post, we will continue the journey of PHP SDK sample codes for Record Operations from last week. Let us delve into a new set of use-cases and expand your horizons with additional examples in the Record and Send Mail Operations.
1. Subforms
To add subform details of a record during a record create/update, use the following format.
$subformVar = new Record(); $subformVar->addKeyValue("Subform_Field_API_Name", "FieldValue"); $record->addKeyValue("Subform_API_Name", [$subformVar]); |
Repeat the second line of the above code to add as many fields as you have in your subform layout. To add multiple subform records, you will have to map the fields within a new object for each subform record.
Here is a sample code to update the details of a custom subform in Contacts.
<?php
use com\zoho\crm\api\HeaderMap; use com\zoho\crm\api\record\BodyWrapper; use com\zoho\crm\api\record\RecordOperations; use com\zoho\crm\api\record\Contacts; use com\zoho\crm\api\util\Choice; use com\zoho\crm\api\record\Record;
require_once "vendor/autoload.php";
class UpdateRecord {
public static function initialize()
{
// add initialisation code // refer to the previous post for details and examples }
public static function updateRecord1(string $moduleAPIName, string $recordId)
{ $recordOperations = new RecordOperations(); $request = new BodyWrapper(); $record = new Record();
$record->addFieldValue(Contacts::LastName(), "Boyle"); $subformRec1 = new Record(); $subformRec1->addKeyValue("Language_Proficiency", new Choice("English")); $subformRec1->addKeyValue("Secondary_Phone", "9876543210");
$record->addKeyValue("Proficiency_and_Others", [$subformRec1]); $request->setData([$record]); $headerInstance = new HeaderMap(); $response = $recordOperations->updateRecord($recordId, $moduleAPIName, $request, $headerInstance);
//Add your code to handle the response received in $response // For more details, see here.
} }
UpdateRecord::initialize(); $moduleAPIName = "Contacts"; $recordId = "5545974000002858001"; UpdateRecord::updateRecord1($moduleAPIName, $recordId); ?> |
2. Line Items and Line Taxes in Inventory Modules
2.1 Product Line Items and Product Line Taxes
To add or update product line items and their product line taxes in the Inventory module, use the following format.
$lineItemVar = new Record(); $lineItemProductVar = new LineItemProduct(); $lineItemProductVar->setId("product_id"); $lineItemVar->addKeyValue("Product_Name", $lineItemProductVar); $lineItemVar->addKeyValue("Quantity", Value); $lineItemVar->addKeyValue("ListPrice", Value); $lineItemVar->addKeyValue("Discount", Value); $productLineTaxVar = new LineTax(); $productLineTaxVar->setName("Tax_Name"); $productLineTaxVar->setPercentage(Value); $lineItemVar->addKeyValue('Line_Tax', [$productLineTaxVar]); |
Repeat this code to add multiple products to the inventory record.
Note that when you update any one of the line items in the inventory records, the remaining line items will become null and have to be re-added to the list.
2.2 Inventory Record Line Taxes
To add line taxes to an inventory record, use the following format.
$lineTaxVar = new LineTax(); $lineTaxVar->setName("Tax_Name"); $lineTaxVar->setPercentage(Value); $record->addKeyValue('$line_tax', [$lineTaxVar]); |
The 'line_tax' represents the tax amount specific to each line item. Whereas, the '$line_tax' represents the tax applied to the overall products in the line item list.
Following is a sample code to create a record in the Quotes module.
<?php
use com\zoho\crm\api\HeaderMap; use com\zoho\crm\api\record\BodyWrapper; use com\zoho\crm\api\record\LineTax; use com\zoho\crm\api\record\LineItemProduct; use com\zoho\crm\api\record\RecordOperations; use com\zoho\crm\api\record\{Accounts, Contacts, Quotes, Deals}; use com\zoho\crm\api\record\Record;
require_once "vendor/autoload.php";
class CreateRecords { public static function initialize() {
// add initialisation code // refer to the previous post for details and examples }
public static function createRecords(string $moduleAPIName) { $recordOperations = new RecordOperations(); $bodyWrapper = new BodyWrapper(); $record = new Record(); $record->addFieldValue(Quotes::Subject(), "Quote No 1"); $AccountName = new Record(); $AccountName->addFieldValue(Accounts::id(), "55459742858119"); $record->addFieldValue(Quotes::AccountName(), $AccountName); $dealName = new Record(); $dealName->addFieldValue(Deals::id(), "55459742858125"); $record->addFieldValue(Quotes::DealName(), $dealName); $contactName = new Record(); $contactName->addFieldValue(Contacts::id(), "55459742858122"); $record->addFieldValue(Quotes::ContactName(), $contactName);
//product 1 $inventoryLineItem1 = new Record(); $lineItemProduct1 = new LineItemProduct(); $lineItemProduct1->setId("55459742897004"); $inventoryLineItem1->addKeyValue("Product_Name", $lineItemProduct1); $inventoryLineItem1->addKeyValue("Quantity", 2.0); $inventoryLineItem1->addKeyValue("ListPrice", 150.0); $inventoryLineItem1->addKeyValue("Discount", "5%"); $productLineTax = new LineTax(); $productLineTax->setName("Sales Tax"); $productLineTax->setPercentage(2.0); $inventoryLineItem1->addKeyValue('Line_Tax', [$productLineTax]);
//product 2 $inventoryLineItem2 = new Record(); $lineItemProduct2 = new LineItemProduct(); $lineItemProduct2->setId("55459742897009"); $inventoryLineItem2->addKeyValue("Product_Name", $lineItemProduct2); $inventoryLineItem2->addKeyValue("Quantity", 1.0); $inventoryLineItem2->addKeyValue("ListPrice", 100.0); $inventoryLineItem2->addKeyValue("Discount", "3%"); $productLineTax1 = new LineTax(); $productLineTax1->setName("Sales Tax"); $productLineTax1->setPercentage(2.0); $productLineTax2 = new LineTax(); $productLineTax2->setName("Vat"); $productLineTax2->setPercentage(4.0); $inventoryLineItem2->addKeyValue('Line_Tax', [$productLineTax1, $productLineTax2]); $record->addKeyValue("Quoted_Items", [$inventoryLineItem1, $inventoryLineItem2]);
//line taxes $lineTax1 = new LineTax(); $lineTax1->setName("Sales Tax"); $lineTax1->setPercentage(2.0); $lineTax2 = new LineTax(); $lineTax2->setName("Vat"); $lineTax2->setPercentage(2.0); $record->addKeyValue('$line_tax', [$lineTax1, $lineTax2]);
$bodyWrapper->setData([$record]); $headerInstance = new HeaderMap(); $response = $recordOperations->createRecords($moduleAPIName, $bodyWrapper, $headerInstance); //Add your code to handle the response received in $response // For more details, see here. } }
CreateRecords::initialize(); $moduleAPIName = "Quotes"; CreateRecords::createRecords($moduleAPIName); ?>
|
3. Events and Tasks Module Operations
3.1 Add and Update Participants in Events
There are two methods to add participants to an event. In the first method, use the record ID of the contact, lead or user.
$participantVar = new Participants(); $participantVar->addKeyValue("participant", "record_id"); $participantVar->addKeyValue("type", "record_module"); $record->addFieldValue(Events::Participants(), [$participantVar]); |
In the second method, mention the participant's email ID with the type key specified as email.
$participantVar = new Participants(); $participantVar->setType("email"); $record->addFieldValue(Events::Participants(), [$participantVar]); |
In the above code snippet, setParticipant() is a method used to assign a new value to the participant field.
3.2 Reminder in Events
To create/update reminders for any event, use the following format.
$reminderVar = date_create("YYYY-MM-DDThh:mm:ss.sssZ", new \DateTimeZone(date_default_timezone_get())); $record->addFieldValue(Events::FieldName(), $reminderVar); |
Here
date_create() function is used to create the
DateTime object with two parameters. The first parameter represents for the
DateTime string and the following represents for the
time zone.
3.3. Reminder in Tasks
To create/update reminder for a task, use the following format.
$remindAtVar = new RemindAt(); $remindAtVar->setAlarm("ACTION=Value;TRIGGER=Condition;TRIGGER_TIME=hh:mm"); $record->addFieldValue(Tasks::FieldName(), $remindAtVar); |
In the above code, the setAlarm() method is used to set the reminder properties. The multiple key-value pairs in the string argument denote the properties of your reminder. Following are the representation of keys for this field type.
- ACTION - Specifies the notification type of the reminder.
- TRIGGER - Defines the trigger condition that activates the reminder.
- TRIGGER_TIME - Indicates the time at which the alarm should be triggered.
Refer to
this document, to learn more about these key-value pairs and their possible values.
3.4 Recurring Activity in Events and Tasks
Use the following format to create a recurring event.
$recurringActivityVar = new RecurringActivity(); $recurringActivityVar->setRrule("FREQ=value;INTERVAL=value;BYMONTH=mm;BYMONTHDAY=dd;
DTSTART=yyyy-mm-dd;UNTIL=yyyy-mm-dd");
$record->addFieldValue(Module_API_Name::FieldName(), $recurringActivityVar); |
Here, the
setRrule() method is used to define the elements that determine the recurrence of the activity. This format is common for all the activity modules. To know more about the
Rrule elements, refer to
this post.
Below is a sample code to create an event using the above field types.
<?php
use com\zoho\crm\api\HeaderMap; use com\zoho\crm\api\record\BodyWrapper; use com\zoho\crm\api\record\Participants; use com\zoho\crm\api\record\RecordOperations; use com\zoho\crm\api\record\RecurringActivity; use com\zoho\crm\api\record\Events; use com\zoho\crm\api\record\Record;
require_once "vendor/autoload.php";
class CreateRecords { public static function initialize() { // add initialisation code // refer to the previous post for details and examples }
public static function createRecords1(string $moduleAPIName) { $recordOperations = new RecordOperations(); $BodyWrapper = new BodyWrapper(); $record = new Record(); $record->addFieldValue(Events::EventTitle(), "Test Events"); $startdatetime = date_create("2023-05-16T23:03:06+05:30", new \DateTimeZone(date_default_timezone_get())); $record->addFieldValue(Events::StartDateTime(), $startdatetime); $enddatetime = date_create("2023-05-16T23:45:06+05:30", new \DateTimeZone(date_default_timezone_get())); $record->addFieldValue(Events::EndDateTime(), $enddatetime);
//add participants $participant1 = new Participants(); $participant1->setType("email"); $participant2 = new Participants(); $participant2->addKeyValue("participant", "5545974000002858122"); $participant2->addKeyValue("type", "contact"); $record->addFieldValue(Events::Participants(), [$participant1, $participant2]);
//event reminder $remindAt = date_create("2023-05-16T21:00:06+05:30", new \DateTimeZone(date_default_timezone_get())); $record->addFieldValue(Events::RemindAt(), $remindAt);
//recurring event $recurringActivity = new RecurringActivity(); $recurringActivity->setRrule("FREQ=YEARLY;INTERVAL=1;BYMONTH=5;BYMONTHDAY=16;DTSTART=2023-05-16;UNTIL=2026-05-16"); $record->addFieldValue(Events::RecurringActivity(), $recurringActivity);
$BodyWrapper->setData([$record]); $headerInstance = new HeaderMap(); $response = $recordOperations->createRecords($moduleAPIName, $BodyWrapper, $headerInstance); //Add your code to handle the response received in $response // For more details, see here. } }
CreateRecords::initialize(); $moduleAPIName = "Events"; CreateRecords::createRecords1($moduleAPIName);
?>
|
Here is a sample code for creating a recurring task with a reminder.
<?php
use com\zoho\crm\api\HeaderMap; use com\zoho\crm\api\record\BodyWrapper; use com\zoho\crm\api\record\RecordOperations; use com\zoho\crm\api\record\RecurringActivity; use com\zoho\crm\api\record\RemindAt; use com\zoho\crm\api\record\Tasks; use com\zoho\crm\api\record\Record;
require_once "vendor/autoload.php";
class CreateRecords { public static function initialize() { // add initialisation code // refer to the previous post for details and examples }
public static function createRecords1(string $moduleAPIName) { $recordOperations = new RecordOperations(); $bodyWrapper = new BodyWrapper(); $record = new Record(); $record->addFieldValue(Tasks::Subject(), "Follow-up call");
//task reminder $remindAt = new RemindAt(); $remindAt->setAlarm("ACTION=EMAIL;TRIGGER=-P0D;TRIGGER_TIME=14:20"); $record->addFieldValue(Tasks::RemindAt(), $remindAt);
// recurring task $recurringActivity = new RecurringActivity(); $recurringActivity->setRrule("FREQ=WEEKLY;INTERVAL=1;UNTIL=2023-06-01;BYDAY=TH;DTSTART=2023-06-01"); $record->addFieldValue(Tasks::RecurringActivity(), $recurringActivity);
$bodyWrapper->setData([$record]); $headerInstance = new HeaderMap(); $response = $recordOperations->createRecords($moduleAPIName, $bodyWrapper, $headerInstance); //Add your code to handle the response received in $response // For more details, see here. } }
CreateRecords::initialize(); $moduleAPIName = "Tasks"; CreateRecords::createRecords1($moduleAPIName); ?> |
5. Send Email
You can either use an
email or
inventory template to send mail or write your own HTML/text body for the email. Refer to this
sample code on GitHub to know how to fetch the inventory template IDs. To use a template in your email follow the below structure.
$mail = new Mail(); $templateVar = new EmailTemplate(); $templateVar->setId(template_id); $mail->setTemplate($templateVar);
|
Use the following format to write your own email body.
$mail = new Mail(); $mail->setContent("your_html_content"); $mail->setMailFormat("html"); |
To specify plain text as the value for the setContent() method, you have to set text as the value for the setMailFormat() method.
Here is a sample code of send mail using email template for your reference.
<?php
use com\zoho\crm\api\sendmail\SendMailOperations; use com\zoho\crm\api\sendmail\Mail; use com\zoho\crm\api\emailtemplates\EmailTemplate; use com\zoho\crm\api\sendmail\BodyWrapper; use com\zoho\crm\api\sendmail\UserAddress; //use com\zoho\crm\api\inventorytemplates\InventoryTemplate;
require_once "vendor/autoload.php";
class SendMail { public static function initialize() { // add initialisation code // refer to the previous post for details and examples }
public static function sendMail1(string $recordId, string $moduleAPIName) { $sendMailOperations = new SendMailOperations(); $mail = new Mail(); $from = new UserAddress(); $from->setUserName("Patricia Boyle"); $mail->setFrom($from); $to = new UserAddress(); $to->setUserName("Carissa Kidman"); $mail->setTo([$to]); $mail->setSubject("Mail subject");
//use this for customized email body //$mail->setContent("Hello! Thank you for shopping with us!"); //$mail->setMailFormat("text");
//use this for inventory template //$template = new InventoryTemplate(); //$template->setId("55459741230768"); //$mail->setTemplate($template);
$template = new EmailTemplate(); $template->setId("55459741230058"); $mail->setTemplate($template); $mail->setConsentEmail(true); $wrapper = new BodyWrapper(); $wrapper->setData([$mail]); $response = $sendMailOperations->sendMail($recordId, $moduleAPIName, $wrapper); //Add your code to handle the response received in $response // For more details, see here. } }
SendMail::initialize(); $recordId = "5545974000002935001"; $moduleAPIName = "Contacts"; SendMail::sendMail1($recordId, $moduleAPIName); ?> |
We hope you found this post useful and engaging!
If you have any queries, feel free to drop them in the comments section below or reach out to us directly at
support@zohocrm.com. We eagerly await your thoughts and feedback on this!
Keep an eye out for future posts packed with similar content!
Cheers!
Additional Reading
Recent Topics
New Menu Layout Feedback
I'd really like to see the banking item back on the top of the menu. I'm sure part of it is just because that's what I'm accustomed to. However, for a bookkeeping program, I think there's a logic to having banking be on top. Not a giant issue, but something
How to use Rollup Summary in a Formula Field?
I created a Rollup Summary (Decimal) field in my module, and it shows values correctly. When I try to reference it in a Formula Field (e.g. ${Deals.Partners_Requested} - ${Deals.Partners_Paid}), I get the error that the field can’t be found. Is it possible
Form Accessibility
Hi, is there an update on the accessibility standard of Zoho forms? Are the forms WCAG 2.1 AA compliant?
Cannot schedule report delivery
The only 'send option' available when exporting reports is 'immediately' The option to schedule the report is missing.
adding attachment in sendmail script where attachment is in a CRM field
Hi all, I have a custom field of type 'File Upload' in one of my modules in my CRM. I want to include the file in that field as an attachment to an email - which is done from a button on the 'Results' module. I have created a script and a button to initiate an email from that module. The Deluge scripting window has allowed me to add arguments for all the fields I need to use except for the one file upload type field. My script currently looks like the below (content of the email omitted). As you
[Free Webinar] Learning Table Series - AI-Enhanced Insurance Claim Management in Zoho Creator
Hello Everyone! We’re excited to invite you to another edition of Learning Table Series, where we showcase how Zoho Creator empowers industries with innovative and automated solutions. Struggling with lengthy claim processes, a lack of visibility into
Not sure how to use credits to my account
Hi I have a $50 credit to my account. I'm just wondering how I can apply that to either a current invoice or to try a new service. Any advice would be great, thanks. Kind Regards Chris
Control who sees Timeline and Interactions in Zoho CRM through Profiles
The feature has been enabled for all DCs (except US, EU, and IN DCs). We will be rolling it out to the other DCs in the upcoming days. Dear All, In a CRM, not all users would require access to the history of a record. For instance, a Marketing Operations
Zoho Desk Integration - Add the option to send the estimate from the Zoho Desk Ticket Integration
Hi, Currently in the Zoho Desk integration, the user is able to create an estimate from a ticket, once the estimate is created the user can see the estimate under the ticket (see screenshot below), but is not able to send that estimate from Zoho Desk.
Utilisation de Zoho en conformité avec l’article 286 du Code général des impôts (CGI)
Cher(e) client(e), Conformément à l’article 286 du Code général des impôts (CGI) impose aux entreprises assujetties à la TVA d’utiliser des systèmes de caisse ou de gestion commerciale certifiés lorsqu’elles enregistrent des ventes à des particuliers.
CRM Validation Rules Support Only Single Condition
Simply put, CRM validation rules support only a single condition for each field on "All Records". You also cannot specify additional validation rules on the same field because it has already been used in an existing validation rule. The ONLY solution
Unapproved Leaves are hard to distinguish in Attendance View
This is a an unapproved leave request It appears in the Attendance view without any visual indicator if its approved or not For a whole day request this might be manageable but for hourly requests it gets very hard to know which are approved, which are
Performance Appraisal Probation Period
Hello All, Is there any possible way to create an appraisal cycle for new staff members, at the end of probation period? Many thanks!
Zoho Creatorの一括操作における処理の同期/非同期について
現在、Creatorのレポート機能を利用して、複数のレコードに対して一括で処理を実行しようとしていますが、処理の実行順序について確認したいことがあります。 レポート内の複数レコードに一括で処理を実行した際、処理は同期的に行われるのでしょうか?それとも非同期的に行われるのでしょうか? 【同期処理の場合】 レコード①に対する処理が開始され、終了後にレコード②に対する処理が開始され、最後にレコード③に対する処理が実行されるように、処理が順番に行われる場合。 【非同期処理の場合】 レコード①、レコード②、レコード③の処理が一斉に開始され、それぞれ並行して処理が行われ、全処理が終了する場合。
Mail Delivery Failed
Good morning, I have just set up an account with 5 users, however each time a message is sent to 1 user a m'mail delivery failed' message is generated. See below. Any ideas Thanks Rob This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: robb@thesmartgroup.ae mailbox is full: retry timeout exceeded ------ This is a copy of the message,
Delete commerce website
I need to delete a commerce website, but the only option is to click on settings, REQUEST DELETE, choose an urgency notice, add a message....AND THEN nothing, no way to send the request. Why is nothing simple!?!?! I just want to delete the store. The
Adding external users to Zoho Social under Zoho ONE licence - how to best achieve this
My client has a small business, and we are looking to implementing Zoho ONE with a single flexible user licence as that is all they really need and offers the best pricing for the range of modules we eventually wish to set them up with, one of which will
Has anyone built a custom AI support agent inside Zoho (SalesIQ/Zobot)?
Hi all, I’ve been experimenting with building my own AI support assistant and wanted to see if anyone here has tackled something similar within Zoho. Right now, I’ve set up a Retrieval-Augmented Generation (RAG) pipeline outside of Zoho using FAISS. It
This mobile number has been marked spam. Please contact support.
Problem Description: One of our sales agents in our organization is unable to sign in to Zoho Mail. When attempting to log in, the following message appears: This mobile number has been marked as spam. Please contact support at as@zohocorp.com @zohocorp
What’s New in Zoho Inventory | April 2025
Hello users, April has been a big month in Zoho Inventory! We’ve rolled out powerful new features to help you streamline production, optimise stock management, and tailor your workflows. While several updates bring helpful enhancements, three major additions
When Zoho Tables Beta will be open to EU data center
Hello all, We in EU are looking at you all using and testing and are getting jealous :) When we will be able to get into the beta also? We don't mind testing and playing with beta software. Thank you!
Pass current date to a field using Zoho Flow
I am trying to generate an invoice automatically once somebody submits a record in Zoho CRM. I get an error in the invoice date. I have entered {{zoho.currentdate}} in the Date field. When I test the flow, I get "Zoho Books says "Invalid value passed
API: Mark Sales Order as Open + Custom Status
Hi, it's possible to create Custom Status (sub-status actually) states for the Sales Order. So you have Open, Void. Then under Open you can have Open, and create one called Order Paid, Order Shipped, etc etc...which is grouped under Open. I can use the
Multi-Unit Inventory with Flexible Unit Selection (Purchase in One Unit, Sell in Another)
We need multi-unit inventory management in Zoho Books with the flexibility to choose units (e.g., Box or Piece) at the time of purchase or sale. For example, if 1 Box = 10 Pieces, we should be able to record purchases in Boxes but sell either in Boxes
Zoho Quartz Screen Recording
Hello, can we get access to Quartz, please, as a standalone solution? It would be great for creating training videos for current and future staff on how to use Zoho software according to our company requirements. Thank you
This domain is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details
This is the error i keep getting when trying to use my Zoho Domain Mail. This domain is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details Find attached. I hope this can be resolved very quickly so i can go on and make
Tip 26: How to hide the "Submit" button from a form
Hi everyone, Hope you're staying safe and working from home. We are, too. By now, we at Zoho are all very much accustomed to the new normal—working remotely. Today, we're back with yet another simple but interesting tip--how to hide the Submit button from your forms. In certain scenarios, you may want to hide the submit button from a form until all the fields are filled in. Use case In this tip, we'll show you how to hide the Submit button while the user is entering data into the form, and then
filter broke my data
I uploaded a file recently from Sheets and it has top 2 rows frozen, with table headers in second row and each one is filterable. somehow my first 2 columns became unfiltered and no matter what I do I cannot reapply the filter?? also didn't realize they
Email address for forwarding is not saving and there's no confirmation ema
Steps to reproduce: 1. Enter my forward email in the email forward section of the account 2. Click save 3. See a notification stating saved successfully 4. Refresh the page, no forward email is saved 5. No email confirmation received at the forwarding
How do I move Notes around within a Group?
It says here: " You can now sort notes by title (alphabetically), or by date modified and date created. You can even organize your notes by dragging and dropping them into a particular order. To sort your notes, simply go to Settings and tap “Sort By.” Please note: all sort settings will be saved and synced across devices, except for custom sorting. Custom sorting will be device specific."However, I am unable to 'custom sort' in either Notebook for Mac or on the Web. In addition, I can't find the
javax.mail.authenticationfailedexception 535 authentication failed
Hi, I am facing 535 authentication failed error when trying to send email from zoho desktop as well as in webmail. Can you suggest to fix this issue,. Regards, Rekha
Pocket from Mozilla is closing shop. Don’t lose your favorites . Move them to Zoho Mail Bookmarks now! 📥🔖
The end of Pocket shouldn't mean the end of your important links and content. Easily import them into Zoho Mail's Bookmarks and continue right where you left off. You can bring over your entire Saves, Collections, and tags just the way they are. Bookmarks
Zoho Sign: need to leave document pending for up to a year, or maybe there's a better way?
I have zoho one, maybe there's a better way to do this with another service than sending a zoho sign template from zoho crm. At the end of the day this requirement is due to regulations, no matter how dumb it may seem. I'm just looking for a way of getting
'Add Tax To Amount' not reflected in Invoice
Hi Zoho Support, I'm experiencing an issue with tax calculation display in my invoice template. Despite having "Add tax to amount" box checked in the template settings, the Amount column is not showing the tax-inclusive total for line items. Current behaviour:
To Do: shareable task links without login
Hi! I’m using Zoho Mail and ToDo in my daily work, and I’ve run into one limitation that’s a real blocker for me. Right now, to share tasks with managers or directors, they need to have a Zoho account and be added to a group. In practice, many of them
Separate Items & Services
Hi, please separate items and services into different categories. Thank you
Unable to edit or delete email address
I signed up for free Zoho today. I usually am pretty good at understanding and configuring things like this, but your interface baffles me, and your online help is cryptic to say the least. I have spent hours just trying to set up a couple of email accounts in Zoho before pointing my domain MX records to Zoho. I solved some other issues on my own, but I can't figure out this latest problem: I have created two email addresses in Zoho. Let's call the first one myname@mydomain.com and the second one
Mastering Zia Match Scores | Let's Talk Recruit
Feeling overwhelmed by hundreds of resumes for every job? You’re not alone! Welcome back to Let’s Talk Recruit, where we break down Zoho Recruit’s features and hiring best practices into simple, actionable insights for recruiters. Imagine having an assistant
We are unable to process your request now. Please try again after sometime or contact support@zohoaccounts.com
I cannot sign up and return the error of we are unable to process your request now. Please try again after sometime or contact support@zohoaccounts.com
Multi-currency - What's cooking ?
Hi, We have been doing this feature for sometime and we would like to give you some glimpses of it. Working with Multi Currency : Multicurrency support gives you the ability to handle business transactions in multiple currencies. You can define a base currency for your organization and add more currencies with exchange rates based on the base currency. Setup : From the setup page, you can manage all the currencies supported by your organization. Currencies page
Next Page