Configuring Gleap as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Gleap option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
You’ll need to provide your Gleap API credentials. You can find them in your Gleap dashboard under Project Settings > Security > API Key. The following configurations are available:- API Key: Your Gleap API key used to authenticate requests. This field is required.
- Project ID: The Gleap project ID found in your project settings. This field is required.
-
Start Date: The earliest date from which records will be synced. Used for the first full sync and when no previous state exists. Format:
YYYY-MM-DDTHH:mm:ssZ.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: Choose between the existing layers on your catalog. This is where you will find your new extracted tables once the extraction runs successfully.
- Folder: A folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: We suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: You can choose between INCREMENTAL and FULL_TABLE.
- Incremental: Each run fetches only new or updated records since the last replicated timestamp. Recommended for ongoing syncs so you keep every event without re-reading full history.
- Full table: Each run re-exports all data from the configured start date. Use when you need to backfill or fully refresh the dataset.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated. Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Below you’ll find all available data streams from Gleap and their corresponding fields:Tickets
Tickets
| Field | Type | Description |
|---|---|---|
| id | string | Unique ticket identifier |
| bugId | integer | Numeric bug ID |
| title | string | Ticket title |
| description | string | Ticket description |
| type | string | Ticket type (BUG, FEATURE_REQUEST, etc.) |
| status | string | Current status (OPEN, CLOSED, etc.) |
| priority | string | Priority level (HIGH, MEDIUM, LOW) |
| sentiment | string | Detected sentiment |
| createdAt | datetime | When the ticket was created |
| updatedAt | datetime | When the ticket was last updated |
| closedAt | datetime | When the ticket was closed |
| dueDate | datetime | Due date for the ticket |
| processingUser | string | Assigned user ID |
| processingTeam | string | Assigned team ID |
| session | string | Associated session ID |
| tags | array | Tags assigned to the ticket |
| archived | boolean | Whether the ticket is archived |
| isSpam | boolean | Whether the ticket is marked as spam |
| conversationClosed | boolean | Whether the conversation is closed |
| conversationRating | string | Rating given by the user |
| hasAgentReply | boolean | Whether an agent has replied |
| upvotesCount | integer | Number of upvotes |
| duplicatesCount | integer | Number of duplicates |
| score | number | Ticket score |
| channel | string | Channel information |
| aiSummary | string | AI-generated summary |
| shareToken | string | Share token for public access |
| formData | string | Form data (JSON) |
| customData | string | Custom data (JSON) |
| metaData | string | Metadata (JSON) |
| slaBreached | boolean | Whether SLA was breached |
| snoozed | boolean | Whether the ticket is snoozed |
| snoozedUntil | datetime | Snooze end date |
| firstAssignmentAt | datetime | When the ticket was first assigned |
| notificationsUnread | integer | Count of unread notifications |
Sessions
Sessions
| Field | Type | Description |
|---|---|---|
| id | string | Unique session identifier |
| gleapId | string | Gleap internal ID |
| gleapHash | string | Gleap hash |
| userId | string | User identifier |
| name | string | User display name |
| string | User email address | |
| phone | string | User phone number |
| lang | string | User language |
| location | string | User location |
| avatar | string | Avatar URL |
| companyId | string | Company identifier |
| companyName | string | Company name |
| deviceType | string | Device type |
| platform | string | Platform (web, iOS, Android) |
| plan | string | User plan |
| value | number | User value |
| sla | number | SLA value |
| sessions | number | Number of sessions |
| blocked | boolean | Whether the user is blocked |
| unsubscribed | boolean | Whether the user unsubscribed |
| emailOnly | boolean | Whether it is an email-only contact |
| firstActivity | datetime | First activity date |
| lastActivity | datetime | Last activity date |
| lastHeardFrom | datetime | Last heard from date |
| lastPageView | string | Last page viewed |
| countFeedbackReports | integer | Number of feedback reports |
| countFeedbackComments | integer | Number of feedback comments |
| tags | array | Tags assigned to the session |
| customData | string | Custom data (JSON) |
| eventData | string | Event data (JSON) |
Messages
Messages
| Field | Type | Description |
|---|---|---|
| id | string | Unique message identifier |
| ticket | string | Associated ticket ID |
| type | string | Message type |
| status | string | Message status |
| bot | boolean | Whether the message is from a bot |
| isNote | boolean | Whether it is an internal note |
| kaiChat | boolean | Whether it is from the AI assistant |
| outbound | boolean | Whether it is an outbound message |
| sendToChannel | boolean | Whether it was sent to a channel |
| sessionNotificationsUnread | boolean | Unread notification flag |
| createdAt | datetime | When the message was created |
| updatedAt | datetime | When the message was last updated |
| data | string | Message content (JSON) |
| translatedData | string | Translated content (JSON) |
| comment | string | Comment text |
| rating | string | Message rating |
| user | string | Sender user ID |
| session | string | Associated session ID |
| emailId | string | Associated email ID |
| messageRef | string | Message reference |
| replyTo | string | Reply-to message ID |
| outboundTemplate | string | Outbound template ID |
| outboundSubject | string | Outbound email subject |
| attachments | string | Attachments (JSON) |
| actions | string | Actions (JSON) |
| channel | string | Channel information (JSON) |
| aiData | string | AI data (JSON) |
Teams
Teams
| Field | Type | Description |
|---|---|---|
| id | string | Unique team identifier |
| name | string | Team name |
| assignmentMethod | string | How tickets are assigned (random, balanced, manual, circular) |
| members | array | List of team member IDs |
| selectOnlyOnlineMembers | boolean | Whether to assign only to online members |
| limitTicketAmount | boolean | Whether there is a ticket limit per member |
| ticketAmount | number | Maximum tickets per member |
| createdAt | datetime | When the team was created |
| updatedAt | datetime | When the team was last updated |
Surveys
Surveys
| Field | Type | Description |
|---|---|---|
| id | string | Unique survey identifier |
| name | string | Survey name |
| type | string | Survey type |
| status | string | Survey status |
| createdAt | datetime | When the survey was created |
| updatedAt | datetime | When the survey was last updated |
| config | string | Survey configuration (JSON) |
Survey Responses
Survey Responses
| Field | Type | Description |
|---|---|---|
| id | string | Unique response identifier |
| survey_id | string | Parent survey ID |
| session | string | Respondent session ID |
| createdAt | datetime | When the response was submitted |
| updatedAt | datetime | When the response was last updated |
| responses | string | Response data (JSON) |
| read | boolean | Whether the response has been read |
Data Model
The following diagram illustrates the relationships between the core data streams in Gleap. The arrows indicate the join keys that link the different entities, providing a clear overview of the data structure.Implementation Notes & Troubleshooting
Incremental Sync & Pagination
- The connector natively supports incremental extractions (
statecapability enabled) using cursor-based pagination and URL-encoded date filtering for high reliability. This ensures no data is missed across extraction windows. - Ensure that the start date format matches
YYYY-MM-DDTHH:mm:ssZif you decide to alter it via configuration.
Troubleshooting
| Issue | Possible cause | Solution |
|---|---|---|
| Authentication errors | Wrong API Key or Project ID | Verify your API credentials in your Gleap dashboard under Project Settings > Security > API Key. |
| Missing recent records | State configuration issue | For incremental syncs, make sure the prior runs finished successfully. The connector uses a URL-encoded start date marker automatically tracking the last fetched object to continue the process accurately. |
| Nested JSON objects | Unparsed properties | Data structures such as customData, metaData, or eventData are delivered as JSON strings. Apply proper JSON parsing (e.g. JSON_EXTRACT) in your downstream SQL queries inside Nekt Explorer to unnest them into individual fields. |
Skills for agents
Download Gleap skills file
Gleap connector documentation as plain markdown, for use in AI agent contexts.