Skip to main content

Uptick

Extract data from Uptick, a field service management platform designed for the fire protection industry.

Prerequisites​

The connector authenticates with the Uptick API using OAuth 2.0 with the password grant, so you need both an OAuth application and an Uptick user account:

  • Your Uptick instance URL, for example https://yourcompany.onuptick.com.
  • An OAuth Client ID and Client Secret generated from your Uptick instance.
  • The email address and password of an Uptick user account. The connector signs in as this user, so the account must have permission to view every resource you want to sync.

To generate the OAuth credentials, go to Control Panel > Uptick API in your Uptick instance, select Create Application, provide a name, and save. Uptick generates the Client ID and Client Secret for you. For step-by-step instructions, see Uptick API - Getting started.

Configuration​

InputTypeDescriptionDefault Value
base_urlstringRoot URL of your Uptick workspace, for example https://yourcompany.onuptick.com. The connector keeps only the host and always connects over HTTPS, so any scheme, path, or trailing slash you enter is ignored.
client_idstringOAuth Client ID generated from Control Panel > Uptick API.
client_secretstringOAuth Client Secret generated from Control Panel > Uptick API.
usernamestringEmail address for an Uptick user account with API access. Synced data is limited to what this user can see in Uptick.
passwordstringPassword for the Uptick user account.
num_workersintegerNumber of concurrent requests. Higher values speed up syncs but increase the chance of Uptick rate limiting. Allowed range 1–10.3
max_requests_per_minuteintegerGlobal request budget shared by all streams and threads. Uptick publishes no numeric limit; 60 is a conservative default. Allowed range 1–600.60

Streams​

The Uptick connector syncs data from the following streams, organized by functional area:

Core business entities​

  • tasks - Work tasks and maintenance requests with scheduling, priority, and assignment details
  • taskcategories - Categories for organizing tasks
  • tasksessions - Time tracking entries for work performed on tasks
  • rounds - Work rounds for technician scheduling and route management
  • projects - Project management entities for larger initiatives
  • clients - Customer organizations and contact information
  • clientgroups - Client organization groupings
  • clientcontacts - Contact people associated with clients
  • properties - Physical locations where work is performed
  • propertycontacts - Contact people associated with properties
  • contractors - External service providers and subcontractors
  • users - System users including technicians and staff
  • servicegroups - Service categorization for organizing work types

Financial and billing​

  • invoices - Customer invoices and billing information
  • invoicelineitems - Individual line items within invoices
  • creditnotes - Credit notes for refunds and adjustments
  • creditnotelineitems - Line items within credit notes
  • billingcards - Billing card information for cost allocation
  • billingcontracts - Recurring billing contracts for ongoing services
  • billingcontractlineitems - Line items within billing contracts
  • costcentres - Cost center assignments for financial tracking
  • task_profitability - Profitability metrics and financial performance data for tasks

Purchasing and supply chain​

  • purchaseorders - Purchase orders for materials and services
  • purchaseorderlineitems - Individual items within purchase orders
  • purchaseorderbills - Bills received for purchase orders
  • purchaseorderbilllineitems - Line items within purchase order bills
  • purchaseorderdockets - Delivery dockets for purchase orders
  • suppliers - Vendor and supplier information
  • products - Products and materials catalog

Asset management and inspections​

  • assets - Physical assets requiring maintenance and inspection
  • assettypes - Categories and specifications for asset types
  • assettypevariants - Variants and configurations of asset types
  • routines - Scheduled maintenance and inspection routines
  • routineservices - Routine service configurations for properties and assets
  • routineservicelevels - Service level definitions for routine services
  • routineservicetypes - Types and categories of routine services
  • routineserviceleveltypes - Service level type classifications
  • majorservices - Major service records for assets
  • servicetasks - Individual work activities on tasks
  • subtasks - Links programme maintenance routines to tasks
  • remarks - Issues, defects, and observations during inspections
  • remarkevents - Events and actions taken on remarks
  • promptquestions - Prompt questions asked during service report completion
  • promptanswergroups - Groupings of prompt answers per service task and section
  • promptanswers - Individual answers to prompt questions
  • appointments - Scheduled appointments for work and inspections

Quality and compliance​

  • accreditations - Technician certifications and qualifications
  • accreditationtypes - Types of certifications and accreditations

