Kloudless initially launched the unified CRM API with support for Salesforce and Microsoft Dynamics, enabling developers to connect apps with two large open SaaS CRM platforms. The initial release provided core features such as CRUD operations for all objects, near real-time activity monitoring, and making batch requests.

We often think of Salesforce, Microsoft, and SAP as the largest players in the space, but Gartner reports show that they only account for 35% of the CRM market share.

crmmarketsharegraph

We are excited to announce support for a number of other CRM services in our unified CRM API, including Oracle Sales Cloud, SugarCRM, Hubspot CRM, Zoho CRM, and Pipeliner CRM. Existing customers using the unified CRM API can now offer these integrations to their users with minimal additional effort.

Here is a current breakdown of feature availability of the CRM API across the CRM services we support:

Salesforce Dynamics Oracle Pipeliner Zoho SugarCRM Hubspot
OAuth
CRUD
Search
Events ✓*

✓: Supported ✓* : Partially supported ⏱: TBD

# Kloudless Query Language (KQL)

We are also excited to announce a common query language to access object data in any supported CRM service.

The initial release of our CRM API allowed for basic searches across unified object types such as Accounts, Contacts, Leads, Opportunities, etc. In addition, we provided search capabilities that utilized the native formats such as SOQL for Salesforce and OData for Dynamics. However, researching how to form requests for each service is a tedious and time-consuming process. Therefore, we decided to release a new query language to interface with different CRM services through a common format.

Developers can now structure queries in the Kloudless Query Language (docs) to retrieve information from a CRM service via the Search endpoint. Some example KQL queries are included below and compared with their equivalent queries in upstream services.

# Example 1: SugarCRM

/* KQL */
SELECT id, name, opportunity_type, probability, amount_usdollar,
  worst_case FROM Opportunities WHERE amount_usdollar >= 36000

/* SugarCRM equivalent */
https://<site_url>/rest/v10/Opportunities/filter?fields=id,name,
opportunity_type,probability,amount_usdollar,worst_case
  {
    "filter": [
      {"amount_usdollar": {"$gte": 36000}}
    ]
  }

# Example 2: SugarCRM

/* KQL */
SELECT id, name, website FROM Accounts WHERE name LIKE 'We%'
  LIMIT 100 OFFSET 100

/* SugarCRM equivalent */
http://<site_url>/rest/v10/Opportunities/filter?fields=id,name,
website&offset=100&max_num=100
  {
    "filter": [
      {"name": {"$starts": "We"}}
    ]
  }

# Example 3: Salesforce

/* KQL */
SELECT Id, Name, CreatedDate FROM Account WHERE Id IS NOT NULL
  AND CreatedDate > '2017-01-01T23:01:01+01:00'
  OR Name NOT LIKE '%b%'

/* SOQL equivalent */
SELECT Id, Name, CreatedDate FROM Account WHERE (
  ((Id != null) AND (CreatedDate > 2017-01-01T22:01:01Z))
  OR (NOT (Name LIKE '%b%')))

# Future Plans

In the upcoming months, we plan on introducing additional connectors to the Kloudless CRM API as well as further improving features available. The next release of the Kloudless Query Language introduces support for unified properties to enable cross-account queries. Let us know what other improvements you’d like to see in our forums or on Twitter!