Tag Archive | CRM

InGenius Software Announces InGenius Connector Enterprise for Salesforce.com Open CTI

September 18, 2012 at Dreamforce, InGenius Software announced their new Enterprise CTI solution, InGenius Connector Enterprise for Salesforce. InGenius Connector Enterprise for Salesforce is the first click-to-dial software solution for Salesforce.com built using the new Salesforce.com Open CTI interface. With no desktop install, InGenius Connector Enterprise for Salesforce, streamlines call dialing and inbound/outbound logging activities for an entire organization. InGenius Connector Enterprise for Salesforce, will be available directly from InGenius Software at http://www.InGenius.com or by calling 613-591-9002 x3000.

InGenius Connector for Salesforce is fully integrated with Salesforce.com to enable several features including incoming call screen pop, click-to-dial, and automatic call logging all from within the Salesforce.com user interface. Additionally, InGenius Connector Enterprise provides automatic field population and configurable templates for fast, accurate logging of all calls against Salesforce.com records. Since InGenius Connector Enterprise for Salesforce utilizes the new Salesforce Open CTI, it requires no desktop install and can be used on both PC (Windows) and Mac (OS X) and accessed from any browser (Chrome, Mozilla Firefox, Internet Explorer).

InGenius Connector for Salesforce, is installed on premises at a customer site and connects directly with the customer’s resident telephony system. InGenius Connector Enterprise interoperates directly with the telephony system and does not require any additional hardware or software products to be purchased or installed. Initially being released for Cisco’s Call Manager, InGenius Connector Enterprise for Salesforce works with several telephony platforms including Cisco Unified Contact Center Enterprise (UCCE), Cisco Unified Contact Center Express (UCCX) and Avaya.

Rich Loen, InGenius Software’s CTO says, “InGenius Connector Enterprise makes it very easy for an organization to add click-to-dial and logging functionality for all its Salesforce.com users. The server based install is very quick and eliminates the time and effort associated with visiting every desktop during deployment. This makes enterprise wide roll-out for different platforms very efficient.”

Check out the press release here: http://www.prweb.com/releases/2012/9/prweb9901527.htm


InGenius Connector version 3.2: New Release Announcement

I mentioned in a previous post that we’d released a new version of InGenius Connector for Salesforce on Cisco platforms.  In the meantime, we’ve also released InGenius Connector for Microsoft Dyanmics CRM on Cisco platforms, and now our newest version is available across all of our phone platforms and CRMs.

Among other things, our new version of InGenius Connector includes:

We think you’ll love the new features.  Take a look and test it out with a free trial!


Nice overview of all of Microsoft Dynamic’s 4.0, and 2011 Update Rollup releases

If you use Microsoft Dynamics, you’ll understand that it can be complicated to know if you are running the latest version, and when to update. Additionally, Microsoft released a broken update Jan 12, 2012, which forced some users to have to completely re-install.

Microsoft released a blog entry recently, in order to clear all this up:

Microsoft Dynamics CRM 4.0 and 2011 Update Rollup Release Dates, Build Numbers, and Collateral

Automatic creation of Salesforce.com leads from product registrations

Our company recently started using Salesforce.com as its CRM system. We’ve all been astonished at the change it has made to almost every facet of our business. We’re on top of leads, interacting with customers, and tracking every call now using our integration between InGenius Connector and Salesforce.com.

But, we wanted to do more – we wanted to set up a system where we could call customers who have downloaded our software, and help them with the installation and configuration of the application. As with most telephony applications, it can be complicated to set up because of the many different types of phone systems out there.

So, we came up with a plan:

  1. User obtains a trial key from any of our download pages,
  2. The registration system sends an email to the user, with their trial key,
  3. The registration system also sends an email to a special email address at Salesforce.com, containing the registration info,
  4. Some custom Apex code at Salesforce.com parses the email, and creates a lead, and a task showing what the user downloaded.


So, here’s what we did, in more detail:

1) Create Email

We modified our registration system to send an email when a trial key is requested. The email looks like this:

Subject: [Trial Key]
 Company:Bob's Baker
 Platform_OS: Windows

2) Create Apex Class

We created an Apex Class to handle the incoming mail. The class parses the incoming email, then does the following:

  1. Checks to see if there’s a contact with this email address,
  2. Checks to see if there’s a lead with this email address,
  3. If not found, then create a lead with the user’s info,
  4. Create a task with the details of the product the user has downloaded. Creating a task is convenient because we can automatically handle the case where a user trials more than one product – they just get created as tasks on a lead/contact.

The Apex code looks like this:

Note that the variables ending in __c are custom variables in our Salesforce.com installation.