Sales​

  • servicequotes - Quotes for service work
  • servicequotefixedlineitems - Fixed price line items within service quotes
  • servicequotedoandchargelineitems - Do-and-charge line items within service quotes
  • servicequoteproductlineitems - Product line items within service quotes
  • defectquotes - Quotes for remedial work on identified defects
  • defectquotelineitems - Line items within defect quotes

Organization and location​

  • branches - Business locations and organizational units

Stream details​

Stream NamePrimary KeyPaginationSupports Full SyncSupports Incremental
tasksidDefaultPaginator✅✅
taskcategoriesidDefaultPaginator✅❌ (no soft delete)
clientsidDefaultPaginator✅❌ (no soft delete)
clientgroupsidDefaultPaginator✅❌ (no soft delete)
propertiesidDefaultPaginator✅❌ (no soft delete)
invoicesidDefaultPaginator✅❌ (no soft delete)
projectsidDefaultPaginator✅❌ (no soft delete)
servicequotesidDefaultPaginator✅❌ (no soft delete)
defectquotesidDefaultPaginator✅❌ (no soft delete)
suppliersidDefaultPaginator✅❌ (no soft delete)
purchaseordersidDefaultPaginator✅❌ (no soft delete)
purchaseorderlineitemsidDefaultPaginator✅❌ (no soft delete)
assetsidDefaultPaginator✅✅
routinesidDefaultPaginator✅❌ (no soft delete)
billingcardsidDefaultPaginator✅❌ (no soft delete)
purchaseorderbillsidDefaultPaginator✅❌ (no soft delete)
purchaseorderbilllineitemsidDefaultPaginator✅❌ (no soft delete)
purchaseorderdocketsidDefaultPaginator✅❌ (no soft delete)
invoicelineitemsidDefaultPaginator✅❌ (no soft delete)
usersidDefaultPaginator✅❌ (no soft delete)
servicegroupsidDefaultPaginator✅❌ (no soft delete)
costcentresidDefaultPaginator✅❌ (no soft delete)
accreditationtypesidDefaultPaginator✅❌ (no soft delete)
accreditationsidDefaultPaginator✅❌ (no soft delete)
branchesidDefaultPaginator✅❌ (no soft delete)
creditnotesidDefaultPaginator✅✅
creditnotelineitemsidDefaultPaginator✅✅
remarksidDefaultPaginator✅✅
assettypesidDefaultPaginator✅✅
assettypevariantsidDefaultPaginator✅✅
productsidDefaultPaginator✅✅
roundsidDefaultPaginator✅✅
tasksessionsidDefaultPaginator✅❌ (no soft delete)
contractorsidDefaultPaginator✅❌ (no soft delete)
appointmentsidDefaultPaginator✅❌ (no soft delete)
billingcontractsidDefaultPaginator✅❌ (no soft delete)
billingcontractlineitemsidDefaultPaginator✅❌ (no soft delete)
defectquotelineitemsidDefaultPaginator✅❌ (no soft delete)
servicequotefixedlineitemsidDefaultPaginator✅❌ (no soft delete)
servicequotedoandchargelineitemsidDefaultPaginator✅❌ (no soft delete)
servicequoteproductlineitemsidDefaultPaginator✅❌ (no soft delete)
remarkeventsidDefaultPaginator✅❌ (no soft delete)
routineservicesidDefaultPaginator✅❌ (no soft delete)
routineservicelevelsidDefaultPaginator✅❌ (no soft delete)
routineservicetypesidDefaultPaginator✅❌ (no soft delete)
routineserviceleveltypesidDefaultPaginator✅❌ (no soft delete)
servicetasksidDefaultPaginator✅✅
subtasksidDefaultPaginator✅✅
task_profitabilitytask_idDefaultPaginator✅✅
clientcontactsidDefaultPaginator✅❌ (no soft delete)
propertycontactsidDefaultPaginator✅❌ (no soft delete)
promptquestionsidDefaultPaginator✅✅
promptanswergroupsidDefaultPaginator✅❌ (no soft delete)
promptanswersidDefaultPaginator✅❌ (no soft delete)
majorservicesidDefaultPaginator✅❌ (no soft delete)

API version and fields​

Every stream except task_profitability reads a pinned Uptick endpoint under /api/v2.15/. The task_profitability stream reads the intelligence report at /api/v2/intelligencereports/profitability_by_task/, which resolves to whichever minor version Uptick currently treats as the latest.

