Autotask sync: the complete field-mapping reference
If you run Autotask, you already know its entity model: Companies, Contacts, Projects, Phases, Tasks, Tickets, Resources, TimeEntries, Contracts, and more. This page is the field-level reference for exactly how each Autotask entity maps into Current, which direction data flows, and who wins when both sides have touched the same field. Bookmark it — you'll come back to it.
For the plain-language version of how the connection is set up, see "Connect Autotask and choose what syncs". For the philosophy behind who owns what, see "Our methodology: your PSA stays the source of truth". For the schedule these pulls run on, see "How often does Current sync? Every schedule, in one table".
How zone discovery works
Autotask's REST API doesn't have one fixed address — each Autotask database lives on a numbered "zone," and your API credentials only work once Current knows which zone to call. When you first connect Autotask, Current calls Autotask's public zone-lookup endpoint with your API username. Autotask returns the correct API base URL and zone name for your account, and Current stores that base URL (not a secret) alongside your connection. Every sync call after that goes straight to your zone — there's no repeated lookup per request.
Companies
Companies are pulled from Autotask into the company record — this direction never reverses. Current never creates or edits a Companies record back in Autotask for existing synced accounts.
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Companies.id | Autotask company link (id) | pull only | Autotask |
| Companies.companyName | Company name | pull only | Autotask — unless you've renamed the company in Current and that rename hasn't synced back yet, in which case your edit is protected until it does |
| Companies.ownerResourceID | Account manager | pull only | fills only when empty — never overwrites an account manager you've set in Current |
| Companies.phone | Phone | pull only | Autotask |
| Companies.webAddress | Website | pull only | Autotask |
| Companies.address1 / address2 | Address lines 1 & 2 | pull only | Autotask |
| Companies.city / state / postalCode | City / State / Postal code | pull only | Autotask |
| Companies.companyType (picklist) | Company type | pull only | Autotask |
| Companies.classification (picklist) | Classification | pull only | Autotask |
| Companies.marketSegmentID (picklist) | Market segment and industry | pull only | Autotask when the field is set — a segment is never cleared to blank once Current has one |
| Companies UDF: HubSpot Company Record ID | HubSpot link (if you also use HubSpot import) | pull only | Autotask |
Current-only fields that live on the company record — like total MRR, MRR at risk, and lead source — have no Autotask equivalent and are never pushed. See "Mapping CRM industries to Autotask Market Segments" for how the market segment picklist specifically becomes the industry shown on the company record.
Contacts
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Contacts.id | Contact link (id) | pull + push (new contacts) | — |
| Contacts.firstName / lastName | First name / Last name / full name | pull only | Autotask |
| Contacts.title | Title | pull only | Autotask |
| Contacts.emailAddress | pull only | Autotask | |
| Contacts.phone | Phone | pull only | Autotask |
| Contacts.mobilePhone | Mobile phone | pull only | Autotask |
| Contacts.primaryContact | Primary contact flag | pull only | Autotask (defaults to no if a zone doesn't expose this field) |
| Contacts.isActive | Active | pull only | Autotask |
A contact you create in the CRM (in Current) is pushed to Autotask as a new Contacts record under that company. Once a contact exists in both systems, ongoing field refreshes (name, title, email, phone) still pull from Autotask — Autotask is the system of record for who a contact is.
Projects
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Projects.id | Project link (id) | two-way | — |
| Projects.projectNumber | Project number | pull only | Autotask |
| Projects.projectName | Project name | two-way | Autotask |
| Projects.companyID | Linked company | pull only | Autotask |
| Projects.contractID | Linked contract name | pull only | Autotask |
| Projects.status (picklist) | Project status (active/completed) | pull only | Autotask, backed up by a completed date or 100% completion if the status label is ambiguous |
| Projects.completedPercentage | Progress | pull only | Autotask |
| Projects.endDateTime | Due date | pull only | Autotask |
| Projects.projectCostsRevenue / projectCostsBudget | Budget used % | pull only | Autotask |
| Projects.estimatedTime | Budget hours | pull only | Autotask |
| Projects.laborEstimatedRevenue | Budget amount | pull only | Autotask |
| Projects.projectType (picklist) | Project type / template flag | pull only | Autotask |
| — (no Autotask field) | Project health indicator | Current-only | Current |
Building a Current-native project in Autotask (from a playbook, template, or won quote) creates a new Autotask project by pushing project name, linked company, start/end dates, and the required type/status picklists. See "Building projects in your PSA from a template or won quote" and "Project modes: PSA-synced or Current-native" for when this conversion happens and why it's permanent.
Phases
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Phases.id | Phase link (id) | pull only | Autotask |
| Phases.projectID | Parent project | pull only | Autotask |
| Phases.title | Phase name | pull only | Autotask |
Phases are read-only from Autotask's side — Current doesn't create or rename Autotask phases. See "Organize work with phases and tasks" for how phases work day to day.
Tasks
Tasks carry the most fields of any synced entity, because task scheduling is where Current adds the most value over Autotask's own project module.
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Tasks.id / taskNumber | Task link / task number | pull only | Autotask |
| Tasks.status (picklist) | Task status (backlog/in progress/review/done) | two-way (see below) | depends on your two-way sync setting |
| Tasks.phaseID | Parent phase | pull only | Autotask |
| Tasks.title | Task name | pull only | Autotask |
| Tasks.startDateTime / endDateTime | Start date / End date | two-way (with two-way sync on) | last editor wins, per date — a reschedule in Autotask flows back into Current; a Current reschedule pushes out to Autotask. Start and end are tracked independently. A date set in Autotask where Current had none comes through, and a date you clear in Current stays cleared. With two-way sync off, Current owns dates and only pushes them out. |
| Tasks.description | Description | two-way (with your two-way sync setting on) | last editor wins, by timestamp |
| Tasks UDF: Partner Facing | Partner-visible flag | pull only | Autotask |
| Tasks UDF: Issue / Issue Reported By | Issue text / reported by | pull only | Autotask |
| Tasks UDF: Change Order Hours | Change order hours | pull only | Autotask |
| Tasks.purchaseOrderNumber | PO number | pull only | Autotask |
| Tasks.isVisibleInClientPortal | Visible to partner | pull only | Autotask |
| Tasks.canClientPortalUserCompleteTask | Partner can complete | pull only | Autotask |
| Tasks.priority | Priority order | two-way (with the setting on) | last editor wins |
| Tasks.estimatedHours | Estimated hours | two-way (with the setting on) | last editor wins |
| Tasks.hoursToBeScheduled | Hours to schedule | pull only | Autotask |
| Tasks.remainingHours | Remaining hours | pull only | Autotask |
| Tasks.isTaskBillable | Billable flag | pull only | Autotask |
| Tasks.assignedResourceID / assignedResourceRoleID | Assignee / assignee role | two-way | see Secondary Resources below |
| Tasks.taskType (picklist) | Task type | two-way (with the setting on) | last editor wins |
| Tasks.departmentID (picklist) | Department | two-way (with the setting on) | last editor wins |
| TaskSecondaryResources (child) | Secondary assignees | two-way | see below |
| TaskAttachments (child, count only) | Attachment count | pull only | Autotask |
| ServiceCallTasks (child, count only) | Scheduled service call count | pull only | Autotask |
Task dates are Current's biggest ownership claim: after the very first pull, Current's dependency-aware scheduler owns start and end dates, and pushes them to Autotask — not the reverse. See "What is a critical path (and how Current finds it)" and "The Timeline view: drag to reschedule, and back-scheduling" for how those dates get set.
The two-way sync setting, and how task conflicts are resolved
By default, two-way sync is off, and task fields simply refresh from Autotask on every pull. Turn it on in Settings → Integrations → Autotask, and six specific task fields become genuinely bidirectional: status, description, task type, department, estimated hours, and priority.
With two-way sync on, Current compares each field individually: if the incoming Autotask value is different from what Current last saw, and Autotask's own last-activity timestamp is newer than your last edit to that field in Current, Autotask's value wins. If your Current edit is more recent, it's kept — and the Autotask value is not marked as "seen," so a real change on the Autotask side that got deferred will still surface and be applied later rather than silently disappearing.
Secondary resources
Autotask's TaskSecondaryResources are pulled into the task's list of assignees beyond the primary. When you change assignees in Current — adding or removing someone from a task — Current reconciles the whole list back to Autotask: newly added people are created as secondary resources, and removed people are deleted from Autotask's side. Current automatically picks a role each resource is actually eligible for in Autotask, so you don't get a role-mismatch rejection.
Tickets
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Tickets.id / ticketNumber | Ticket link / ticket number | pull only | Autotask |
| Tickets.title | Ticket name | pull only | Autotask |
| Tickets.description | Description | pull only | Autotask |
| Tickets.status (picklist) | Status (open/assigned/pending/resolved/closed) | two-way for status only | see "push status" below |
| Tickets.assignedResourceID | Assignee | pull only | Autotask |
| Tickets.dueDateTime | Due date | pulled once, then Current-owned | Current after import |
| Tickets.completedDateTime | Resolved date | pull only | Autotask |
| Tickets.createDate | Created date | pull only | Autotask |
| Tickets.resolution | Resolution notes | pull only | Autotask |
| Tickets.estimatedHours | Estimated hours | pull only | Autotask |
| Tickets.priority (picklist) | Priority | pull only | Autotask |
You can change a ticket's status from Current, which pushes back to Autotask. See "Logging time on a ticket vs. a task" for how ticket time entries work.
Resources (your staff)
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Resources.id | Resource link (id) | pull only | Autotask |
| Resources.firstName + lastName | Name | pull only | Autotask |
| Resources.title | Role | pull only | Autotask |
| Resources.isActive | Active | pull only | Autotask |
| Resources.email / userName | pull only | Autotask | |
| Resources.internalCost | Internal cost rate | pull only | Autotask (a 0 or missing value is treated as "not provided" and never overwrites a rate you've entered by hand) |
Resources are matched to Current user accounts by email, which is what drives account-manager and deal-owner auto-matching in the CRM. Internal cost rates feed "Holidays and employee costs: where the numbers come from."
Time entries
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| TimeEntries.id | Time entry link (id) | two-way | — |
| TimeEntries.resourceID | Logged-by user | two-way | — |
| TimeEntries.taskID / ticketID | Linked task or ticket | two-way | — |
| TimeEntries.dateWorked | Date worked | two-way | Autotask |
| TimeEntries.hoursWorked | Hours | two-way | Autotask |
| TimeEntries.startDateTime / endDateTime | Start/end time | two-way | — |
| TimeEntries.summaryNotes | Summary | two-way | Autotask |
| TimeEntries.billingApprovalDateTime | Approval status | pull-back after push (read-back) | Autotask — Current only ever promotes to approved, never demotes |
See "Logging time and how it reaches your PSA's billing" for the full time-entry-to-billing flow, and the companion article "What Current writes back to Autotask (and when)" for exactly what's included on the outbound time entry push.
Contracts and services
Contracts and their services are inbound only — Current reads your Autotask contracts to power revenue and coverage reporting, and never edits a contract.
| Autotask field | Becomes in Current | Direction | Who wins |
|---|---|---|---|
| Contracts.id | Contract link (id) | pull only | Autotask |
| Contracts.companyID | Linked company | pull only | Autotask |
| Contracts.contractName | Contract name | pull only | Autotask |
| Contracts.startDate / endDate | Start / end date | pull only | Autotask |
| Contracts.contractType (picklist) | Contract type + recurring flag | pull only | Autotask |
| Contracts.contractCategory (picklist) | Category | pull only | Autotask |
| Contracts.status (picklist) | Status | pull only | Autotask |
| Contracts.contractPeriodType (picklist) | Billing period (monthly/quarterly/semi-annual/annual/one-time) | pull only | Autotask |
| ContractServiceUnits.units | Unit count (for active recurring contracts) | pull only | Autotask |
| ContractServices.unitPrice | Unit price | pull only | Autotask |
| ContractServices.isActive | Service active flag | pull only | Autotask |
| Services.name (via serviceID) | Service name | pull only | Autotask |
Holidays
Autotask holidays (from your configured holiday sets) pull in as read-only calendar entries — date and name — used by the scheduler to avoid booking work on days off. See "PTO and availability-aware scheduling in the Timeline". If your Autotask zone doesn't expose the Holidays entity, this pull is skipped quietly rather than failing your whole sync.
Notes
Company notes are the one entity where Autotask and Current genuinely share write access, with a simple rule: whichever side authored a note owns it. Notes pulled in from Autotask get refreshed on re-sync; notes you write in Current and push to Autotask are left alone by later Autotask pulls. Notes you push from Current are always created as internal — a pushed note never becomes visible on the Autotask client portal.
Picklists and status mapping
Autotask's various status and type fields are picklists — numeric ids with zone-specific labels. Current resolves these live from Autotask's field metadata (not a hardcoded list), so a picklist you've customized in Autotask is read correctly. Task and ticket status specifically collapse Autotask's many possible labels into Current's own simplified stages (backlog/in progress/review/done for tasks; open/assigned/pending/resolved/closed for tickets) by matching keywords in the label — a status labeled anything containing "complete" becomes done, anything with "progress" becomes in progress, and so on. The original Autotask status id is always kept alongside the simplified stage, so nothing is lost in translation.
What's deliberately not synced
- +Company, contract, contract-service, company-ticket, and company-note pulls are all read-only by design — Current never patches these Autotask records except through the specific CRM push flows described in "What Current writes back to Autotask (and when)".
- +Project health scores are Current-only — there's no Autotask equivalent field.
- +Total MRR, MRR at risk, and renewed MRR shown in the CRM are computed in Current and never pushed to any Autotask field.
- +Task worked-hours are computed from real logged time entries, never from Autotask's estimated/remaining hours math.
- +Calendar appointments only sync as a generic "busy" marker — the real appointment subject line is never pulled, so a private subject never leaks tenant-wide.
- +Once imported, ticket due dates and assignment become Current-owned and are not overwritten by later Autotask pulls.