global class InGenius_Integration_Registration_Email implements Messaging.InboundEmailHandler {
 global Messaging.InboundEmailResult handleInboundEmail(
   Messaging.InboundEmail email,
   Messaging.InboundEnvelope envelope) {
    Messaging.InboundEmailResult result = new Messaging.InboundEmailresult();
    String EmailPlainText= '';
    string EmailSource;
    string EmailCampaign;
    string EmailFirstName;
    string EmailLastName;
    string EmailEmail;
    string EmailPhone;
    string EmailCompany;
    string EmailCountry;
    string EmailIndustry;
    string EmailDealer;
    string EmailProduct;
    string EmailCoupon;
    string EmailPlatform_OS;
    string EmailPlatform_CRM;
    string EmailPlatform_TELEPHONY;
    Boolean found = false;
    ID ContactId;
    Lead insertedLead;
    System.debug('Email Received from: ' + envelope.fromAddress + ' (' + email.subject + ')' );
    // Ignore emails with the incorrect subject
    if( email.subject != '[TRIAL KEY]' ) {
        System.debug('Email rejected: Wrong Subject(' + email.subject + ')' );
        return result;
    try {
        EmailPlainText = email.plainTextBody;
        String[] emailbody=email.plainTextBody.split('\n',0);
        // THIS IS NOT a terrific way to parse the email, but it works...
        // If the email format changes, by even ONE character, this will fail.
        EmailSource =             emailbody[0].substring(7);
        EmailCampaign =           emailbody[1].substring(9);
        EmailFirstName =          emailbody[2].substring(10);
        EmailLastName =           emailbody[3].substring(9);
        EmailEmail =              emailbody[4].substring(6);
        EmailPhone =              emailbody[5].substring(6);
        EmailCompany =            emailbody[6].substring(8);
        EmailCountry =            emailbody[7].substring(8);
        EmailIndustry =           emailbody[8].substring(9);
        EmailDealer =             emailbody[9].substring(7);
        EmailProduct =            emailbody[10].substring(8);
        EmailCoupon =             emailbody[11].substring(7);
        EmailPlatform_OS =        emailbody[12].substring(12);
        EmailPlatform_CRM =       emailbody[13].substring(13);
        EmailPlatform_TELEPHONY = emailbody[14].substring(19);
        if( EmailDealer=='YES' )
            EmailDealer='End User';
    catch( exception e4 ) {
        System.Debug('ProcessTrial Failure: Could Not parse email');
        return result;
    // Try to lookup any contacts based on the email from address
    // If there is more than 1 contact with the same email address,
    // we just use the first match
    try {
        // Does a contact exist with this email?
        List<Contact> contactList = [Select Id, Name, Email From Contact Where Email = :EmailEmail Limit 1];
        if( !contactList.IsEmpty()) {
            ContactId = contactList[0].Id;
            System.Debug('Found Existing Contact:' + contactList[0].Name);
            found = true;
        else {
            // Does a Lead exist with this email?
            List<Lead> leadList = [Select Id, Name, Email From Lead Where Email = :EmailEmail Limit 1];
            if( !leadList.IsEmpty()) {
                ContactId = leadList[0].Id;
                System.Debug('Found Existing Lead:' + leadList[0].Name);
                found = true;
            else {
                // Create a Lead with this email
                Lead leadToInsert = new lead(
                    Status='Working - Key Issued',
                    Product__c = EmailProduct,
                    TrialKey__c = EmailCoupon,
                ContactId = leadToInsert.Id;
                System.Debug('Created Lead' + EmailFirstName + ' ' + EmailLastName + ' ' + EmailCompany + ' ' + ContactId);
                found = true;
    catch (exception e2) {
        System.Debug('ProcessTrial Failure: Could Not Create Lead:' +  EmailFirstName + ' ' + EmailLastName + ' ' + e2);
    if( found ) {
        try {
            // New Task object to be created
            Task[] newTask = new Task[0];
            // Add a new Task to the contact record we just found or created above.
            newTask.add(new Task(
                Description =  EmailPlainText,
                Priority = 'Normal',
                Status = 'Key Issued',
                Subject = EmailProduct,
                Product__c = EmailProduct,
                RegistrationCoupon__c = EmailCoupon,
                //IsReminderSet = true, // optional, set a reminder
                //ReminderDateTime = System.now()+2, // Set reminder for 2 days in the future.
                WhoId =  ContactID));
            insert newTask;
            System.debug('New Task: ' + newTask );
        catch (exception e3) {
            System.debug('ProcessTrial Failure: Create New Task Failed: ' + e3 );
    else {
        System.Debug('ProcessTrial Failure: Could Not Create Lead:' +  EmailFirstName + ' ' + EmailLastName);
        return result;
    result.success = true;
    return result;

3) Configure Email Service

Once the Apex class is created, then you need to go to Develop -> Email Services and add a new Email Service to handle the incoming mail. This is where you’ll get the unique email address. Note also, that you may have to adjust the permissions, and adjust settings for which emails you accept mail from. By default this is quite locked down by Salesforce.com.

4) Last Step:

We hired Katy! Katy looks after calling customers when they’ve downloaded a trial version of our software, and make sure that the install goes smoothly. Thanks Katy!

Further Notes:

  • We are planning to add additional code to update the contact once a user purchases our software.
  • We are planning to improve the email parsing.
  • We had quite a few issues getting the debugging to work reliably at Salesforce.com. It is not clear how to enable debugging, and how to extract debug logs.

Happy 2012!


It’s been a few months since we’ve updated the InGenius blog. That’s because we’ve been busy developing and perfecting some really great, easy to use telephony-CRM integrations.

What are telephony-CRM integrations you say? So glad you asked!  It’s a way to make hard and soft phones connect to  contact managers, (like Microsoft Outlook), and CRMs, (like Sugar and Salesforce).  Your contact managers and CRMs are programs and software pieces you already know and use everyday.  We just want to make it easier to put all these pieces together, saving you time and keeping you from losing track of important calls.

Our InGenius integrations are really smart applications.  Over the next few posts, I’m going to show you the smartest ways to use these smart applications.  If there is anything in particular you’d like to see, let me know.

What a great way to start 2012!

Connect it ALL with InGenius Connector CRM Integrations

As a company, InGenius has been in the software business since 1986 and in the past twelve years has focused its efforts specifically on computer-telephony integrations. In the past four years we have amped up our integration focus to really focus in on providing telephony applications that support multiple platforms and resonate with customer’s needs. Our newest product, InGenius Connector for Salesforce, is providing our distributors with a way to provide their customers with an application that integrates with their offering and their clients environments. InGenius Connector for Salesforce is the first of many CRM integrations we plan to release and we’ve already helped several companies integrate with their custom CRM systems!

In a white paper, Lori Bocklund, President, Strategic Contact Inc. remarks on the issues with contact centers in implementing new technology; “Problems we see include not looking at systems in place to start out with and potentially leveraging something that already exists, over-buying (licenses, functionality, capacity, etc.), not allocating the resources to use it effectively, never getting to the “Phase 2” functionality, not making process changes to get the most out of technology, and failing to help the users see the benefits and make changes.”

With InGenius Connector for CRM systems we solve these problems by providing:

  • Multi-platform support on both the CRM side and the VoIP or SIP service provider side to help businesses leverage what they already have in place
  • Per seat purchase options to avoid over-buying
  • Simple deployment options that include mass deployment or easy end user download so massive resources for deployment are not necessary
  • An abundance of support materials including videos, documentation, presentation and webinars to inform users how to get the most out of the application
  • Seamless integrations with the CRM application users are familiar with so benefits can be seen right away and changes required to use the software are intuitive (For example, click on a phone number to call)

With growing competition and increased consumer knowledge, businesses are investing in CRM software to better develop and nurture their customer relationships to improve their current and future bottom line. What businesses are missing however is that when introducing new software or technologies they are adding an additional tool on top of an already busy customer service representative or salesforce. This is where InGenius Connector for CRM systems comes into play. We take all these tools and merge them into a single access point so that customer service representatives need only access with one interface, CRM providers extend their functionality beyond their application, and VoIP providers integrate with business processes. InGenius Connector for CRM truly connects it all!

Connect your phone with your CRM!

Over the past few weeks InGenius has attended several trade shows and we were blown away by the demand for our CRM integrations for InGenius Connector.  Specifically we have been showing our InGenius Connector for Salesforce application that allows for Salesforce.com users to make and recieve calls directly from Salesforce.

CRM users are thrilled with the application because it allows them to easily track their calls, add notes to a call, have contact records pop-up on an incoming call, and click-to-call from a contact page. What is comes down to is that InGenius Connector for Salesforce helps businesses and small contact centers improve their efficiency, provide better customer service and have more accurate call reports; all of which translates into huge cost savings and potentially greater sales. According to the blog post by John Reed, if businesses can not provide quick, quality service to their customers, the business is doomed to fail. With InGenius Connector for Salesforce, InGenius helps businesses provide exceptional customer service by tying their telephone to their CRM application. Users will never have to put a call on hold to find the contact’s information because it will automatically pop-up, managers can easily keep track of phone call records, and to reach a customer it’s as simple as clicking on their phone number. As Reed puts it “Good CRM means never having to say hold!” and with InGenius Connector for Salesforce you won’t have to!!!

If you would like more information on InGenius Connector and CRM integrations contact us at sales@ingenius.com and we would be more than happy to answer your questions.