Each stream requests a fixed list of fields using Uptick's sparse fieldsets, so a stream carries a curated subset of what the endpoint can return rather than every field. Fields that Uptick adds later show up only after the connector is updated. Uptick keeps roughly three minor API versions live at a time and retires the oldest, so connector releases that move to a newer minor version can add, rename, or remove fields. The Uptick API patch notes list what changed in each version.

Attribute values​

Uptick returns each record as a JSON:API object with an attributes block. The connector copies every attribute to the top level of the record without changing its value, and also keeps the original attributes object. Monetary and other decimal fields arrive as strings with the precision Uptick sends, such as "10.00", and attributes that Uptick returns as null land as null in your destination.

Before version 1.2.0, the connector re-rendered each attribute through a template, which reformatted decimal strings ("10.00" became "10.0") and turned null into the string "None". If you filter or join on those fields downstream, check for both representations in data synced before you upgraded.

Relationship fields​

Uptick returns related records in a JSON:API relationships object. The connector flattens each relationship into a scalar <relationship>_id column, such as client_id on clientcontacts or property_id on propertycontacts. Use these columns to join streams in your destination.

Prompt data spans three streams, and Uptick reworked its prompt model in API v2.15, so those joins are worth spelling out:

  • promptanswers.answergroup_id joins promptanswergroups.id, and promptanswers.question_id joins promptquestions.id.
  • promptanswergroups.servicetask_id and promptanswergroups.task_id tie a group of answers back to the service task or task the answers were recorded against.
  • promptquestions.section_id and promptanswergroups.section_id reference Uptick prompt sections. The connector doesn't sync prompt sections, so you can't resolve these IDs to section names from synced data alone.

Incremental sync​

For streams that support incremental sync, the connector uses each record's updated timestamp as the cursor and fetches only records changed since the last sync through the Uptick API's updatedsince filter. Streams that support only full refresh are re-read in full on every sync.

The servicegroups and accreditationtypes endpoints ignore the updatedsince filter and always return every row. For these two streams, the connector requests the full table on every sync and then drops records whose updated value is older than the saved cursor before emitting them. Sync time and API usage for these streams don't shrink in incremental mode, but from version 1.2.0 the connector no longer re-emits unchanged rows on every incremental sync.

Airbyte still offers incremental sync in the UI for the streams marked ❌ (no soft delete), because the connector defines the updated cursor for every stream. Avoid it for those streams: their Uptick endpoints don't report deletions, so an incremental sync keeps records in your destination after they're deleted in Uptick. Sync them in full refresh mode instead.

Rate limits and performance​

Uptick enforces rate limits and reasonable-use guidelines on its API but doesn't publish a numeric limit. Uptick states that it can revoke API access without notice for applications that violate these limits, so raise the connector's request rate cautiously.

Two settings control how fast the connector reads from Uptick:

  • max_requests_per_minute sets a single request budget that all streams and threads share. The default of 60 requests per minute is a conservative value that Airbyte chose, and it's the throughput ceiling for the whole sync. Large workspaces with millions of records can sync more slowly than they did before version 1.3.0. If Uptick confirms your workspace tolerates more traffic, raise this value. If Uptick returns HTTP 429 responses, lower it.
  • num_workers sets how many requests run at the same time. The default is 3 and the maximum is 10. Because every request still counts against max_requests_per_minute, adding workers only speeds up a sync when slow API responses keep the connector from using its full per-minute budget.

When Uptick throttles a request and returns a Retry-After header, the connector waits the indicated time before retrying. If the header asks for a wait of 30 minutes or longer, the connector fails the stream with a rate-limit error instead of waiting. Without a Retry-After header, the connector backs off exponentially. The connector retries a failed request up to five times.

To reduce API usage, sync only the streams you need and schedule syncs no more often than your reporting requires.

Troubleshooting​

  • Invalid credentials. Uptick rejects a wrong username or password with invalid_grant, and a wrong client ID or client secret with invalid_client. The connector reports these as configuration errors without retrying. Check the four credential fields, and confirm that the OAuth application still exists under Control Panel > Uptick API.
  • HTTP 401 during a sync. Uptick access tokens can expire or be revoked during a long sync. When a stream request returns HTTP 401, the connector requests a new token and retries the request once. If the retry also fails, or if Uptick rejects the new token request because the password changed during the sync, the sync fails with a configuration error. Update the credentials and run the sync again.
  • HTTP 403. The Uptick user that the connector signs in as doesn't have permission to read the endpoint behind a stream. The connector fails with a configuration error instead of retrying. Grant the user access to that data in Uptick, or deselect the stream.

