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
Invalid field in the COQL query
Dear Zoho Support! I believe that you already helped me with a similar problem a few years ago. One of my clients has a custom field named "LOB" in the "Deals" Module (see the field's metadata below). The COQL query using this field: : "select id, Deal_Name,
Automating Employee Birthday Notifications in Zoho Cliq
Have you ever missed a birthday and felt like the office Grinch? Fear not, the Cliq Developer Platform has got your back! With Zoho Cliq's Schedulers, you can be the office party-cipant who never forgets a single cake, balloon, or awkward rendition of
Transferring domain registration to new registrar and switching email hosting at the same time?
I need to transfer an existing domain uv cure adhesive that's currently with SiteGround to Porkbun. I also need to move the existing custom email addresses from SiteGround to Zoho Mail. I'm not sure if I should transfer the domain first and then tackle
Split deposits
Can Zoho do split deposits. One deposit, two checks for two separate invoices from different customers. This is one of the most common tasks I can imaging. When I mark the two invoices paid, there are two deposits in bank register. When I try to match,
Deactivate Desk Contact without Deleting Contat
We have a client who has multiple tenants for regulatory purposes, and as such, has a few users that have email addresses in both tenants. They've then emailed into the ticketing system, so we have multiple contacts (no big deal, we want to keep their
Delete my store of Zoho commerce
Hi Team, I want to delete my stores of commerce. Please help me asap. Looking for the positive response soon. Thanks Shubham Chauhan Mob: +91-9761872650
Ability to add VAT to Retainer Invoices
Hello, I've had a telephone conversation a month ago with Dinesh on this topic and my request to allow for the addition of VAT on Retainer Invoices. It's currently not possible to add VAT to Retainer Invoices and it was mutually agreed that there is absolutely no reason why there shouldn't be, especially as TAX LAW makes VAT mandatory on each invoice in Europe! So basically, what i'm saying is that if you don't allow us to add VAT to Retainer Invoices, than the whole Retainer Invoices becomes
[Free Webinar] Learning Table Series - Zoho Creator for Asset Management with AI Enhancements
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. Each month highlights a specific sector, and this time our focus is
Menu Building is completely broken
I have been 3 hours, I have not been able to edit the menu. Either it is completely broken, very little intuitive or I do now know anything... There is no way to create a megamenu, no way to create a menu. Despite the fact I go to menu configurartion
Can you sell Subscriptions using Zoho Commerce?
In addition to physical products and the apparently coming soon 'Digital Products', it is possible to sell Subscriptions using Zoho Commerce?
Kaizen #197: Frequently Asked Questions on GraphQL APIs
🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
Multiple Languages for Product Names
Hi, I use 2 languages: spanish and english. I want to have for every product a name in spanish and a name on english. I want to have to possibility of choosing one of these languages when making an invoice or a purchase order. Is there any way to do
Item with name in different languate
Hello, is there a way to have an item with its name in different languages? For example: I sell an item in different markets and I'd like to have a Proposal and the Invoice with the Item Name in a specific language. Rino Bertolotto Zoho Specialist, STESA srl
Contacts with most tickets? Alarm for multiple tickets?
Is it possible to see through the analytics/reports which contacts are creating the most tickets (not the most discussed ones)? Also, is there a way to set up a notification if a contact creates multiple tickets within a certain time frame?
Issue with Template Subject Line Format in Zoho CRM
Hi Team, I’ve noticed that when I update the subject line of an email template in Zoho CRM, it sometimes appears in an incorrect format when used. Please see the attached screenshot for reference. Kindly look into this issue and fix this issue from backend
Two Data Labels in Bar Chart
I need to create a bar chart that has both the SUM and COUNT. I've concatenated them into a formula but it converts it into a stacked bar / scattered chart. The bar chart is no longer accessible. Since i'm comparing YOY, it would be best to have it in
Disable field on subform row
Hi, Is it currently possible to disable a row item on a subform? I was just trying to do something whereby until another value is entered the field is disable but for the deluge scripting interface threw up an error saying such a function is not supported on a subform. Thanks in advance for your help. Shaheed
Leads - Kanban view fit to screen
Hey guys, I created a custom layout for my leads, staged by lead status. I have 10 types of status. In Kanban view I see only 4 columns/stages and need to scroll to the right to see the rest. Is there a way to make columns/stages be displayed all together?
Request to Differentiate Auto-Closed WhatsApp Conversations in SalesIQ
Hi Zoho Support, I’d like to raise a request related to the way WhatsApp conversations are auto-closed in SalesIQ. Every Monday, our Sales team has to manually review each closed WhatsApp conversation from the weekend to identify which ones were automatically
Kanban View UI gets a revamp
Hello everyone, In the coming week you will notice design related enhancements in Kanban View. The UI has been changed and a new option is introduced under Kanban View Settings that allows to change the color of the category headers. Please, note that the functionality is not changed. These changes will not apply to the Activities and Visits modules. Here are the details of the changes: 1. The column widths have been fixed to 300 px. The records will have a box around them for clear distinction.
Can you stop Custom View Cadences from un-enrolling leads?
I'm testing Cadences for lead nurture. I have set un-enroll properties to trigger on email bounce/unsubscribe, and do NOT have a view criteria un-enroll trigger. However, help documents say that emails are automatically un-enrolled from a Cadence when
Issue with Anchor Link on Zoho Landing Page (Mobile/Tablet View)
Hi Team, I have created a landing page using Zoho Landing Page and added an anchor link to it. The anchor link is working fine on desktop view; however, it does not work properly on mobile or tablet view. I’ve tried debugging this issue in multiple ways,
Simplest way to convert XML to a map?
I've reviewed the help info and some great posts on the forum here by Stephen Rhyne (srhyne). At the moment I'm using XPath to generate a list of xml nodes, iterating through that to fetch the field name/value pairs and adding them to a map (one map for each record in the data). I then convert the row map to a string and add it to a list. Here's the function: list xml.getRecordListFromXML(string xml_data, string ele_name) { result = List(); // get list of record nodes rec_list = input.xml_data.toXML().executeXPath("//"
Introducing Creator Simplified: An exclusive learning series to enhance your app development skills
Hey Creators! Welcome to Zoho Creator's new learning series, Creator Simplified. In this series, we'll dive into real-world business use cases and explore how to translate your requirements into solutions in your Creator application. You can also expect
[Product update] Updated Data Synchronization Process for QuickBooks - Zoho Analytics Integration.
Dear QuickBooks integration users, We’re making an important update in the way data is currently synced in your QuickBooks integration within Analytics workspace. What’s changing: Previously, with every data synchronization, Zoho Analytics used to fetch
Zoho CRM new calander format cannot strikethrough completed task
Hi, Recently there is a new format for calendar within Zoho CRM However, found out that a completed task will not cross out or strikethrough like previous format. Without strikethrough, it will be difficult to identify which task is still in Open status.
How to edit form layout for extension
I am working on extension development. I have created all the fields. I want to rearrange the layout in Sigma platform. But there is no layout module in Sigma. How can I achieve this for extensions other than Zet CLI and putting the fields into widget
Employees not Users
Hello, We are a construction company that has +180 employees and most of them are in remote location working onsite with no access to internet. Is it possible that we have data stored for all employees but have only 5-10 users who will be in charge of entering employees data? or do we have to pay for all +180 employees? even though they won't be using the system?
Zoho people generatimg pdf
Hello , now i want to make a customm button in zoho people that is inside a deduction module , that fetches all the records and generate a pdf with a template that i have done in the mail merges template , i was told that i have to upload template on
Ability to Filter Alias Mailboxes in Zoho Recruit
Dear Zoho Recruit Team, I hope you are doing well. We would like to request a feature enhancement regarding the handling of alias mailboxes in Zoho Recruit. Currently, when we connect an alias mailbox (e.g., jobs@domain.com) from our Zoho One account
zohorecruit.com career form postcode bug
Dear, When I select a postcode from the drop down on a zohorecruit.com career form, the street text field is automatically filled with the name of the city, which should not happen. Any idea how I can fix this? Thanks, Bart
Office-365-agenda and Microsoft Teams Integration
Dear, I have a trial version of Zoho Recruit and trying to evaluate the Microsoft Teams Integration in Zoho Recruit. After registering with my Office 365 account and checking the result of the registration/sign-in at https://mysignins.microsoft.com/ (which
Delegate Access - Mobile iOS/iPad
We’re over the moon that delegate access is now available in Zoho Mail as we were nearly ready to switch platforms because of it! Is there a timeline on when delegate mailboxes will be accessible from the iOS and iPad OS applications? Thanks, Jake
How to add Connector in developer platform zoho?
Hi, I am working on creating an Extension, and part of the development is to retrieve Email templates. In my CRM instance I can invokeURL by creating Zoho OAuth connection and get the template. But developer platform does not provide Zoho OAuth or any
How to archive Lost/Junk Leads so sales reps don’t see them, but keep them for reporting?
Hi everyone, In our Zoho CRM we have two Lead Status values: Lost Lead and Junk Lead. What I want to achieve is: When a lead is marked as Lost or Junk, it should disappear from my sales reps’ Lead views (so they only see active leads). At the same time,
Zoho CRM Canvas Copy Original Layout
Hello all, I want to use Canvas to make small changes to certain views, not to make huge changes. Is it possible to copy the original Zoho layout and set-up and start from there? I checked and all I can find are some templates which are far from the original
Revenue Management: #5 Revenue Recognition in SaaS
If you're building or running a SaaS business, you've probably encountered this. You get paid upfront for a subscription and a one-time onboarding fee, but you end up with confusion about when to consider it revenue. Can I book all of it now? Should I
MS Teams for daily call operations
Hello all, Our most anticipated and crucial update is finally here! Organizations using Microsoft Teams phone system can now integrate it effectively with Zoho CRM for tasks like dialling numbers and logging calls. We are enhancing our MS Teams functionality
Zoho Learn Course Access Issue
One of the learners in a specific course can't see any lessons. They are registered as both a user and learner for this course in Zoo Learn. What could be the reason?
ZOHOLICS Japan 2025 開催のお知らせ(再投稿)
【コミュニティユーザーの皆さまへお知らせ】 Zoho 最大のユーザーイベント「ZOHOLICS Japan 2025」を9月19日(金)に開催します。 AI活用に関する特別講演、ユーザー事例、Zoho 製品の活用例のご紹介など、Zoholicsならではのセッションをご用意しています。 Zoho コミュニティ開催のMeetupとはまた違った雰囲気のイベントです。 ご都合のつく方はお気軽にご参加ください✨ 詳細はこちら https://events.zoho.jp/zoholics2025#/?affl=forumpost2
Next Page