.png)
ConnectWise PSA Integration Guide
ConnectWise PSA integrates with enterprise systems primarily through its versioned REST API and selective webhook-style notifications.
ConnectWise PSA integration options at a glance
ConnectWise PSA’s primary integration mechanism is its versioned REST API, which exposes Companies, Contacts, Service Tickets, Projects, Agreements, Time Entries, and other operational resources. Selected resources and events can produce webhook-style notifications, while batch and attachment operations are available for some endpoints. REST calls require tenant-specific configuration, a company identifier, API keys, a registered client ID, and HTTPS. Martini can consume these APIs, receive supported callbacks through a REST API, retrieve authoritative resources, and orchestrate scheduled reconciliation. Workflows can paginate results, apply incremental filters, transform data, enforce business rules, and retry transient failures without relying on direct production database access.
Common ConnectWise PSA integration patterns
Common ConnectWise PSA data objects used in integrations
Authentication and security considerations
ConnectWise PSA authentication
ConnectWise PSA REST integrations generally require a company identifier, public and private API keys, a registered client ID, appropriate member permissions and security roles, and HTTPS. OAuth may apply to some developer applications or products, but it should not be assumed to be the default PSA REST method.
Martini security model
Store the company identifier, client ID, and API keys as environment-specific Martini secrets. Keep private values out of workflow source, payloads, and logs, and use separate credentials for development, testing, and production.
- Configure the tenant and regional base URL outside reusable workflow logic.
- Limit API-key permissions to required ConnectWise PSA resources and operations.
- Validate inbound webhook requests according to the configured ConnectWise mechanism.
- Protect Martini endpoints with appropriate authentication and authorization.
Operational considerations for ConnectWise PSA integrations
Pagination and incremental synchronization
Use explicit page sizes, server-side filters, and persisted high-water marks. Account for equal timestamps, time zones, updates during a synchronization window, deletes, and deactivations. An overlap window can reduce missed changes when downstream writes are idempotent.
Rate limits and retries
ConnectWise limits and concurrency behavior can vary by environment and endpoint. Use bounded concurrency, backoff for throttling, and retries only for transient failures. Do not assume batch operations are atomic.
Webhook reliability
Callbacks may be duplicated, delayed, out of order, or incomplete. Validate the notification, retrieve the current resource from REST, acknowledge promptly, and use scheduled reconciliation to detect missed events.
Schema and tenant configuration
Custom fields, boards, types, statuses, permissions, and required fields may differ between ConnectWise environments. Keep mappings configuration-driven where practical and test representative tenant data before production deployment.
Attachments and testing
Attachment transfers require separate consideration for file size, content type, temporary storage, permissions, and cleanup. Test pagination, retries, duplicate callbacks, permission failures, schema changes, and downstream partial failures before go-live.
Why use Martini instead of scripts or point-to-point integrations?
Orchestrate more than API calls
Scripts can call an endpoint, but an enterprise integration also needs triggers, pagination, checkpoints, transformation, validation, business rules, retries, reconciliation, and operational visibility. Martini coordinates these concerns in workflows and reusable integration assets.
Support multiple operating modes
Martini can combine a REST API endpoint for selected ConnectWise callbacks with scheduled workflows for polling and reconciliation. This avoids depending on selective webhook coverage and supports both near-real-time and batch synchronization.
Maintainable mappings and controls
Martini separates environment configuration and secrets from workflow logic, maps ConnectWise objects into target models, and provides controlled handling for tenant-specific fields, permissions, rate limits, and downstream failures.
- Use reusable workflows rather than isolated point-to-point scripts.
- Apply consistent validation, idempotency, retry, and exception patterns.
- Expose controlled APIs when downstream applications need a normalized ConnectWise view.
- Monitor and troubleshoot integration behavior across environments.