Skip to main content

Insightly Data Source

The Insightly connector enables you to ingest CRM data — including contacts, leads, opportunities, organizations, projects, tasks, and events — directly into Nexla data flows for analysis, reporting, and integration with other systems. Follow the instructions below to create a new data flow that ingests data from an Insightly source in Nexla.
insightly_api_data_source.png

Insightly

Create a New Data Flow

  1. To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Then, select the desired flow type from the list, and click the Create button.

  2. Select the Insightly connector tile from the list of available connectors. Then, select the credential that will be used to connect to the Insightly instance, and click Next; or, create a new Insightly credential for use in this flow.

  3. In Nexla, Insightly data sources can be created using pre-built endpoint templates, which expedite source setup for common Insightly endpoints. Each template is designed specifically for the corresponding Insightly endpoint, making data source setup easy and efficient.
    • To configure this source using a template, follow the instructions in Configure Using a Template.

    Insightly sources can also be configured manually, allowing you to ingest data from Insightly endpoints not included in the pre-built templates or apply further customizations to exactly suit your needs.
    • To configure this source manually, follow the instructions in Configure Manually.

Configure Using a Template

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Insightly endpoints. Each template is designed specifically for the corresponding Insightly endpoint, making data source setup easy and efficient.

Endpoint Settings

  • Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

    List Activity Sets

    Retrieves all activity sets configured in the Insightly account. Use this endpoint to audit or replicate workflow automation templates defined in your CRM.

    • Issues a GET request to /v3.1/ActivitySets. Returns a top-level JSON array of activity set objects.
    • Response data path: $[*] — each array element is treated as an individual record.

    Activity sets are account-level configuration objects and are not paginated in the same way as CRM record endpoints. This endpoint is useful for a one-time export or periodic sync of your automation template library.

    Search Contacts

    Searches and returns a list of contacts matching specified criteria. This is the primary endpoint for ingesting contact records from Insightly for analysis, reporting, or syncing to downstream systems.

    • Issues a GET request to /v3.1/Contacts/Search. Supports query parameters such as $filter, $orderby, $top, $skip, and updated_after_utc for filtering and pagination.
    • Response data path: $[*] — each element of the returned array is one contact record.

    Use the updated_after_utc query parameter with Nexla date/time macros to perform incremental ingestion, fetching only contacts modified since the last run. The maximum page size is 500 records; use $skip to paginate through large contact lists.

    List Countries

    Returns the list of countries available for use in address fields within the Insightly account. Use this endpoint to populate reference data for address validation or mapping.

    • Issues a GET request to /v3.1/Countries. Returns a top-level JSON array of country objects.
    • Response data path: $[*] — each array element is one country entry.

    This is a static reference endpoint — the list of countries changes infrequently. Schedule this source to run periodically rather than on every data flow run to minimize unnecessary API calls.

    List Currencies

    Returns the list of currencies available for use in the Insightly account. Use this endpoint to retrieve reference currency data for financial reporting or CRM data integration.

    • Issues a GET request to /v3.1/Currencies. Returns a top-level JSON array of currency objects.
    • Response data path: $[*] — each array element is one currency record.

    Like the Countries endpoint, this is a static reference list that changes infrequently. Use it for lookup table population rather than high-frequency incremental syncs.

    Search Emails

    Searches and returns a list of email records matching specified criteria. Use this endpoint to analyze email communications logged in Insightly, including emails linked to contacts, leads, or opportunities.

    • Issues a GET request to /v3.1/Emails/Search. Supports standard filtering and pagination parameters including updated_after_utc.
    • Response data path: $[*] — each array element is one email record.

    Use updated_after_utc with Nexla date/time macros to incrementally ingest only newly logged or updated emails since the last data flow run.

    Search Events

    Searches and returns a list of calendar events matching specified criteria. Use this endpoint to export CRM calendar data for reporting, scheduling analytics, or integration with calendar systems.

    • Issues a GET request to /v3.1/Events/Search. Supports filtering with $filter, date-based filtering with updated_after_utc, and pagination with $top and $skip.
    • Response data path: $[*] — each array element is one event record.

    Events in Insightly are calendar entries associated with CRM records such as contacts or opportunities. Use incremental ingestion via updated_after_utc to keep downstream systems current without reprocessing historical data.

    Search Knowledge Article Categories

    Searches and returns a list of knowledge article categories matching specified criteria. Use this endpoint to export the category taxonomy of your Insightly knowledge base for reporting or synchronization.

    • Issues a GET request to /v3.1/KnowledgeArticleCategory/Search. Returns a top-level JSON array.
    • Response data path: $[*] — each array element is one category record.

    This endpoint is available on Insightly plans that include the Knowledge Base feature. Confirm that your account subscription includes this module before configuring this source.

    Search Knowledge Article Folders

    Searches and returns a list of knowledge article folders matching specified criteria. Use this endpoint to map the folder structure of your Insightly knowledge base for documentation or content management workflows.

    • Issues a GET request to /v3.1/KnowledgeArticleFolder/Search. Returns a top-level JSON array of folder objects.
    • Response data path: $[*] — each array element is one folder record.

    Requires the Knowledge Base module to be enabled on your Insightly account. Folders organize articles within the knowledge base hierarchy.

    Search Knowledge Articles

    Searches and returns a list of knowledge articles matching specified criteria. Use this endpoint to export knowledge base content for analysis, backup, or publishing to external systems.

    • Issues a GET request to /v3.1/KnowledgeArticle/Search. Supports filtering and pagination via standard Insightly query parameters.
    • Response data path: $[*] — each array element is one article record.

    Requires the Knowledge Base module on your Insightly plan. Use updated_after_utc for incremental ingestion of only articles updated since the previous run.

    List Lead Sources

    Returns all lead sources configured in the Insightly account. Use this endpoint to retrieve the reference list of lead source values for reporting, data validation, or pipeline analysis.

    • Issues a GET request to /v3.1/LeadSources. Returns a top-level JSON array of lead source objects.
    • Response data path: $[*] — each array element is one lead source entry.

    Lead sources are account-level reference data used to categorize where leads originate. This list is relatively static and is suitable for periodic sync to populate lookup tables in downstream systems.

    List Lead Statuses

    Returns all available lead statuses in the system. Use this endpoint to retrieve the reference list of lead status values for pipeline reporting or CRM data validation.

    • Issues a GET request to /v3.1/LeadStatuses. Returns a top-level JSON array of lead status objects.
    • Response data path: $[*] — each array element is one status entry.

    Lead statuses are account-level reference data. This list is suitable for periodic sync to maintain accurate status lookup tables in downstream reporting systems.

    Search Milestones

    Returns a list of milestones matching specified search criteria. Use this endpoint to track project milestone progress across your Insightly projects.

    • Issues a GET request to /v3.1/Milestones/Search. Supports filtering via standard Insightly query parameters.
    • Response data path: $[*] — each array element is one milestone record.

    Milestones are tied to Insightly Projects. Use this endpoint alongside the List Projects endpoint to build comprehensive project status reports.

    Search Notes

    Returns a list of notes matching specified search criteria. Use this endpoint to export CRM notes linked to contacts, opportunities, or organizations for analysis or archiving.

    • Issues a GET request to /v3.1/Notes/Search. Supports filtering with $filter and incremental ingestion with updated_after_utc.
    • Response data path: $[*] — each array element is one note record.

    Notes can be attached to multiple CRM object types in Insightly. Use updated_after_utc with date/time macros to incrementally pull only notes created or modified since the last run.

    Search Opportunities

    Returns a list of opportunities (deals) matching specified search criteria. Use this endpoint to export sales pipeline data for reporting, forecasting, or integration with BI tools.

    • Issues a GET request to /v3.1/Opportunities/Search. Supports $filter, $orderby, $top, $skip, and updated_after_utc.
    • Response data path: $[*] — each array element is one opportunity record.

    This is one of the most commonly used endpoints for sales analytics. Use updated_after_utc with Nexla date/time macros for incremental pipeline syncs to ensure downstream reports always reflect the latest opportunity data.

    List Opportunity Categories

    Returns all available opportunity categories. Use this endpoint to retrieve the reference list of opportunity category values for pipeline segmentation and reporting.

    • Issues a GET request to /v3.1/OpportunityCategories. Returns a top-level JSON array of category objects.
    • Response data path: $[*] — each array element is one category entry.

    Opportunity categories are account-level reference data. Sync this list periodically to keep lookup tables in downstream systems accurate.

    List Opportunity State Reasons

    Returns all available opportunity state reason codes. Use this endpoint to retrieve the reference list of close reasons for won/lost opportunity reporting.

    • Issues a GET request to /v3.1/OpportunityStateReasons. Returns a top-level JSON array of reason code objects.
    • Response data path: $[*] — each array element is one reason code entry.

    State reasons are associated with the final status of an opportunity (won, lost, abandoned). Use this reference data to enrich opportunity reports with human-readable close reason labels.

    Search Organisations

    Returns a list of organizations matching specified search criteria. Use this endpoint to export account/organization records for B2B reporting, CRM data migration, or integration with other business systems.

    • Issues a GET request to /v3.1/Organisations/Search. Supports $filter, $orderby, $top, $skip, and updated_after_utc.
    • Response data path: $[*] — each array element is one organization record.

    Organisations (spelled with an "s" in the Insightly API) are the account-level entity in the CRM. Use updated_after_utc for incremental syncs to keep downstream account data current.

    List Pipelines

    Returns all sales pipelines defined in the system. Use this endpoint to export pipeline configuration data for reporting or to populate pipeline reference tables in downstream systems.

    • Issues a GET request to /v3.1/Pipelines. Returns a top-level JSON array of pipeline objects.
    • Response data path: $[*] — each array element is one pipeline record.

    Pipelines are account-level configuration objects. Use this alongside the List Pipeline Stages endpoint to build a complete picture of your sales process structure.

    List Pipeline Stages

    Returns all pipeline stages in the system. Use this endpoint to export the stage configuration of your sales pipelines for reporting, funnel analysis, or CRM data migration.

    • Issues a GET request to /v3.1/PipelineStages. Returns a top-level JSON array of stage objects.
    • Response data path: $[*] — each array element is one stage record.

    Pipeline stages define the steps within each pipeline. Combine this data with opportunity records to analyze conversion rates and velocity across each stage of your sales funnel.

    List Project Categories

    Returns all available project categories. Use this endpoint to retrieve the reference list of project category values for project reporting or categorization in downstream systems.

    • Issues a GET request to /v3.1/ProjectCategories. Returns a top-level JSON array of category objects.
    • Response data path: $[*] — each array element is one project category entry.

    Project categories are account-level reference data. Sync this list periodically alongside project records to maintain accurate category labels in reporting.

    List Projects

    Returns all projects in the Insightly account. Use this endpoint to export project records for delivery tracking, resource planning, or integration with project management tools.

    • Issues a GET request to /v3.1/Projects. Returns a top-level JSON array of project objects.
    • Response data path: $[*] — each array element is one project record.

    Projects in Insightly are used to track post-sale delivery and service engagements. Use updated_after_utc as a query parameter to incrementally sync only projects updated since the last run.

    List Prospects

    Returns all prospects in the Insightly account. Use this endpoint to export early-stage lead data for analysis, nurturing campaign workflows, or CRM data synchronization.

    • Issues a GET request to /v3.1/Prospects. Returns a top-level JSON array of prospect objects.
    • Response data path: $[*] — each array element is one prospect record.

    Prospects represent potential leads before they are formally qualified. Use updated_after_utc to pull only recently created or updated prospect records.

    List Relationships

    Returns all relationship types defined in the Insightly account. Use this endpoint to retrieve the reference list of how CRM entities are linked to one another.

    • Issues a GET request to /v3.1/Relationships. Returns a top-level JSON array of relationship type objects.
    • Response data path: $[*] — each array element is one relationship type entry.

    Relationship types define the labels used when linking contacts, organizations, and other CRM objects. This is reference data that changes infrequently and is best synced on a periodic schedule.

    List Task Categories

    Returns all task categories available in the Insightly account. Use this endpoint to retrieve the reference list of task category values for task reporting or workflow configuration.

    • Issues a GET request to /v3.1/TaskCategories. Returns a top-level JSON array of category objects.
    • Response data path: $[*] — each array element is one task category entry.

    Task categories are account-level reference data. Sync periodically to keep downstream task reporting accurate when categories are added or renamed.

    List Tasks

    Returns all tasks in the Insightly account. Use this endpoint to export CRM task records for activity reporting, team productivity analysis, or synchronization with task management tools.

    • Issues a GET request to /v3.1/Tasks/Search. Supports filtering with $filter, sorting with $orderby, and incremental ingestion with updated_after_utc.
    • Response data path: $[*] — each array element is one task record.

    Tasks can be linked to contacts, leads, opportunities, and other CRM objects. Use updated_after_utc with Nexla date/time macros to incrementally sync only tasks created or modified since the previous run.

    List Team Members

    Returns all team members in the Insightly account. Use this endpoint to export user roster data for access auditing, team structure reporting, or syncing team membership to downstream systems.

    • Issues a GET request to /v3.1/TeamMembers. Returns a top-level JSON array of team member objects.
    • Response data path: $[*] — each array element is one team member record.

    Team members are users associated with a specific team in Insightly. This endpoint returns membership associations, not full user profiles — use the List Users endpoint for complete user details.

    List Teams

    Returns all teams in the Insightly account. Use this endpoint to export team configuration data for organizational reporting or access management audits.

    • Issues a GET request to /v3.1/Teams. Returns a top-level JSON array of team objects.
    • Response data path: $[*] — each array element is one team record.

    Teams in Insightly control record-level permissions and are linked to users and data. This endpoint is useful for access audits and organizational hierarchy reporting.

    List Users

    Returns all users in the Insightly account. Use this endpoint to export user directory data for license management, access auditing, or user attribution in downstream reporting.

    • Issues a GET request to /v3.1/Users/Search. Returns a top-level JSON array of user objects.
    • Response data path: $[*] — each array element is one user record.

    This endpoint returns all active users on the account, including their roles and permissions metadata. Access to this endpoint may require administrator-level API credentials.

