Skip to main content


Showing posts from June, 2015

Forecasting subscription revenue in Zoho CRM

Zoho CRM is only set up to handle once off deals out of the box. What should you do if you want to be able to forecast subscription revenue months/years into the future? If your customers renew every month, wouldn't it be nice to know how much you're likely to make in quarter three so you can see whether your pipeline is short or not? Here's a Deluge custom function that you can hook up with a workflow to automatically generate potentials for future months. It won't duplicate existing potentials so you can set it up to run once per month and make sure you always have the next 2 years worth of revenue forecast. Ideally you'd also have a function to change the status of future potentials when the master potential is modified. (E.g. if a customer cancels their subscription, the future potentials should also be nullified). Let me know if you'd like that function and I can build it for you:)

Overcoming Application Fatigue

How many apps do you have on your phone right now? I have 178. Of these, I have used 45 in the last month - that's 25.2% of the total. What's happening here? Clearly I thought these apps had some merit or I wouldn't have installed them in the first place. But at some point (or several points), I reached app overwhelm and abandoned all but the tried and tested ones. Not another app! To give you an example, I must have tried out over 20 project management systems. I started with Evernote, graduated to Zoho Projects when I had to involve other people, then moved to Podio, then moved to JIRA, then started using Trello as well plus a bunch of Google Spreadsheets. Eventually it all became too much and I returned to the killer app: paper.. As a software developer, I feel like a bit of a traitor to the cause. If I can't handle lots of apps, then how can anyone else? I occasionally come across lists of '99 MUST USE APPS!!!' and feel almost nauseous. I'm b

Add related Notes to a Zoho CRM Contact from custom script

This post is a response to a question on the Zoho CRM forums: Hi Is it possible to relate additional notes to a Contact from a custom deluge script ?  I guess it could be done by calling the external API postUrl() but I'm wondering if it can be done directly by something like zoho.crm.create() Thanks  It is indeed possible. Here's a code snippet: And the outcome:

Zoho CRM Custom Commands for a list view

This post is in response to a question on the forums : " Hi, Using Zoho CRM, I need to provide my users with some custom commands on the Contacts view list. These commands would invoke a custom deluge script." I've faced this issue in the past. My solution is as follows: 1. Create a checkbox field for the Contacts module called "Run custom function" 2. Create a workflow that checks for field updates to the "Run custom function" field 3. Trigger a custom function from that workflow that does whatever you want and also resets the checkbox to false so that the user can trigger it again. For an example of a custom function, check out my post on quickly generating call logs . In this way, a user can mass update the checkbox to run custom functions on all of the records.

searchRecords with multiple criteria in Zoho CRM API

NB: this blog post is no longer relevant as API v2 lets you use searchRecords with multiple criteria :) I discovered something really cool tucked away in the Zoho CRM forums today. For the history, check out this thread . In summary, the searchRecords API task in Zoho CRM is impossible to use if you have multiple criteria and in general it's pretty annoying to get the single criterion right. In the forum thread, Zoho Support advised that you can actually use getRecords with a view name. This feature is not documented on the getRecords page at all but I can confirm it works:D This is really, really cool. It's going to make my life as a Zoho dev much easier! Instead of having to do something really inefficient and ugly like: leadRecords = zoho.crm.searchRecords("Leads","(Created Time|<|" + yesterday_date +")",fromIndex,toIndex); for each ele in leadRecords { lead_source = ele.get("Lead Source"); createTime=(ele.g