• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Web Analytics Hub

Analytics for Growing Companies

  • Home
  • Blog
  • Portfolio
  • Case Studies
  • Freelancing in Data World
  • About Us
  • Contact

The Ultimate Guide To Domo Custom Connectors

September 13, 2018 By Pravin Singh Leave a Comment

You are a heavy user/customer of Domo.

You could also be one of Domo partners and official resellers that have multiple clients on your platform.

You have connected to many data sources using the existing connectors.

You have new datasets coming in from your organization or from your client’s systems.

You want to connect to a data source for which the built-in connector is not yet available in DOMO’s marketplace.

You want to fetch your data in the different format than what is provided by existing connectors.

You are planning to use DOMO’s platform and looking for resources to handle the technicality of bringing data from your data source to DOMO.

You ultimately want to build a Domo custom connector to save your time and money.

If these are the problems you face, you have come to the right place.

 

 

Table of Contents

  • Connecting Your data to DOMO
  • What is a Domo Custom Connector & Why to Build it?
  • Examples of Custom connectors built
  • Steps to create Domo Custom Connectors
  • Domo Custom Connectors: Technical Overview
    • Uploading Connector Images:
    • 2. Configure User Authentication:
    • 3. Configuring Selectable Reports:
    • 4. Data Processing

Connecting Your data to DOMO

If you want to read my opinions about Domo, I’ve laid them out in detail from an analyst and an end user (client) perspective both while comparing it with other best dashboard softwares

With over 500+ ready connectors and expanding, this software has almost an exhaustive list of ready connectors to use.

Domo’s proprietary platform provides quick and easy connections to your on-premise databases, cloud applications, spreadsheets, files, and more. You can connect to a variety of sources using Domo’s Workbench, CSV upload, OLAP & ODBC Connectors, and Domo’s published APIs.

Domo Custom Connectors

 

 

What is a Domo Custom Connector & Why to Build it?

If DOMO’s marketplace doesn’t have in-built connector for a platform where your data resides or you don’t want to use DOMO’s marketplace and want to build your own connector for a particular platform, you can create your own connector to dynamically bring your data with the use of API’s into Domo using DOMO’s IDE.

There are hundreds if not thousands of software or custom software’s with your relevant data that you or your clients can be used but are not yet able to add it inside Domo due to the lack of a connector.

After completing the Domo custom connector, it will send data to Domo databases at any set time interval and will be fully automated henceforth, which is the biggest advantage and time save here.

This is how a custom connector can be built to help bridge the gap & we can help with our technical team in getting it done. You can get in touch here to discuss more.

 

Examples of Custom connectors built

We have built a number of custom connectors for our clients, most of them from a data source for which DOMO doesn’t provide connectors and some of them rebuilt in order to suit client’s need.

You can see the names and APIs of some of the major platforms for which we have built custom connectors below:

  1. Voluum
  2. Shipstation
  3. Skuvault
  4. Clickbank
  5. Recharge
  6. Teamwork

We are in process of building more connectors for our clients as per requirements all the time and have a technical team who is proficient in the same.

You can either hire us to get it done at extremely competitive rates for lifetime automated connector built for you or build it yourself. We have shared some basic technical details below that we used in building the connectors also.

 

Steps to create Domo Custom Connectors

The high-level process of building a custom connector is as follows:

  1. Understanding your connector’s API and Domo API
  2. Building the technical aspects of the Connector (Read more on technical overview)
  3. Test the connector using console data
  4. Publish the connector for approval by Domo Connector team
  5. Once approved, find it in your connectors list and use the data
  6. If not approved, keep correcting the issues and publish again until approved

The approval process after publishing the connector takes around 1-2 weeks depending on the complexity of the same and the Domo connector team’s responses. You can keep communicating with them to expedite the process. It does help if you are a Domo partner, as they will give you the priority.

If you want to build your own custom connector, you can follow the in-depth documentation given by Domo itself and some of our tips below.

It’s a different procedure for each API as it will be unique based on its documentation and compatibility with Domo’s API.

Note: Technical details below, you can stop reading if you are not interested in deep tech details here.

 