IP allow list​

If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.

Reference​

Config fields reference

Field
Type
Property name
string
base_url
string
client_id
string
client_secret
string
password
string
username
integer
max_requests_per_minute
integer
num_workers

Changelog​

Expand to review
VersionDatePull RequestSubject
1.3.12026-09-2987373Update dependencies
1.3.02026-09-2886356Add configurable max_requests_per_minute budget (default 60/min), refresh expired tokens mid-sync, and normalize base_url. The default max_requests_per_minute (60) is conservative; large tenants (millions of records) may see slower syncs than 1.2.1 — raise the value if Uptick tolerates it
1.2.12026-09-2286843Update dependencies
1.2.02026-09-2186363Emit attribute values verbatim (preserve decimal strings and nulls) and allow null on attribute fields; servicegroups/accreditationtypes now honour incremental state client-side (Uptick ignores updatedsince) — previously every sync re-emitted the full table, so append-only destinations will see fewer duplicate rows per sync
1.1.32026-09-1586280Update dependencies
1.1.22026-09-0885702Update dependencies
1.1.12026-08-1884790Update dependencies
1.1.02026-08-1283710Add 6 new streams (clientcontacts, propertycontacts, promptquestions, promptanswergroups, promptanswers, majorservices), add fields to the clients, properties, invoices, defectquotes, servicequotes, users, and purchaseorders streams, and make relationship field extraction null-safe
1.0.32026-08-1184162Update dependencies
1.0.22026-08-0483652Update dependencies
1.0.12026-07-2883098Update dependencies
1.0.02026-07-2173740Upgrade the Uptick API to v2.15 and remove deprecated fields from the branches, defectquotelineitems, servicetasks, and tasksessions streams
0.5.162026-07-2182628Update dependencies
0.5.152026-07-1481991Update dependencies
0.5.142026-06-3081268Update dependencies
0.5.132026-06-2380682Update dependencies
0.5.122026-06-1680076Update dependencies
0.5.112026-06-0979539Update dependencies
0.5.102026-06-0279025Update dependencies
0.5.92026-04-2877504Update dependencies
0.5.82026-04-2176809Update dependencies
0.5.72026-03-3175703Update dependencies
0.5.62026-03-1775044Update dependencies
0.5.52026-03-1074493Update dependencies
0.5.42026-02-2473926Update dependencies
0.5.32026-02-2372302Add fields to defectquotes and projects streams
0.5.22026-02-1773433Update dependencies
0.5.12026-02-1073007Update dependencies
0.5.02026-01-2271122Add invoice_id to invoicelineitems, and add 6 new streams: servicetasks, routineservices, routineservicelevels, routineservicetypes, routineserviceleveltypes, subtasks
0.4.32026-01-2072056Update dependencies
0.4.22026-01-1471437Update dependencies
0.4.12025-12-1870713Update dependencies
0.4.02025-12-1068194Remove expensive calculation fields from tasksessions, add more streams, including task profitability
0.3.92025-11-2570176Update dependencies
0.3.82025-11-1869684Update dependencies
0.3.72025-10-2968880Update dependencies
0.3.62025-10-2168365Update dependencies
0.3.52025-10-1767585Remove projectsectiontask and add more incremental sync streams
0.3.42025-10-1467855Update dependencies
0.3.32025-10-0767515Update dependencies
0.3.22025-10-0367020Remove start_date, include more task fields
0.3.12025-09-3066839Update dependencies
0.3.02025-09-2566410Add more streams
0.2.42025-09-2466598Update dependencies
0.2.32025-09-0965733Update dependencies
0.2.22025-09-0765534Add extra_fields to property stream
0.2.12025-08-2465445Update dependencies
0.2.02025-08-22Update task profitability stream to use start_date parameter
0.0.112025-08-2165061Add users and task profitability streams
0.0.102025-08-1564942Fix docker image entrypoint for platform syncs
0.0.92025-08-1464170adds cursor pagination, incremental sync and rate limiting
0.0.82025-08-1064845Update dependencies
0.0.72025-08-0264403Update dependencies
0.0.62025-07-2664055Update dependencies
0.0.52025-07-2063685Update dependencies
0.0.42025-07-1263165Update dependencies
0.0.32025-07-0562739Update dependencies
0.0.22025-06-2862220Update dependencies
0.0.12025-06-10Initial release by @sajarin via Connector Builder