Endpoint Testing

Once the selected endpoint template has been configured, Nexla can retrieve a sample of the data that will be fetched according to the current settings. This allows users to verify that the source is configured correctly before saving.

  • To test the current endpoint configuration, click the Test button to the right of the endpoint selection menu. Sample data will be fetched & displayed in the Endpoint Test Result panel on the right.

  • If the sample data is not as expected, review the selected endpoint and associated settings, and make any necessary adjustments. Then, click the Test button again, and check the sample data to ensure that the correct information is displayed.

Configure Manually

Insightly sources can also be configured manually, allowing you to ingest data from Insightly endpoints not included in the pre-built templates or apply further customizations to exactly suit your needs. Manual configuration supports any valid Insightly API v3.1 endpoint.

First, select the method that will be used for calls to the Insightly API from the Method pulldown menu. The most common method for data ingestion is:

  • GET: For retrieving lists of records or individual objects from the Insightly API.

  • POST: For querying data using a request body, or for accessing endpoints that require parameters in the body rather than in the URL.

Most Insightly API endpoints for data retrieval use the GET method. The Insightly API returns paginated results, with a default page size of 100 records and a maximum of 500 records per response. For the complete list of available endpoints, visit the Insightly API v3.1 documentation.

API Endpoint URL

  1. Enter the URL of the Insightly API endpoint from which this source will fetch data in the Set API URL field. This should be the complete URL including the protocol (https://) and the correct pod subdomain for your Insightly account.

    The Insightly API base URL follows the format https://api.{pod}.insightly.com/v3.1, where {pod} is your account's regional pod identifier (for example, na1, na2, au1, or eu1). You can find your pod URL in your Insightly User Settings under the API section. Append the specific resource path to this base URL to form the complete endpoint URL. For example:

    • https://api.na1.insightly.com/v3.1/Contacts — retrieves a list of all contacts
    • https://api.na1.insightly.com/v3.1/Leads — retrieves a list of all leads
    • https://api.na1.insightly.com/v3.1/Opportunities — retrieves a list of all opportunities
    • https://api.na1.insightly.com/v3.1/Projects — retrieves a list of all projects
    • https://api.na1.insightly.com/v3.1/Organisations — retrieves a list of all organizations
    • https://api.na1.insightly.com/v3.1/Tasks — retrieves a list of all tasks
    • https://api.na1.insightly.com/v3.1/Events — retrieves a list of all calendar events

    To retrieve an individual record by its ID, append the integer record ID to the endpoint path (for example, https://api.na1.insightly.com/v3.1/Contacts/123456).

    Replace na1 in the example URLs with your own pod identifier. Your pod URL is displayed in User Settings > API section in your Insightly account. Using the wrong pod URL will result in authentication errors.

Filtering and Pagination Parameters

The Insightly API supports several query string parameters that can be appended to endpoint URLs to filter, sort, and paginate results:

  • $filter: Filter records by field values (for example, ?$filter=FIRST_NAME eq 'Jane' to retrieve contacts named Jane).
  • $orderby: Sort results by a field (for example, ?$orderby=DATE_CREATED_UTC desc to sort by creation date, newest first).
  • $top: Limit the number of records returned in a single response (maximum 500, for example, ?$top=500).
  • $skip: Skip a number of records for pagination (for example, ?$skip=500 to retrieve the second page of 500 records).
  • $select: Return only specific fields (for example, ?$select=CONTACT_ID,FIRST_NAME,LAST_NAME,EMAIL_ADDRESS).
  • updated_after_utc: Retrieve only records updated after a specific UTC datetime (for example, ?updated_after_utc=2024-01-01%2000:00:00).

These parameters can be combined in a single URL. For example, to retrieve up to 500 contacts updated after January 1, 2024, sorted by last update descending:

https://api.na1.insightly.com/v3.1/Contacts?updated_after_utc=2024-01-01%2000:00:00&$top=500&$orderby=DATE_UPDATED_UTC%20desc

The updated_after_utc parameter is particularly useful for incremental data ingestion — use it with Nexla's date/time macros to ingest only records modified since the last data flow run.

Date/Time Macros (API URL)

Optional

Optionally, the API URL can be customized using macros—all macros added to the API URL will be converted into values when Nexla executes the API call. Macros are dynamic placeholders that allow you to create flexible API endpoints that can adapt to different time periods or data requirements.

Date/time macros are especially useful with the Insightly updated_after_utc parameter, enabling incremental ingestion of records changed since the last run. For example, you can use {now-1} formatted as YYYY-MM-DD HH:mm:ss to fetch records updated in the past day.

  1. To add a macro, type { at the appropriate position in the API URL (within the Set API URL field), and select the desired macro from the dropdown list.

    • {now} – The current datetime
    • {now-1} – The datetime one time unit before the current datetime
    • {now+1} – The datetime one time unit after the current datetime
    • custom – Datetime macros can reference any number of time units before or after the current datetime—for example, enter (now-4) to indicate the datetime four time units before the current datetime
  2. Select the format that will be applied to datetime macros from the Date Format for Date/Time Macro pulldown menu. This format will be applied to the base datetime value of the macro—i.e., the value of {now} in {now-1}. For Insightly's updated_after_utc parameter, use the format YYYY-MM-DD HH:mm:ss.

  3. Select the datetime unit that will be used to perform mathematical operations in the included macro(s) from the Time Unit for Operations pulldown menu—for example, for the macro {now-1}, when Day is selected, {now-1} will be converted to the datetime one day before the current datetime.

Lookup-Based Macros (API URL)

Optional

Column values from existing lookups can also be included as macros in the API URL. Lookup-based macros allow you to reference data from previously configured data sources or lookups, enabling dynamic API endpoints that can adapt based on existing data.

Lookup-based macros are useful when you need to create API endpoints that reference specific Insightly record IDs, pipeline IDs, or other values from other data sources in your Nexla environment.

  1. To include a lookup column value macro, select the relevant lookup from the Add Lookups to Supported Macros pulldown menu.

  2. Type { at the appropriate position in the API URL, and select the lookup column-based macro from the dropdown list. Lookup-based macros are automatically populated into the macro list when a lookup is selected in the Add Lookups to Supported Macros pulldown menu.

Path to Data

Optional

If only a subset of the data that will be returned by the API endpoint is needed, you can designate the part(s) of the response that should be included in the Nexset(s) produced from this source by specifying the path to the relevant data within the response. This is particularly useful when API responses contain metadata, pagination information, or other data that you don't need for your analysis.

For example, when a GET request is used to fetch a list of Insightly contacts, the API returns a JSON array of contact objects directly at the root of the response. By entering the correct path, you can configure Nexla to treat each element of the returned array as a separate record.

Path to Data is essential when API responses have nested structures. Without specifying the correct path, Nexla might not be able to properly parse and organize your data into usable records. The Insightly API v3.1 typically returns records as a top-level JSON array for list endpoints.

  • To specify which data should be treated as relevant in responses from this source, enter the path to the relevant data in the Set Path to Data in Response field.

    • For responses in JSON format enter the JSON path that points to the object or array that should be treated as relevant data. JSON paths use dot notation (e.g., $.data.items[*] to access an array of items within a data object).

    • For responses in XML format, enter the XPath that points to the object/array containing relevant data. XPath uses slash notation (e.g., /response/data/item to access item elements within a data element).

    Path to Data Example:

    The Insightly API v3.1 returns list responses as a top-level JSON array. For most list endpoints (such as /Contacts or /Leads), the path to the records is simply $[*], which treats each element of the root array as a separate record in the Nexset.

Autogenerate Path Suggestions

Nexla can also autogenerate data path suggestions based on the response from the API endpoint. These suggested paths can be used as-is or modified to exactly suit your needs.

  • To use this feature, click the Test button next to the Set API URL field to fetch a sample response from the API endpoint. Suggested data paths generated based on the content & format of the response will be displayed in the Suggestions box below the Set Path to Data in Response field.

  • Click on a suggestion to automatically populate the Set Path to Data in Response field with the corresponding path. The populated path can be modified directly within the field if further customization is needed.

    PathSuggestions.png

Metadata

If metadata is included in the response but is located outside of the defined path to relevant data, you can configure Nexla to include this data as common metadata in each record. This is useful when you want to preserve important contextual information that applies to all records but isn't part of the main data array.

Metadata paths are particularly useful for preserving API response context like request IDs, timestamps, or summary statistics that apply to all records in the response.

  • To specify the location of metadata that should be included with each record, enter the path to the relevant metadata in the Path to Metadata in Response field.

    • For responses in JSON format, enter the JSON path to the object or array that contains the metadata, and for responses in XML format, enter the XPath.

Request Headers

Optional
  • If Nexla should include any additional request headers in API calls to this source, enter the headers & corresponding values as comma-separated pairs in the Request Headers field (e.g., header1:value1,header2:value2). Additional headers are often required for API versioning, content type specifications, or custom authentication requirements.

    You do not need to include the Authorization header — Nexla adds this automatically using the credentials you configured. The Insightly API also does not require explicit Accept or Content-Type headers for GET requests; however, if you are using a POST endpoint, you may need to include Content-Type:application/json.

Endpoint Testing

After configuring all settings for the selected endpoint, Nexla can retrieve a sample of the data that will be fetched according to the current configuration. This allows users to verify that the source is configured correctly before saving.

  • To test the current endpoint configuration, click the Test button to the right of the endpoint selection menu. Sample data will be fetched & displayed in the Endpoint Test Result panel on the right.

  • If the sample data is not as expected, review the selected endpoint and associated settings, and make any necessary adjustments. Then, click the Test button again, and check the sample data to ensure that the correct information is displayed.

Save & Activate the Source

  1. Once all of the relevant steps in the above sections have been completed, click the Create button in the upper right corner of the screen to save and create the new Insightly data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.