Domo Custom Connectors: Technical Overview

After logging into DOMO, navigate here

The link will take to the DOMO’s IDE page where you can start building your own custom connectors.

 

Domo Custom Connectors

 

Click on “Create New Connector” tab to begin developing your new connector.

 

Domo Custom Connectors

 

Important to note: while the IDE runs your code client side in your chosen browser, your deployed code will run in the Nashorn engine found in Java 8. Specifically, please use ES5, as ES6 is not supported in the IDE. See the ECMAScript Language Specification for details.

For example, Xmlhttprequest is not supported you will need to use httprequest in its place. Sample call:

httprequest.get(‘https://samplecrm.domo.com/samplecrm‘);

There are four main important parts to this:

  1. Uploading Connector Images
  2. Configure User Authentication
  3. Configure Selectable reports
  4. Define how data is processed

They are described in detail below for your reference if you want to build the connector yourself.

 

  1. Uploading Connector Images:

It is important to identify your connector by providing images. The specifications for the four different icons are detailed above the sample images in the Studio.

Domo Custom Connectors

 

If you want to get started now, the four images you need for a connector are:

  • Icon with background (512 x 512 pixels)
  • Icon, no background (512 x 512 pixels)
  • Logo with background (512 x 512 pixels)
  • Logo banner, no background (1024 x 512 pixels)

Note: Icons are required in order to publish your connector.

2. Configure User Authentication:

The connector builder provides four different Authentication Method:

  1. None when the API does not require any authentication. Even when the connection does not require you to authenticate, the IDE still requires that you put auth.authenticationSuccess() in the authentication block of the IDE.
  2. Username with password is most commonly used with Basic Authentication.  When authenticating with Basic Authentication the user passes an Authorization header with a Base64Encoded <username>:<password>. Example:

“ httprequest.addHeader(‘Authorization’, ‘Basic ‘ + DOMO.b64EncodeUnicode(metadata.account.username + ‘:’ + metadata.account.password)); ”

c. API Key is generally a non-expiring key or token passed in as a header or a query parameter. Example:

httprequest.addHeader(‘API-KEY’, metadata.account.apikey); or
httprequest.get(‘https://samplecrm.domo.com/samplecrm?apikey=’ + apikey);

 

d. OAuth2 uses a client-side and server flow to generate token to authenticate to an API. For detailed information on OAuth2.

Domo Custom Connectors

 

Consult the API documentation for the API you are using to determine the best way to configure this.

  • The redirect URI for the connector IDE is https://api.domo.com/builder/oauth.html
  • The CallBack URL response body needs to be JSON
  • The AccessToken key needs to be access_token.

At the end of the code blocks you to set auth.authenticationSuccess(); or auth.authenticationFailed(‘Your username and password are incorrect’);

 

3. Configuring Selectable Reports:

Connectors are comprised of a series of reports, which define groups of data that a user will select when using this connector in Domo. You will need to define the reports for your connector in this step

Domo Custom Connectors

 

You can add custom parameters to your reports by enabling advanced mode.

 

Domo Custom Connectors

 

Click on the “Add Parameter” button, and then enter a name and description for the new parameter. The help text description will be very helpful in helping a foreign user identify what exactly this report is providing them. Custom parameters are used in the “Define how data is processed” section.

 

Domo Custom Connectors

In order to access the value of a given parameter, you can use the following syntax:

metadata.parameters[“Parameter Name”]

To understand different parameters type, Please refer https://developer.domo.com/docs/custom-connectors/advanced-mode.

4. Data Processing

Data Processing script example.

——————————————–

DOMO.log(‘metadata.report: ‘ + metadata.report); //Opportunities

if(metadata.report == ‘Opportunities’){
httprequest.addHeader(‘Authorization’, ‘Basic ‘ + DOMO.b64EncodeUnicode(metadata.account.username + ‘:’ + metadata.account.password));

//example of how to access “Pull data from the last x day(s)” value:

//var res = httprequest.get(‘https://samplecrm.domo.com/samplecrm?days=’ + metadata.days);
var res = httprequest.get(‘https://samplecrm.domo.com/samplecrm’);
DOMO.log(‘res: ‘ + res);
var lines = res.split(‘r’);
var header = lines[0].split(‘,’);

//There are three data types: datagrid.DATA_TYPE_STRING, datagrid.DATA_TYPE_DOUBLE and datagrid.DATA_TYPE_DATETIME

// date format needs to be yyyy-MM-dd’T’HH:mm:ss

datagrid.addColumn(‘Account.Id’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Account.Industry’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Account.Name’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Amount’, datagrid.DATA_TYPE_DOUBLE);
datagrid.addColumn(‘CloseDate’, datagrid.DATA_TYPE_DATETIME);
datagrid.addColumn(‘CloseDate’, datagrid.DATA_TYPE_DATETIME);
datagrid.addColumn(‘Id’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘IsClosed’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘IsWon’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘LastActivityDate’, datagrid.DATA_TYPE_DATETIME);
datagrid.addColumn(‘LastModifiedDate’, datagrid.DATA_TYPE_DATETIME);
datagrid.addColumn(‘LeadSource’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Name’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘NextStep’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Probability’, datagrid.DATA_TYPE_DOUBLE);
datagrid.addColumn(‘StageName’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Type’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘ForecastCategoryName’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Strategic_Account__c’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Forecasted_ACV__c’, datagrid.DATA_TYPE_DOUBLE);
datagrid.addColumn(‘Competitor__c’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.CreatedDate’, datagrid.DATA_TYPE_DATETIME);
datagrid.addColumn(‘Owner.Email’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.FullPhotoUrl’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.Id’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.IsActive’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.Manager’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.Name’, datagrid.DATA_TYPE_STRING);
datagrid.addColumn(‘Owner.UserRole.Name’, datagrid.DATA_TYPE_STRING);

for(var i = 1; i < lines.length; i++){
console.log(‘line: ‘ +  lines[i]); ///For heavy logging use browser console logging
var rows = lines[i].split(‘,’);
for(var j = 0; j < rows.length; j++){
if(j == 4){datagrid.addCell(rows[j] + ‘T00:00:00’);}
else if(j == 9){datagrid.addCell(rows[j] + ‘T00:00:00’);}
else{datagrid.addCell(rows[j]);}
}
datagrid.endRow();
}
} else {
DOMO.log(metadata.report + ‘ is not a supported report.’);
datagrid.error(0, metadata.report + ‘ is not a supported report.’);
}

—————————————————-

See the reference section for specifics.

 

If you have read till here, hope all the tech and high-level details have helped you in building your Domo custom connectors. If you need any help, you can get in touch with us or ask us in comments below.

 

Note: Contributions on development done by Vishnu Yadav

Filed Under: ETL Tagged With: API, connectors, domo, ETL

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Footer

Featured Posts

Crypto Market Intelligence: 3 Powerful Onchain Data Growth Strategies

December 26, 2024 By Pravin Singh Leave a Comment

Welcome to the new frontier of crypto market intelligence, where every transaction tells a story and every wallet leaves a trail. Within decentralized finance (DeFi), the traditional black box of competitor analysis has transformed into the transparent glass house of blockchain data. Through advanced crypto market intelligence, we can now watch competitors’ customers move between […]

Marketing Attribution: Data-driven Journey at a Hyper-Growth Startup

July 1, 2024 By Pravin Singh Leave a Comment

Marketing attribution: two words that can send shivers down the spine of even the most seasoned marketers. Marketing attribution is like a detective game. It’s about figuring out which marketing moves really helped your startup grow. You have to get many things right to make it work. The people who care most about this are […]

From Zero to Data Powerhouse: Building a Modern Data Stack for Startups

May 26, 2023 By Pravin Singh 1 Comment

In the midst of exploring diverse career opportunities in the realms of freelancing, e-commerce, marketplace analytics, on-chain analytics and crypto consulting an intriguing prospect came my way. It was an exceptional challenge and a rare opportunity – a chance to be the first data team member of a promising fintech product. Having spent the past […]

Copyright © 2026 · webanalyticshub.com