Skip to main content

Insightly

Insightly is a modern, scalable customer relationship management (CRM) platform used by more than 1.5 million users worldwide to manage contacts, leads, opportunities, projects, and organizations from a single unified system. Built for growing businesses, Insightly combines CRM, project management, and marketing automation into one platform, enabling teams to track the full customer journey from first contact through project delivery. Key capabilities include pipeline management, workflow automation, customizable dashboards and reports, email integration with Gmail and Outlook, and a native API for connecting Insightly data with external systems and analytics tools.

Insightly icon

Power end-to-end data operations for your Insightly API with Nexla. Our bi-directional Insightly connector is purpose-built for Insightly, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Insightly or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Insightly workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

To connect Nexla to Insightly, you need an active Insightly account. Each Insightly user has a personal API key that uniquely identifies them when making API requests. By default, all users in an Insightly account have API access, though account administrators can enable or disable API access on a per-user basis.

Find Your Insightly API Key

Insightly authenticates API requests using HTTP Basic Authentication, with your personal API key used as the username and the password left blank. Follow these steps to locate your API key in Insightly:

  1. Sign in to your Insightly account at app.insightly.com.

  2. Click your profile icon or your name in the top-right corner of the dashboard to open the user menu.

  3. Select User Settings from the dropdown menu.

  4. On the User Settings page, scroll down to the API section. Your API key is displayed here and is already generated for you. You will also see your API URL (for example, https://api.na1.insightly.com/v3.1), which indicates which regional pod your Insightly account uses.

  5. Click the Copy button next to your API key to copy it to your clipboard.

Your API key is unique to your Insightly user account. Each person who accesses the Insightly API needs their own API key. For complete information about Insightly's API and authentication, visit the Insightly API v3.1 documentation.

Keep Your API Key Secure

Your Insightly API key provides access to your CRM data with the same permissions as your user account. Treat it like a password — do not share it in publicly accessible places such as source code repositories, client-side code, or unencrypted configuration files. If your API key is compromised, you can generate a new one from the same User Settings page.

Identify Your API Pod URL

Insightly hosts its API across several regional data centers (called "pods"). The correct API base URL depends on where your Insightly account data is hosted. Your pod URL is shown directly beneath your API key in the API section of your User Settings page.

Common pod URLs include:

  • https://api.na1.insightly.com/v3.1 — North America (Pod 1)
  • https://api.na2.insightly.com/v3.1 — North America (Pod 2)
  • https://api.au1.insightly.com/v3.1 — Australia
  • https://api.eu1.insightly.com/v3.1 — Europe

You will need this base URL when manually configuring data source or destination endpoints in Nexla. All Insightly API endpoint URLs are formed by appending the resource path to this base URL (for example, https://api.na1.insightly.com/v3.1/Contacts).

API Access Permissions

By default, all Insightly users have API access enabled. If you are unable to find an API key in your User Settings, your account's administrator may have restricted API access for your user. Administrators can manage API access per user by navigating to System Settings > Users and editing the user's profile.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your Insightly API key in the API Key field (also labeled Username depending on the credential form). This key authenticates Nexla's requests to the Insightly API and should be kept secure.

    Insightly uses HTTP Basic Authentication. Your API key serves as the username in Basic Auth requests, and the password is left blank. Nexla sends the API key in the Authorization HTTP header for all requests to the Insightly API, encoded as a Base64 Basic Auth credential.

    The password field should be left blank. Insightly's API uses only the API key as the credential — no password is required. If the credential form includes a password field, leave it empty.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Insightly connector tile, 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.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Insightly endpoints. 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.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Insightly data sources can also be manually configured to ingest data from any valid Insightly API v3.1 endpoint not covered by the pre-built templates, or to apply further customizations to exactly suit your needs. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

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 — found in User Settings > API). Most data retrieval endpoints use the GET method; the API returns paginated results with a default page size of 100 and a maximum of 500 records per response. For the complete list of available endpoints, visit the Insightly API v3.1 documentation.

Insightly list endpoints support query string parameters including $filter (filter by field values), $orderby (sort results), $top (page size, max 500), $skip (pagination offset), $select (return only specific fields), and updated_after_utc (retrieve only records updated after a UTC datetime). Combine updated_after_utc with Nexla date/time macros—formatted as YYYY-MM-DD HH:mm:ss—to perform incremental ingestion of only records changed since the last run.

The Insightly API v3.1 returns list responses as a top-level JSON array; the path to data for most list endpoints is simply $[*], which treats each element of the root array as a separate record in the Nexset.

You do not need to include the Authorization header — Nexla adds this automatically using the configured credential. GET requests do not require explicit Accept or Content-Type headers; POST endpoints may need Content-Type:application/json.

Once all of the relevant settings have been configured, 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.

Use as a destination

Click the + icon on the Nexset that will be sent to the Insightly destination, and select the Send to Destination option from the menu. Select the Insightly connector from the list of available destination connectors, then select the credential that will be used to connect to the Insightly organization, and click Next; or, create a new Insightly credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Insightly endpoints. Select the endpoint to which this destination will send data from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create Contact

Creates a new contact record in Insightly. Use this endpoint to write new contact data — including custom fields — from any Nexla Nexset into your Insightly CRM.

  • Issues a POST request to /v3.1/Contacts. The request body is a JSON object containing contact fields and any custom field values.
  • After a successful create, Insightly returns the full contact record including the system-assigned CONTACT_ID. Use the Response Webhook option to capture this ID in a downstream Nexset.

Ensure that the field names in your Nexset match the Insightly API field names (e.g., FIRST_NAME, LAST_NAME, EMAIL_ADDRESS). Use the Exclude Attributes option to omit any Nexset fields not accepted by this endpoint.

Create Opportunity

Creates a new opportunity (deal) record in Insightly. Use this endpoint to write deal data — including custom fields — from a Nexset into your Insightly sales pipeline.

  • Issues a POST request to /v3.1/Opportunities. The request body is a JSON object containing opportunity fields and any custom field values.
  • After a successful create, Insightly returns the full opportunity record including the system-assigned OPPORTUNITY_ID. Use the Response Webhook option to capture this ID downstream.

Required fields for creating an opportunity include OPPORTUNITY_NAME. Ensure your Nexset includes this field and that its name matches the Insightly API field name exactly.

Update Contact

Updates an existing contact record by ID. Use this endpoint to propagate changes to contact data from an external system back into Insightly.

  • Issues a PUT request to /v3.1/Contacts/{id}. The contact's integer CONTACT_ID must be available in your Nexset.
  • Configure the Contact ID parameter to specify which field in the Nexset contains the Insightly contact ID to be updated.

PUT requests replace the full contact record. Ensure your Nexset contains all required fields for the contact, not just the fields being updated, to avoid overwriting existing data with empty values.

Delete Contact

Deletes an existing contact record by ID. Use this endpoint to remove outdated or duplicate contact records from Insightly based on IDs flowing through a Nexset.

  • Issues a DELETE request to /v3.1/Contacts/{id}. The contact's integer CONTACT_ID must be available in your Nexset.
  • Configure the Contact ID parameter to specify which field in the Nexset contains the Insightly contact ID to be deleted.

Contact deletion in Insightly is permanent and cannot be undone. Verify that the correct contact IDs are flowing through your Nexset before activating this destination.

Update Opportunity

Updates an existing opportunity record by ID. Use this endpoint to sync opportunity stage changes, value updates, or close date modifications from external systems back into Insightly.

  • Issues a PUT request to /v3.1/Opportunities/{id}. The opportunity's integer OPPORTUNITY_ID must be available in your Nexset.
  • Configure the Opportunity ID parameter to specify which field in the Nexset contains the Insightly opportunity ID to be updated.

PUT requests replace the full opportunity record. Ensure your Nexset contains all required opportunity fields to avoid overwriting existing data with empty values during the update.

Once the selected endpoint template has been configured, click the Test button at the top of the Sample Payload panel, and click on a listed sample payload to expand it and send a test payload to the Insightly API to verify that the destination is configured correctly before saving.

Manual configuration

Insightly destinations can also be manually configured to send data to any valid Insightly API v3.1 endpoint — including creating, updating, or deleting contacts, leads, opportunities, organizations, projects, tasks, and events. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

The Insightly REST API v3.1 supports POST (create a new record, for example POST /Contacts), PUT (fully update an existing record by ID, for example PUT /Contacts/123456), PATCH (partially update specific fields of an existing record), and DELETE (remove a record by ID). The API accepts and returns data exclusively in JSON format. The base URL follows the format https://api.{'{pod}'}.insightly.com/v3.1; for update, patch, or delete operations, append the integer record ID to the end of the URL (for example, https://api.na1.insightly.com/v3.1/Contacts/987654).

You do not need to include the Authorization header or a Content-Type: application/json header — Nexla adds these automatically based on your credential and the selected data format.

The Insightly API v3.1 does not natively support bulk create or update operations for most endpoints — each record is typically sent as an individual API request. If you enable record batching, ensure that the target Insightly endpoint supports batch operations, or use the Property Inside JSON Object batching algorithm to wrap records in a format compatible with any Insightly bulk endpoints available for your plan.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to Insightly, open the destination resource menu, and select Activate.

The Nexset data will not be sent to Insightly until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.