Get started with a free trial today
Already have an account? Sign in
Stitch’s UJET integration replicates data using theUJET API. Refer to theSchema section for a list of objects available for replication.
A high-level look at Stitch's UJET (v1) integration, including release status, useful links, and the features supported in Stitch.
| STITCH | |||
| Release status | Released on March 4, 2020 | Supported by | |
| Stitch plan | Standard | API availability | Available |
| Singer GitHub repository | |||
| REPLICATION SETTINGS | |||
| Anchor Scheduling | Supported | Advanced Scheduling | Supported |
| Table-level reset | Unsupported | Configurable Replication Methods | Unsupported |
| DATA SELECTION | |||
| Table selection | Supported | Column selection | Supported |
| Select all | Supported | ||
| TRANSPARENCY | |||
| Extraction Logs | Supported | Loading Reports | Supported |
To set up UJET in Stitch, you need:
A UJET account withadmin privileges. You need this privilege to retrieve the information required for the Stitch integration.

On the Stitch Dashboard page, click theAdd Integration button.
Click theUJET icon.
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch UJET” would create a schema calledstitch_ujet in the destination.Note: Schema names cannot be changed after you save the integration.
ujet, but if you are unsure, check your welcome email from UJET.stitch.ujet.com would bestitch.The Sync Historical Data setting defines the starting date for your UJET integration. This means that dataequal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to replicate data beyond UJET’s default setting of1 year. For a detailed look at historical replication jobs, check out theSyncing Historical SaaS Data guide.
In theReplication Frequency section, you’ll create the integration’sreplication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
UJET integrations support the following replication scheduling methods:
Advanced Scheduling using Cron (Advanced or Premium plans only)
To keep your row usage low, consider setting the integration to replicate less frequently. See theUnderstanding and Reducing Your Row Usage guide for tips on reducing your usage.
The last step is to select the tables and columns you want to replicate.Learn about the available tables for this integration.
Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.
For UJET integrations, you can select:
Individual tables and columns
All tables and columns
Click the tabs to view instructions for each selection method.
To track a table, click thecheckbox next to the table’s name. A blue checkmark means the table is set to replicate.
To track a column, click thecheckbox next to the column’s name. A blue checkmark means the column is set to replicate.
Click theTables to Replicate tab.
In the menu that displays, clickTrack all Tables and Fields:

After you finish setting up UJET, itsSync Status may show asPending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, aPending status indicates that Stitch is in the process of scheduling the initial replication job for the integration.This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to theAnchor Scheduling documentation for more information.
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is forversion 1 of this integration.
This is the latest version of the UJET integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs >customers), while case is maintained in PostgreSQL destinations (CusTomERs >CusTomERs). Refer to theLoading Guide for your destination for more info.
Theagent_activity_logs table contains info about agent activity logs.
Key-based Incremental | |
Primary Key | id |
Replication Key | started_at |
| Useful links |
| Join agent_activity_logs with | on |
|---|---|
| agents | agent_activity_logs.agent_id = agents.id |
| calls | agent_activity_logs.agent_id = calls.agent_info.id agent_activity_logs.agent_id = calls.transfers.from_agent.id agent_activity_logs.agent_id = calls.transfers.to_agent.id agent_activity_logs.call_id = calls.id agent_activity_logs.call_id = calls.participants.call_id |
| chats | agent_activity_logs.agent_id = chats.transfers.from_agent.id agent_activity_logs.agent_id = chats.transfers.to_agent.id agent_activity_logs.chat_id = chats.id agent_activity_logs.chat_id = chats.participants.chat_id |
| menus | agent_activity_logs.agent_id = menus.agent_assignments.assignee.id agent_activity_logs.agent_id = menus.team_assignments.team.assignees.id |
activity STRING | ||||||
agent_id INTEGER | ||||||
call_id INTEGER | ||||||
chat_id INTEGER | ||||||
duration INTEGER | ||||||
ended_at DATE-TIME | ||||||
id INTEGER | ||||||
started_at DATE-TIME | ||||||
status OBJECT
| ||||||
whodunnit OBJECT
|
Theagents table contains info about agents.
Key-based Incremental | |
Primary Key | id |
Replication Key | status_updated_at |
| Useful links |
| Join agents with | on |
|---|---|
| agent_activity_logs | agents.id = agent_activity_logs.agent_id |
| calls | agents.id = calls.agent_info.id agents.id = calls.transfers.from_agent.id agents.id = calls.transfers.to_agent.id |
| chats | agents.id = chats.transfers.from_agent.id agents.id = chats.transfers.to_agent.id |
| menus | agents.id = menus.agent_assignments.assignee.id agents.id = menus.team_assignments.team.assignees.id agents.teams.id = menus.team_assignments.team.id |
| teams | agents.teams.id = teams.id |
agent_number STRING | ||||||||||
avatar_url STRING | ||||||||||
call_count INTEGER | ||||||||||
channels ARRAY
| ||||||||||
chat_count INTEGER | ||||||||||
created_at DATE-TIME | ||||||||||
crm_authenticated BOOLEAN | ||||||||||
STRING | ||||||||||
first_name STRING | ||||||||||
id INTEGER | ||||||||||
last_login_time DATE-TIME | ||||||||||
last_name STRING | ||||||||||
location STRING | ||||||||||
middle_name STRING | ||||||||||
online BOOLEAN | ||||||||||
roles ARRAY | ||||||||||
status OBJECT
| ||||||||||
status_updated_at DATE-TIME | ||||||||||
teams ARRAY
| ||||||||||
wrap_up BOOLEAN |
Thecalls table contains info about calls.
Key-based Incremental | |
Primary Key | id |
Replication Key | updated_at |
| Useful links |
| Join calls with | on |
|---|---|
| agents | calls.agent_info.id = agents.id calls.transfers.from_agent.id = agents.id calls.transfers.to_agent.id = agents.id |
| agent_activity_logs | calls.agent_info.id = agent_activity_logs.agent_id calls.transfers.from_agent.id = agent_activity_logs.agent_id calls.transfers.to_agent.id = agent_activity_logs.agent_id calls.id = agent_activity_logs.call_id calls.participants.call_id = agent_activity_logs.call_id |
| chats | calls.agent_info.id = chats.transfers.from_agent.id calls.transfers.from_agent.id = chats.transfers.from_agent.id calls.transfers.to_agent.id = chats.transfers.from_agent.id calls.agent_info.id = chats.transfers.to_agent.id calls.transfers.from_agent.id = chats.transfers.to_agent.id calls.transfers.to_agent.id = chats.transfers.to_agent.id |
| menus | calls.agent_info.id = menus.agent_assignments.assignee.id calls.transfers.from_agent.id = menus.agent_assignments.assignee.id calls.transfers.to_agent.id = menus.agent_assignments.assignee.id calls.agent_info.id = menus.team_assignments.team.assignees.id calls.transfers.from_agent.id = menus.team_assignments.team.assignees.id calls.transfers.to_agent.id = menus.team_assignments.team.assignees.id |
agent_info OBJECT
| ||||||||||||||||||||||||||||||||
answer_type STRING | ||||||||||||||||||||||||||||||||
assigned_at DATE-TIME | ||||||||||||||||||||||||||||||||
call_duration INTEGER | ||||||||||||||||||||||||||||||||
call_type STRING | ||||||||||||||||||||||||||||||||
connected_at DATE-TIME | ||||||||||||||||||||||||||||||||
created_at DATE-TIME | ||||||||||||||||||||||||||||||||
deflection STRING | ||||||||||||||||||||||||||||||||
deflection_details ARRAY
| ||||||||||||||||||||||||||||||||
disconnected_by STRING | ||||||||||||||||||||||||||||||||
end_user OBJECT
| ||||||||||||||||||||||||||||||||
ends_at DATE-TIME | ||||||||||||||||||||||||||||||||
fail_details STRING | ||||||||||||||||||||||||||||||||
fail_reason STRING | ||||||||||||||||||||||||||||||||
has_feedback BOOLEAN | ||||||||||||||||||||||||||||||||
hold_duration INTEGER | ||||||||||||||||||||||||||||||||
id INTEGER | ||||||||||||||||||||||||||||||||
lang STRING | ||||||||||||||||||||||||||||||||
menu_path OBJECT
| ||||||||||||||||||||||||||||||||
offer_events ARRAY
| ||||||||||||||||||||||||||||||||
offer_type STRING | ||||||||||||||||||||||||||||||||
out_ticket_id STRING | ||||||||||||||||||||||||||||||||
out_ticket_url STRING | ||||||||||||||||||||||||||||||||
outbound_number STRING | ||||||||||||||||||||||||||||||||
participants ARRAY
| ||||||||||||||||||||||||||||||||
photos ARRAY
| ||||||||||||||||||||||||||||||||
queued_at DATE-TIME | ||||||||||||||||||||||||||||||||
rating STRING | ||||||||||||||||||||||||||||||||
recording_url STRING | ||||||||||||||||||||||||||||||||
scheduled_at DATE-TIME | ||||||||||||||||||||||||||||||||
selected_menu OBJECT
| ||||||||||||||||||||||||||||||||
status STRING | ||||||||||||||||||||||||||||||||
support_number STRING | ||||||||||||||||||||||||||||||||
transfers ARRAY
| ||||||||||||||||||||||||||||||||
updated_at DATE-TIME | ||||||||||||||||||||||||||||||||
verified BOOLEAN | ||||||||||||||||||||||||||||||||
videos ARRAY
| ||||||||||||||||||||||||||||||||
voicemail_reason STRING | ||||||||||||||||||||||||||||||||
voip_provider STRING | ||||||||||||||||||||||||||||||||
wait_duration INTEGER |
Thechats table contains info about chats.
Key-based Incremental | |
Primary Key | id |
Replication Key | updated_at |
| Useful links |
| Join chats with | on |
|---|---|
| agents | chats.transfers.from_agent.id = agents.id chats.transfers.to_agent.id = agents.id |
| agent_activity_logs | chats.transfers.from_agent.id = agent_activity_logs.agent_id chats.transfers.to_agent.id = agent_activity_logs.agent_id chats.id = agent_activity_logs.chat_id chats.participants.chat_id = agent_activity_logs.chat_id |
| calls | chats.transfers.from_agent.id = calls.agent_info.id chats.transfers.to_agent.id = calls.agent_info.id chats.transfers.from_agent.id = calls.transfers.from_agent.id chats.transfers.to_agent.id = calls.transfers.from_agent.id chats.transfers.from_agent.id = calls.transfers.to_agent.id chats.transfers.to_agent.id = calls.transfers.to_agent.id |
| menus | chats.transfers.from_agent.id = menus.agent_assignments.assignee.id chats.transfers.to_agent.id = menus.agent_assignments.assignee.id chats.transfers.from_agent.id = menus.team_assignments.team.assignees.id chats.transfers.to_agent.id = menus.team_assignments.team.assignees.id |
agent_info STRING | ||||||||||||||||||||||||||||||||
assigned_at DATE-TIME | ||||||||||||||||||||||||||||||||
average_response_time INTEGER | ||||||||||||||||||||||||||||||||
chat_duration INTEGER | ||||||||||||||||||||||||||||||||
chat_type STRING | ||||||||||||||||||||||||||||||||
created_at DATE-TIME | ||||||||||||||||||||||||||||||||
end_user OBJECT
| ||||||||||||||||||||||||||||||||
ends_at DATE-TIME | ||||||||||||||||||||||||||||||||
fail_reason STRING | ||||||||||||||||||||||||||||||||
first_msg_sent_at DATE-TIME | ||||||||||||||||||||||||||||||||
has_feedback BOOLEAN | ||||||||||||||||||||||||||||||||
id INTEGER | ||||||||||||||||||||||||||||||||
lang STRING | ||||||||||||||||||||||||||||||||
last_msg_sent_at DATE-TIME | ||||||||||||||||||||||||||||||||
longest_response_time INTEGER | ||||||||||||||||||||||||||||||||
menu_path OBJECT
| ||||||||||||||||||||||||||||||||
message_count INTEGER | ||||||||||||||||||||||||||||||||
offer_events ARRAY | ||||||||||||||||||||||||||||||||
offer_type STRING | ||||||||||||||||||||||||||||||||
out_ticket_id STRING | ||||||||||||||||||||||||||||||||
out_ticket_url STRING | ||||||||||||||||||||||||||||||||
participants ARRAY
| ||||||||||||||||||||||||||||||||
photos ARRAY
| ||||||||||||||||||||||||||||||||
rating STRING | ||||||||||||||||||||||||||||||||
selected_menu OBJECT
| ||||||||||||||||||||||||||||||||
status STRING | ||||||||||||||||||||||||||||||||
transcript BOOLEAN | ||||||||||||||||||||||||||||||||
transfers ARRAY
| ||||||||||||||||||||||||||||||||
updated_at DATE-TIME | ||||||||||||||||||||||||||||||||
verified BOOLEAN | ||||||||||||||||||||||||||||||||
videos ARRAY
| ||||||||||||||||||||||||||||||||
wait_duration INTEGER |
Themenu_tree table contains info about menu trees.
Full Table | |
Primary Key | id |
| Useful links |
agents_count INTEGER |
deleted BOOLEAN |
id INTEGER |
name STRING |
parent_id INTEGER |
position INTEGER |
Themenus table contains info about menus.
Key-based Incremental | |
Primary Key | id |
| Useful links |
| Join menus with | on |
|---|---|
| agents | menus.agent_assignments.assignee.id = agents.id menus.team_assignments.team.assignees.id = agents.id menus.team_assignments.team.id = agents.teams.id |
| agent_activity_logs | menus.agent_assignments.assignee.id = agent_activity_logs.agent_id menus.team_assignments.team.assignees.id = agent_activity_logs.agent_id |
| calls | menus.agent_assignments.assignee.id = calls.agent_info.id menus.team_assignments.team.assignees.id = calls.agent_info.id menus.agent_assignments.assignee.id = calls.transfers.from_agent.id menus.team_assignments.team.assignees.id = calls.transfers.from_agent.id menus.agent_assignments.assignee.id = calls.transfers.to_agent.id menus.team_assignments.team.assignees.id = calls.transfers.to_agent.id |
| chats | menus.agent_assignments.assignee.id = chats.transfers.from_agent.id menus.team_assignments.team.assignees.id = chats.transfers.from_agent.id menus.agent_assignments.assignee.id = chats.transfers.to_agent.id menus.team_assignments.team.assignees.id = chats.transfers.to_agent.id |
| teams | menus.team_assignments.team.id = teams.id |
agent_assignments ARRAY
| ||||||||||||||||||
deleted BOOLEAN | ||||||||||||||||||
hidden BOOLEAN | ||||||||||||||||||
id INTEGER | ||||||||||||||||||
menu_type STRING | ||||||||||||||||||
name STRING | ||||||||||||||||||
output_msg STRING | ||||||||||||||||||
parent_id INTEGER | ||||||||||||||||||
position INTEGER | ||||||||||||||||||
team_assignments ARRAY
|
Theteam_tree table contains info about team trees.
Full Table | |
Primary Key | id |
| Useful links |
agents_count INTEGER |
deleted BOOLEAN |
id INTEGER |
name STRING |
parent_id INTEGER |
position INTEGER |
Theteams table contains info about teams.
Full Table | |
Primary Key | id |
| Useful links |
agents_count INTEGER | ||||||
assignees ARRAY
| ||||||
deleted BOOLEAN | ||||||
id INTEGER | ||||||
name STRING | ||||||
parent_id INTEGER | ||||||
position INTEGER |
Theuser_statuses table contains info about user statuses.
Full Table | |
Primary Key | id |
| Useful links |
color STRING |
id INTEGER |
name STRING |
wfm_id INTEGER |
| Related | Troubleshooting |
Did this article help? If you have questions or feedback, feel free tosubmit a pull request with your suggestions,open an issue on GitHub, orreach out to us.