Insightful (formerly Workpuls) is a workforce analytics and employee monitoring platform that gives organizations real-time visibility into how their teams spend time at work. Insightful tracks computer activity, application usage, website visits, and project time to help businesses measure productivity, identify workflow bottlenecks, and make data-driven workforce decisions. The platform serves remote, hybrid, and in-office teams across industries including technology, finance, healthcare, and business process outsourcing.
Power end-to-end data operations for your Insightful API with Nexla. Our bi-directional Insightful connector is purpose-built for Insightful, 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 Insightful or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Insightful 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
To connect Nexla to Insightful, you need an active Insightful account with Admin privileges. Only organization Admins can generate API tokens in Insightful.
Insightful authenticates API requests using Bearer tokens. Follow these steps to generate a token from your Insightful organization settings:
Sign in to your Insightful account at app.insightful.io as an organization Admin.
Navigate to your organization settings. Look for the API or Integrations section within the Admin or Organization settings area.
Click the Create new Token button to begin creating a new API token.
Enter a descriptive name for the token in the name field — for example, Nexla Integration. A meaningful name helps you identify and manage this token later.
Once you have entered a name, the generate button will become active. Click the button to generate the token.
Save Your Token Immediately
The API token is displayed only once at the time of creation. Copy the token value and store it in a secure location immediately after generation. You will not be able to retrieve the token value again after closing the dialog.
Store the copied token value securely — you will need to paste it into Nexla when creating the credential.
For complete information about Insightful's API and token management, visit the Insightful Developer Portal.
Insightful enforces a limit of 200 API requests per minute per organization. If this limit is exceeded, the API returns an HTTP 429 status code. Nexla manages API request frequency automatically, but this limit is worth noting when configuring high-frequency data flows.
After selecting the data source type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
Enter the Insightful API token you generated in Prerequisites into the API Token field. This token authenticates Nexla's requests to the Insightful API and should be kept secure.
Nexla sends this token as a Bearer token in the Authorization HTTP header for all requests to the Insightful API, following the format required by the Insightful API:
Authorization: Bearer <your_api_token>
Treat your Insightful API token like a password. Do not share it in publicly accessible places such as source code repositories or client-side code. If a token is compromised, revoke it from your Insightful organization settings and generate a new one.
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 creation and can be selected for use with a new data source.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Insightful connector tile, then select the credential that will be used to connect to the Insightful account, and click Next; or, create a new Insightful credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Insightful 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.
List Employees
Returns a list of all employees in the account with their ID, name, email, and timestamps. Use this endpoint to synchronize employee records with HR systems or build employee-level workforce analytics.
Sends a GET request to /employee and returns employee records with selected fields: ID, name, email, createdAt, and updatedAt.
Response data is nested under $.employees[*]; each element represents a single employee record.
Employee IDs returned by this endpoint are required as parameters for other Insightful endpoints such as Employee - get, activity analytics, and time tracking queries.
List Teams
Returns a list of all teams in the account. Use this endpoint to retrieve team structure data for organizational reporting or to obtain team IDs for use in other Insightful endpoints.
Sends a GET request to /team and returns all team records.
Response data is nested under $.teams[*]; each element represents a single team record including team name and member information.
Team IDs can be used as parameters in analytics endpoints to filter productivity and activity data by team.
Get Shared Settings
Returns the shared settings configuration for the account. Use this endpoint to retrieve account-wide configuration values that affect data interpretation for other Insightful endpoints.
Sends a GET request to /shared-settings and returns the account's shared settings as a single object.
Response data is returned at the root path $. No additional parameters are required.
Shared settings include values such as work schedule definitions and productivity thresholds that may affect how activity and productivity analytics data is interpreted.
List Projects
Returns a list of all projects in the account. Use this endpoint to retrieve project data for project-level time tracking or productivity analysis.
Sends a GET request to /project and returns all project records.
Response data is returned as a top-level JSON array at $[*]; each element represents a single project record.
Project IDs can be used with the Project time analytics endpoint to retrieve time-on-project breakdowns for employees.
List App Tags
Returns a list of all application tags configured in the account. Use this endpoint to retrieve app tag definitions for productivity classification and reporting.
Sends a GET request to /app-tag and returns all app tag records.
Response data is nested under $.tags[*]; each element represents a single app tag definition.
App tags are used in Insightful to classify applications as productive, unproductive, or neutral. Tag definitions are important for correctly interpreting productivity analytics data.
List App Categories
Returns a list of all application categories available in the account. Use this endpoint to retrieve category definitions for application usage reporting and productivity classification.
Sends a GET request to /app-category and returns all app category records.
Response data is nested under $.categories[*]; each element represents a single application category.
Application categories group related apps together for productivity reporting. Category data is useful for building aggregated app usage reports by category.
Get Directory
Returns the directory information containing employee and organizational structure data. Use this endpoint to retrieve the full employee directory for HR synchronization or org chart generation.
Sends a GET request to /directory and returns directory records.
Response data is returned as a top-level JSON array at $[*]; each element represents a directory entry with employee and organizational data.
The directory endpoint includes organizational hierarchy information that is not available in the basic employee list endpoint. Use this endpoint when org structure is required for downstream reporting.
Get Scheduled Shift Settings
Returns the scheduled shift settings configuration for the account. Use this endpoint to retrieve work schedule definitions that affect time tracking and productivity calculations.
Sends a GET request to /scheduled-shift-settings and returns shift settings as a single object.
Response data is returned at the root path $. No additional parameters are required.
Shift settings define expected working hours for employees. This data is relevant when interpreting time tracking and productivity reports generated by other Insightful endpoints.
List Tasks
Returns a list of tasks tracked within the account. Use this endpoint to retrieve task-level time tracking data for project management or productivity analysis.
Sends a GET request to /tasks and returns all task records.
Response data is nested under $.data[*]; each element represents a single tracked task record.
Task records include time spent and employee associations. This data can be joined with project records to build comprehensive project-level time reporting.
List Time Entries
Returns a list of tracked time entries for employees. Use this endpoint to retrieve manual or automatic time tracking records for payroll, billing, or compliance reporting.
Sends a GET request to /time-entries and returns all time entry records.
Response data is nested under $.data[*]; each element represents a single time entry including employee, start time, end time, and duration.
For incremental data loads, use date/time macros in the API URL to filter time entries by date range and retrieve only recently added records on each flow run.
List Fragments
Returns a paginated list of activity and time fragments tracked for employees. Use this endpoint to retrieve granular activity data for detailed workforce analytics or compliance monitoring.
Sends a GET request to /v2/fragments and returns paginated fragment records.
Response data is nested under $.data[*]; each element represents a single activity fragment with employee, application, and time information.
Fragment data is high-volume. Use pagination parameters and date range filters to manage response size and retrieve data incrementally across multiple runs.
List Screen Recordings
Returns a paginated list of screen recording metadata for employees. Use this endpoint to retrieve recording metadata for audit, compliance, or workforce monitoring workflows.
Sends a GET request to /v2/screen-recordings and returns paginated screen recording metadata records.
Response data is nested under $.data[*]; each element includes recording metadata such as employee, timestamp, and storage reference. Actual recording content is not included in the API response.
Screen recording availability depends on your Insightful plan and the monitoring settings configured for each employee. Verify that screen recording is enabled for the employees you intend to query.
Manager - list
Returns a list of all managers in the account. Use this endpoint to retrieve manager records for organizational hierarchy reporting or approval workflow configurations.
Sends a GET request to /manager and returns all manager records.
Response data is returned at the root path $. No additional parameters are required.
Manager data can be joined with employee records to build organizational hierarchy views or filter analytics by reporting line.
Activity - find
Returns activity analytics data for employees. Use this endpoint to retrieve application usage and active/inactive time breakdowns for workforce productivity analysis.
Sends a GET request to /analytics/activity and returns activity analytics records.
Response data is returned at the root path $. Use date range query parameters to filter results by time period.
Activity analytics data is time-sensitive. Use date/time macros in the API URL to retrieve activity data for rolling time windows to support incremental reporting.
Productivity
Returns productivity analytics data for employees. Use this endpoint to retrieve productive vs. unproductive time breakdowns for individual or team-level performance reporting.
Sends a GET request to /analytics/productivity and returns productivity analytics records.
Response data is returned at the root path $. Use date range and employee/team filter parameters to scope results.
Productivity classifications are based on app tag settings configured in your Insightful account. Review app tag definitions using the List App Tags endpoint to ensure productivity calculations align with your reporting needs.
Shift - find
Returns shift analytics data for employees. Use this endpoint to retrieve scheduled vs. actual worked shift data for attendance and scheduling compliance reporting.
Sends a GET request to /analytics/shift and returns shift analytics records.
Response data is returned at the root path $. Use date range parameters to filter results by shift period.
Shift data requires scheduled shifts to be configured in Insightful for affected employees. Employees without configured schedules will not appear in shift analytics results.
Activity - detail
Returns detailed activity data for employees, including per-application usage breakdowns. Use this endpoint when granular application-level activity detail is needed beyond the summary provided by the Activity - find endpoint.
Sends a GET request to /analytics/activity/detail and returns detailed activity records.
Response data is returned at the root path $. Use employee, team, and date range parameters to filter results.
Detailed activity data can be high-volume for large teams. Use narrow date ranges and employee or team filters to manage response size and flow performance.
Project time
Returns project time analytics data, showing time spent by employees on specific projects. Use this endpoint to build project-level time allocation and billable hours reports.
Sends a GET request to /analytics/project-time and returns project time analytics records.
Response data is returned at the root path $. Use date range and project filter parameters to scope results.
Project time data requires employees to have logged time against specific projects in Insightful. Verify that project tracking is enabled for the relevant employees before querying this endpoint.
Timesheets per Day - find
Returns timesheet data aggregated per day for employees. Use this endpoint to build daily timesheet reports for payroll processing or client billing.
Response data is returned at the root path $. Use date range parameters to filter results by reporting period.
Daily timesheet data is useful for payroll runs and daily attendance tracking. Schedule this flow to run daily or weekly to maintain a current timesheet record in your target system.
Timesheets per Shift - find
Returns timesheet data aggregated per shift for employees. Use this endpoint to build shift-level timesheet reports for shift-based workforce management or billing.
Response data is returned at the root path $. Use date range parameters to filter results by reporting period.
Shift-based timesheets require scheduled shifts to be configured in Insightful for the relevant employees. Employees without shift schedules will not appear in shift timesheet reports.
Fragment
Returns activity fragment analytics data for employees. Use this endpoint to retrieve aggregated fragment-level activity data for detailed workforce monitoring and compliance analysis.
Sends a GET request to /analytics/fragment and returns fragment analytics records.
Response data is nested under $.data[*]; each element represents a single activity fragment record with employee and application details.
Fragment analytics data can be high-volume. Use date range filters and employee or team scoping to limit response size and improve flow performance.
Break - find
Returns break analytics data for employees. Use this endpoint to retrieve break frequency and duration data for workforce schedule compliance or fatigue management reporting.
Sends a GET request to /analytics/break and returns break analytics records.
Response data is returned at the root path $. Use date range and employee filter parameters to scope results.
Break data is subject to the monitoring settings configured for each employee in Insightful. Verify that break tracking is enabled for the relevant employees before querying this endpoint.
Employee - get
Returns the full profile for a single employee. Use this endpoint when detailed information for a specific employee is needed rather than retrieving all employees.
Sends a GET request to /employee/{id} and returns the full employee record.
Response data is returned at the root path $. Configure the following parameters: Id — the Insightful employee ID to retrieve. Employee IDs can be obtained from the List Employees endpoint.
This endpoint returns a single employee object rather than an array. Use $ as the path to data when configuring this endpoint.
Team - get
Returns the full details for a single team. Use this endpoint when complete metadata for a specific team is needed rather than retrieving all teams.
Sends a GET request to /team/{id} and returns the full team record.
Response data is returned at the root path $. Configure the following parameters: Id — the Insightful team ID to retrieve. Team IDs can be obtained from the List Teams endpoint.
This endpoint returns a single team object rather than an array. Use $ as the path to data when configuring this endpoint.
Directory - get active
Returns the active directory entries — employees currently active in the Insightful account. Use this endpoint to retrieve a filtered view of only active employees for current-state workforce reporting.
Sends a GET request to /directory/active and returns active directory records.
Response data is returned at the root path $. No additional parameters are required.
This endpoint excludes inactive or deactivated employees, making it useful for current headcount reporting where historical employees should not be included.
Sync - find paginate
Returns paginated directory sync records. Use this endpoint to retrieve incremental directory synchronization data for integrations that need to track employee directory changes over time.
Sends a GET request to /directory-sync/find-paginate and returns paginated sync records.
Response data is nested under $.data[*]; each element represents a single directory sync record. Use pagination parameters to retrieve complete result sets.
Directory sync records track changes to the employee directory over time. This endpoint is particularly useful for maintaining up-to-date employee records in downstream systems without performing full directory reloads.
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.
Insightful data sources can also be manually configured to ingest data from any valid Insightful API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. 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 Insightful API base URL is https://api.insightful.io; append the endpoint path to form the complete URL (for example, https://api.insightful.io/v1/employees). Most endpoints use the GET method — see the Insightful Developer Portal and the Insightful Postman collection for the full list of endpoints, paths, and parameters. You do not need to include the Authorization header — Nexla applies it automatically from your Insightful credential.
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 Insightful 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.