Planhat is an AI-native customer success platform for enterprise post-sales teams. It builds a living model of your customers by consolidating CRM, support, product usage, and telemetry into one view, letting CSMs track health scores, manage renewals, monitor NPS, run playbooks, and measure churn risk. The connector syncs companies, end users, licenses, conversations, tickets, tasks, invoices, and opportunities in and out of Planhat.
Power end-to-end data operations for your Planhat API with Nexla. Our bi-directional Planhat connector is purpose-built for Planhat, 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 Planhat or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Planhat 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
The Planhat connector authenticates using a static Bearer API Access Token issued by a Planhat Service Account (also called a Private App in newer Planhat workspaces). Before creating a Planhat credential in Nexla, you must generate a token in Planhat.
Planhat API Access Tokens are tied to Service Accounts, which are purpose-built accounts designed for integrations rather than individual users. Tokens are static (non-expiring) and are displayed only once at creation time, so you must copy and store the token securely before leaving the page.
Sign in to your Planhat workspace.
Navigate to Settings in the left-hand navigation menu, then select Service Accounts.
In newer Planhat workspaces (ws.planhat.com), Service Accounts have been renamed Private Apps and are found in the App Center global tool rather than Settings. The steps below apply to both experiences—the UI labels may differ slightly.
Click Create Service Account (or + Private App in newer workspaces) to begin creating a new service account for the Nexla integration.
Enter a descriptive name for the service account—for example, Nexla Integration—so it is easy to identify later.
Configure the permissions for the service account. Planhat allows you to restrict each service account to specific data models and access levels:
For a read-only integration (Nexla as data source only), grant the service account read permissions on the Planhat data models you intend to sync. Relevant models for the Nexla connector include Companies, End Users, Licenses, NPS, Conversations, Tickets, Tasks, Issues, Invoices, Opportunities, and Churn.
For a read-write integration (Nexla as both data source and destination), also grant write permissions on any data models Nexla will create or update records in.
Granting only the minimum permissions required for your use case is a security best practice and reduces the blast radius if the token is ever compromised. Additional details about Planhat data model permissions are available in the Planhat Help Center.
Click Save (or Create) to save the service account.
On the service account detail page, click Generate New Token (or Generate API Access Token) to create an API Access Token for this service account.
Copy the generated token immediately and store it in a secure location such as a password manager or secrets vault. Planhat displays the token only once—it cannot be retrieved again after you navigate away from the page.
Important
If you navigate away without copying the token, you will need to generate a new token. The old token will remain active until explicitly disabled or the Private App is paused or deleted.
After selecting the data source/destination 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 Planhat API Access Token you generated in Prerequisites into the API Access Token field. This token authenticates Nexla with the Planhat API using Bearer token authentication and must correspond to a Service Account with the appropriate permissions for your intended use (reading data, writing data, or both).
The API Access Token is a sensitive credential. Nexla stores it securely and encrypts it at rest. Do not share this token or include it in log files or source control.
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.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Planhat connector tile, then select the credential that will be used to connect to the Planhat instance, and click Next; or, create a new Planhat 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 Planhat endpoints. Each template is designed specifically for the corresponding Planhat endpoint, making data source setup easy and efficient. 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.
Get Companies
Retrieves a paginated list of all company records from Planhat, including health scores, MRR/ARR, lifecycle phase, owner assignment, renewal dates, tags, and any custom fields configured in your Planhat workspace. This endpoint is the primary way to sync your full customer account data out of Planhat into a data warehouse, CRM, or analytics platform.
Optionally, configure the following parameters to control the data retrieved:
Page Size: Enter the number of company records to retrieve per page. The default is 100 and the maximum is 5000. Increasing the page size can reduce the number of API calls for large datasets.
Start Offset: Enter the integer index from which Nexla should begin retrieving records. The default is 0, which starts from the first record. Adjust this value if you need to start the sync from a specific position in the list.
The Get Companies endpoint returns all company records accessible to the Service Account used for authentication. Planhat company records include standard fields (name, owner, MRR, ARR, lifecycle phase, renewal date) as well as any custom fields defined in your workspace. For complete details on the company data model, see the Planhat Company API documentation.
Get Lean Companies
Retrieves a lightweight list of company records containing only the Planhat ID (_id), External ID, Source ID, and company name. Use this endpoint for ID mapping, building lookup tables, or resolving company references in downstream systems—where the full company record is not required.
Optionally, filter the returned companies by lifecycle status using the Status Filter parameter. Select one of the following values from the pulldown menu:
All (default): Returns all companies regardless of status.
Prospect: Returns only companies in the Prospect lifecycle phase.
Coming: Returns only companies in the Coming phase (onboarding).
Customer: Returns only active customers.
Canceled: Returns only canceled accounts.
Lost: Returns only lost deals/churned accounts.
The Get Lean Companies endpoint is significantly faster than Get Companies because it returns only identifying fields. It is ideal for use cases where you need to join Planhat company IDs with records from another system without loading the full company payload.
Get Endusers
Retrieves a paginated list of end user (contact) records across companies. Each end user record includes email address, role, NPS score, last touch date, engagement activity metrics, and custom fields. Use this endpoint to sync contact-level data from Planhat into a CRM, data warehouse, or marketing platform.
Optionally, configure the following parameters:
Page Size: Enter the number of end user records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve end users for that company only. Leave blank to retrieve end users across all companies.
End users in Planhat represent the individual contacts (people) within a customer account, as distinct from the company record itself. The Planhat API documentation refers to these as "Endusers." For complete field definitions, see the Planhat Enduser API documentation.
Get Licenses
Retrieves a paginated list of subscription and license records. Each record includes MRR, ARR, renewal dates, product name, currency, and renewal status. Use this endpoint for revenue reporting, renewal pipeline analysis, and subscription lifecycle tracking in a data warehouse or BI tool.
Optionally, configure the following parameters:
Page Size: Enter the number of license records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve licenses for that company only. Leave blank to retrieve licenses across all companies.
Licenses in Planhat represent individual subscription line items tied to a company. A single company can have multiple license records (for example, one per product tier or contract term). For complete field definitions, see the Planhat License API documentation.
Get NPS Responses
Retrieves a paginated list of NPS survey responses. Each record includes the numeric score (0–10), any open-ended comment text, the date the survey was sent, the date it was answered, the associated company ID, and the end user's email address. Use this endpoint to analyze customer sentiment trends or enrich contact-level data in a data warehouse.
Optionally, configure the following parameters:
Page Size: Enter the number of NPS records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve NPS responses for that company only. Leave blank to retrieve responses across all companies.
NPS scores in Planhat are classified as Detractors (0–6), Passives (7–8), and Promoters (9–10). For complete field definitions and details on Planhat's NPS data model, see the Planhat NPS API documentation.
Get Conversations
Retrieves a paginated list of logged conversation records, which represent emails, calls, and meetings logged against companies and contacts in Planhat. These records are used for last-touch analytics, activity tracking, and engagement reporting.
Optionally, configure the following parameters:
Page Size: Enter the number of conversation records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve conversations for that company only. Leave blank to retrieve conversations across all companies.
Conversations in Planhat are distinct from Tickets. Conversations represent proactive customer interactions (calls, emails, meetings) while Tickets represent inbound support requests. For more detail, see the Planhat Conversation API documentation.
Get Tickets
Retrieves a paginated list of support ticket records (a specialized type of Conversation in Planhat). Each ticket record includes status, severity, source system reference, and company linkage. Use this endpoint to sync support ticket data from Planhat into a data warehouse or analytics pipeline for support health analysis.
Optionally, configure the following parameters:
Page Size: Enter the number of ticket records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve tickets for that company only. Leave blank to retrieve tickets across all companies.
Planhat Tickets are typically synced from external support tools such as Zendesk or Intercom via the Planhat API. This endpoint retrieves the ticket data that has been stored in Planhat, regardless of its origin. For more information, see the Planhat Ticket API documentation.
Get Tasks
Retrieves a paginated list of planned task records, including to-dos, calendar events, and playbook steps. Each task record includes the main type, action description, owner, due dates, and completion status. Use this endpoint to report on team activity, CSM workload, and playbook execution.
Optionally, configure the following parameters:
Page Size: Enter the number of task records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve tasks for that company only. Leave blank to retrieve tasks across all companies.
Tasks in Planhat are generated both manually by CSMs and automatically by Playbooks. Syncing task data into a data warehouse enables analysis of playbook adoption rates and team activity patterns. For more information, see the Planhat Task API documentation.
Get Issues
Retrieves a paginated list of Issue records—bugs and feature requests—linked to companies and end users in Planhat. Use this endpoint to analyze product feedback trends, open defect volumes by account, or correlate product issues with customer health scores.
Optionally, configure the following parameters:
Page Size: Enter the number of issue records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Issues in Planhat are typically linked to a product backlog or external issue tracker. This endpoint does not support filtering by company ID—all issues accessible to the Service Account will be returned. For more information, see the Planhat Issue API documentation.
Get Opportunities
Retrieves a paginated list of expansion and renewal opportunity records per company, including pipeline value, deal stage, and expected close date. Use this endpoint to sync your CS-led pipeline into a CRM or revenue reporting system.
Optionally, configure the following parameters:
Page Size: Enter the number of opportunity records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve opportunities for that company only. Leave blank to retrieve all opportunities.
Opportunities in Planhat track expansion revenue, upsell deals, and renewal deals managed by the CS team. For complete field definitions, see the Planhat Opportunity API documentation.
Get Invoices
Retrieves a paginated list of invoice records per company. Use this endpoint to power billing pipeline reporting, revenue recognition workflows, and overdue invoice analytics in a data warehouse or finance system.
Optionally, configure the following parameters:
Page Size: Enter the number of invoice records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve invoices for that company only. Leave blank to retrieve all invoices.
Retrieves a paginated list of internal Planhat users—the CSMs, account managers, and admins within your organization. Use this endpoint to build team mapping tables, resolve owner IDs on company or task records, or enrich downstream datasets with user display names and roles.
Optionally, configure the following parameters:
Page Size: Enter the number of user records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Planhat Users are the internal team members of your organization, not your customers. Customer contacts are represented as End Users. For more information, see the Planhat User API documentation.
Get Churn Records
Retrieves a paginated list of churn event records, each capturing when and why a customer churned. Use this endpoint for retention analysis, cohort churn modeling, and identifying patterns in churn reasons across your customer base.
Optionally, configure the following parameters:
Page Size: Enter the number of churn records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Churn records in Planhat are logged when a company transitions out of the Customer lifecycle state. Each record captures the churn reason, date, and associated revenue impact. For more information, see the Planhat Churn API documentation.
Get Objectives
Retrieves a paginated list of customer success plan objectives and milestones tracked against companies in Planhat. Use this endpoint to report on success plan completion rates, milestone achievement, and QBR (Quarterly Business Review) outcomes.
Optionally, configure the following parameters:
Page Size: Enter the number of objective records to retrieve per page. The default is 100 and the maximum is 5000.
Start Offset: Enter the integer offset from which to start the list. The default is 0.
Company ID Filter: Enter the Planhat _id of a specific company to retrieve objectives for that company only. Leave blank to retrieve objectives across all companies.
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.
Planhat data sources can also be manually configured to ingest data from any valid Planhat 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.
Planhat API endpoints follow the base URL pattern https://api.planhat.com/ followed by the resource path (for example, https://api.planhat.com/companies or https://api.planhat.com/endusers). Most Planhat list endpoints return a top-level JSON array, so the default Path to Data used by the pre-built templates is $[*]. You do not need to include the Authorization header—it is automatically applied by Nexla from the configured credential using Bearer token authentication. For a complete list of available Planhat API endpoints, see the Planhat API Introduction.
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 Planhat 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.
Click the + icon on the Nexset that will be sent to the Planhat destination, and select the Send to Destination option from the menu. Select the Planhat connector from the list of available destination connectors, then select the credential that will be used to connect to the Planhat organization, and click Next; or, create a new Planhat credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Planhat endpoints. Each template is designed specifically for the corresponding Planhat endpoint, making destination setup easy and efficient. Select the endpoint to which data will be sent 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.
Bulk Upsert Companies
Creates or updates up to 5,000 company records per request in Planhat. Planhat matches each record in the payload against existing companies in priority order: by Planhat _id, then by sourceId, then by externalId. Records that match an existing company are updated; records that do not match are created as new companies.
Map your Nexset fields to the Planhat company data model. To create a new company, the payload must include a name field. To update an existing company, the payload must include at least one of the following identifier fields: _id, sourceId, or externalId.
No additional template parameters are required. The endpoint sends the full Nexset payload as a JSON array to https://api.planhat.com/companies using the HTTP PUT method.
Planhat's bulk upsert endpoints accept a maximum of 5,000 records per request. If your Nexset contains more than 5,000 records, configure record batching in the destination settings to split the data into batches of 5,000 or fewer. For complete details on the company upsert requirements, see the Planhat Company API documentation.
Bulk Upsert Endusers
Creates or updates up to 5,000 end user (contact) records per request in Planhat. Planhat matches each record against existing end users in priority order: by _id, then sourceId, then externalId, then email. Use this endpoint to sync contact data from a CRM, support tool, or data warehouse into Planhat.
Map your Nexset fields to the Planhat end user data model. To create a new end user, the payload must include:
A companyId field referencing the Planhat company this contact belongs to.
At least one of: email, externalId, or sourceId.
To update an existing end user, the payload must include at least one of the identifier fields listed above (_id, sourceId, externalId, or email).
No additional template parameters are required. The endpoint sends the full Nexset payload as a JSON array to https://api.planhat.com/endusers using the HTTP PUT method.
The maximum batch size for this endpoint is 5,000 records per request. If your Nexset exceeds this, enable record batching in the destination settings. For complete field requirements, see the Planhat Enduser API documentation.
Bulk Upsert Licenses
Creates or updates up to 5,000 subscription and license records per request in Planhat. Use this endpoint to sync renewal data, subscription changes, or new contract records from a CRM or billing system into Planhat.
Map your Nexset fields to the Planhat license data model. To update an existing license, the payload must include at least one of: _id, sourceId, or externalId.
No additional template parameters are required. The endpoint sends the full Nexset payload as a JSON array to https://api.planhat.com/licenses using the HTTP PUT method.
License records in Planhat must be linked to a company. Ensure each license record in your Nexset includes a valid companyId referencing the parent company. For complete field requirements, see the Planhat License API documentation.
Bulk Upsert NPS
Creates or updates NPS survey response records in bulk in Planhat. Use this endpoint to push NPS scores from external survey tools (such as Delighted, Medallia, or Qualtrics) into Planhat so they appear on company and end user health profiles.
Map your Nexset fields to the Planhat NPS data model. Each NPS record should include a score (0–10), the associated company identifier, and the end user's email address where available.
No additional template parameters are required. The endpoint sends the full Nexset payload as a JSON array to https://api.planhat.com/nps using the HTTP PUT method.
NPS records synced into Planhat via this endpoint will be reflected in Planhat health scores and NPS analytics. For complete field requirements, see the Planhat NPS API documentation.
Bulk Upsert Tickets
Creates or updates support ticket records in bulk in Planhat. Use this endpoint to sync ticket data from external support systems (such as Zendesk, Intercom, or Freshdesk) into Planhat so tickets are visible on company profiles and contribute to health score calculations.
Map your Nexset fields to the Planhat ticket data model. Required fields for creating new ticket records are:
companyId: The Planhat _id of the company this ticket is associated with.
sourceId: The unique identifier for the ticket in the source system (e.g., Zendesk ticket ID).
email: The email address of the contact who submitted the ticket.
No additional template parameters are required. The endpoint sends the full Nexset payload as a JSON array to https://api.planhat.com/tickets using the HTTP PUT method.
The maximum batch size for this endpoint is 5,000 records per request. For complete field requirements, see the Planhat Ticket API documentation.
Create Conversation
Logs a single conversation record (an email, call, or meeting) against a company or contact in Planhat from an external system. Use this endpoint to push interaction history from a CRM, email platform, or call recording tool into Planhat for last-touch analytics and activity tracking.
Map your Nexset fields to the Planhat conversation data model. Each conversation record should include the conversation type, date, associated company or contact identifiers, and any relevant metadata such as subject or duration.
This endpoint creates one conversation record per Nexset record. Unlike the bulk upsert endpoints, it uses the HTTP POST method and does not perform upsert matching—each call creates a new conversation. The endpoint sends the payload to https://api.planhat.com/conversations.
Because this endpoint creates a new conversation on every call, duplicate conversations may be created if the same data is sent multiple times. Ensure your Nexla flow is designed to send only new conversation records. For complete field requirements, see the Planhat Conversation API documentation.
Update Company
Updates a single company record by its Planhat identifier. Use this endpoint when you need to update one company at a time with full control over which company is targeted, or when your use case requires per-record ID specification in the URL path.
Configure the required Company ID parameter, which specifies the Planhat company to update. This value is included in the API URL path. Planhat supports three identifier formats for this parameter:
Planhat internal ID: Enter the Planhat _id value directly (e.g., abc123xyz).
External ID: Prefix the external ID with extid- (e.g., extid-your_crm_id).
Source ID: Prefix the source ID with srcid- (e.g., srcid-your_source_id).
Map the remaining Nexset fields to the Planhat company data model fields you wish to update. Only the fields included in the payload will be modified—fields omitted from the payload will retain their current values.
The Update Company endpoint updates one record per API call. For updating large numbers of company records, the Bulk Upsert Companies endpoint is more efficient as it handles up to 5,000 records per request. For complete details, see the Planhat Company API documentation.
Planhat destinations can also be manually configured to send data to any valid Planhat API endpoint. 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 Planhat API uses PUT for bulk upsert endpoints, POST to create individual records such as conversations, and PATCH for partial updates. All write endpoints accept JSON. For update operations on a specific record, include the record ID at the end of the URL—for example, https://api.planhat.com/companies/abc123xyz using the Planhat internal ID, or the extid- / srcid- prefix to match by External ID or Source ID instead. You do not need to include the Authorization or Content-Type headers—these are handled automatically by Nexla from the configured credential and the selected content format. Planhat's bulk upsert endpoints accept a maximum of 5,000 records per request; if your Nexset exceeds this, enable record batching in the destination settings with a batch size of 5000 or lower.
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 send the data to the configured Planhat endpoint, open the destination resource menu, and select Activate.
The Nexset data will not be sent to Planhat until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.