Skip to content

Getting Zoho CRM and Gmail to play nicely

Why Zoho and Gmail?

A full exploration of how to select CRM for your own business is beyond the scope of this post, but there are some features I absolutely require when considering a CRM platform:

  • Support for custom fields in leads, contacts, accounts etc.
  • Ability to sort views by and query on above-mentioned fields.
  • Good e-mail integration – I’m going to forget to BCC some weird e-mail address every time I correspond with a customer.
  • Lastly, it’s got to work with Gmail.

So if you’re like me and you decided to go with Zoho CRM and also run Gmail, you definitely want to integrate the two so you have a 360-view of your customer interactions. The trouble is, Zoho (CRM specifically, but most of the suite I imagine) is pretty immense, crammed full of powerful features a couple of clicks deep. This is documented by the Zoho team, but I confess I struggled to piece it all together. After some helpful interactions with their support, I got it working. Beautifully. Here’s how.

Adding Zoho Mail to your account

First, we need to add Zoho Mail to your Zoho account. Pricing is detailed here, but it’s less than $5 / month additional no matter which CRM plan you’re currently on.

Click on Setup to configure Add-Ons.

Zoho Setup link

Under “Apps & Add-Ons”, click Zoho Apps. Right here, my intuition would have gone with “Google Apps”, since Gmail is, well, a Google App.

Configure Add Ons

and then…

Next you will need to add this to your subscription and configure it for this user. It’s pretty straightforward, but reference the screenshots below for the process I followed:

You will need to supply your billing details now and I’ve omitted a couple of the screenshots you will likely see. Thereafter, you need to go and activate the Add On for the current user.

Enable Zoho Mail for your user

Navigate back to the Zoho Mail add on as you did previously, this time noticing that the Buy Now button has been replaced with an Activate Now button.

Click this and configure for the user:

At last, we’ve got the Zoho Mail Add On configured for our user. At this time, Zoho has created a new mailbox for you, something like <username> I left this intact, but I won’t be using it. Now we need to actually connect it to our Gmail account. This would work equally well with any other mail provider supporting the POP protocol.

Connect to Zoho Mail to Gmail

Kick off the process by once again navigating to the Zoho Mail Add On and clicking Add Mailbox. Zoho documents this pretty well (see this post) so I won’t go into too much detail here, but I’ve included a few screenshots of the flow:

Lastly, be sure to select the Gmail account as your default and select your mail visibility preferences. This will vary from company to company, but I’m not going to be exchanging mails with external parties I don’t want other CRM users to see and I definitely don’t want to have to manually share each lead/contact/account’s e-mail history:

So far, this is pretty much the regular process for configuring your Gmail account with Zoho CRM and is documented. Now that it’s complete, Zoho Mail will start pulling mail from your Gmail account via POP. This could take a while if your mailbox is large and where a little bit of tuning can get this process from literally days right down.

Getting things moving

Select the EMails tab and then click Settings:

Select the Mail Accounts entry in the Settings list:

Adjust three things:

  1. Frequency of mail collection (change to the minimum interval of 3 min)
  2. Quantity of mails fetched in each sync (set to maximum of 200)
  3. Opt to remove messages from server (NOTE: this doesn’t affect your Gmail folders – it’s simply the POP3 queue for your mail)

(1) and (2) are easy, just adjust the settings displayed at the bottom of the Settings screen (this applies to all your Zoho Mail accounts):

For (3), click the Edit icon to the right of the Gmail mail account and adjust the settings to delete messages from the POP queue.

As I mentioned above, this gave me no hassles with Gmail because the POP queue is a virtual queue – it’s not going to affect mails in your inbox. Other mail providers may handle this differently however.

Now, click on EMails and leave the mail tab open a while until the amount of unread messages stops climbing and your inbox looks in-sync with what you see in Gmail. The sync will continue even if you close the app, albeit slowly I’m told.

Finishing up

That’s it! You’re all done. One last thing to highlight is toggling which mails to display alongside each record (Lead, Contact etc). You can display the mails sent from CRM (for example any Autoresponders you have configured) or your “own” mails, in this case, from Gmail:


Configuring Zoho CRM and Gmail results in a great outcome and the best of both worlds. I get to use Gmail as my mail environment, but still get to see all these interactions alongside the CRM record. Best of all, I didn’t have to clumsily BCC some secret mailbox, install some plugin into my mail app/environment (so this works from my mobile device too!) or in any other way adjust my normal mail workflow.

Good work Zoho Team!


BlackBerry news & announcements from Alliance Summit

I’m attending BlackBerry World and today is the Alliance Summit for RIM Alliance Partners. Here are some notes around interesting news, announcements and updates from RIM.

Enterprise Mobility

  • RIM has acquired  mobile device management company Ubitexx to extend what BES can do.
  • New BlackBerry Balance feature to avoid compromising device security in consumer & social app scenarios.
  • Store within a store for enterprises.

Some (fairly developer-specific) highlights from BlackBerry World’s Alliance Summit:

  • Native C++ SDK for PlayBook available mid-year
  • BlackBerry App World on every device
  • Devices will also include BlackBerry ID set up for payment, carrier billing and federated identity (with carriers); including support for prepaid airtime etc.
  • Android Player – run Android apps on the PlayBook. Apps still submitted to AppWorld – there won’t be integration with Google Marketplace. No support for NDK/C++ integration. Demo (apparently the first outside RIM) included the IMDB app – performance looked good.
  • Webtrend-powered app analytics

BlackBerry 7 Smartphone OS

  • New Liquid Graphics UI
  • Digital Compass & NFC
  • HD Playback and recording

BBM Social Platform

  • 43+ mm active users
  • 2+ mm users a month
  • 100+ bn messages a month
  • Can be embedded directly within in app

BlackBerry App World 3.0

  • Support for subscription billing – PayPal, Credit Card and Carrier billing
  • Country level pricing
  • Simple API for developers in Java, Adobe AIR and WebWorks apps

Merging selected files from another branch into master

Wow, this should really be easier to find…but it took a while to find a quick way of doing this with git…

if you have two branches:


You can pull in changes from “other-branch” app/model/customer.rb with:

git checkout other-branch app/models/customer.rb

Then you can do a git commit as per normal.

Based on this article.

AngelList / Humour

Glad to see the guys at AngelList have a sense of humour:

Supplying your company name

It’s a welcome relief from all the boring, dry signup pages we all have to endure!

Read config settings from environment.rb

Perhaps there is a much easier way to do this, but I couldn’t find it.

I simply wanted to retrieve the values defined in the following actionmailer config block (why is another story :)):

config.action_mailer.smtp_settings = {
:address => "REDACTED",
:port => '25',
:domain => "",
:authentication => :plain,
:user_name => "REDACTED",
:password => "REDACTED"

It’s actually as simple as:

So for the :address it would be:


I didn’t find much in the way of docs about how Rails config actually propagates into the various subsystems, but clearly there is a larger reusable pattern here. I guess people tend to store custom-defined settings in YAML files, as in Ryan Bates’ Railscast?

Displaying ActiveResource errors

Being a Rails newbie, I was pleased to learn that errors returned from an ActiveResource object can be displayed in exactly the same way as for an ActiveResource object, e.g:

<%= error_messages_for 'account' %>

Even better is to do something like the following:

<%= error_messages_for 'account',
:header_message => "We couldn't update your billing information.",
:message => "The following fields were problematic:",
:header_tag => :h2 %>

which removes that terse “X errors prohibited this Y from being saved” and formats things a bit more nicely.