Skip to main content
karbon icon

Karbon Connector

SourceAPI DocsAPI ChangelogConnector Changelog

Description​

Karbon is a collaborative practice management platform for accounting firms. Karbon aligns your team with a single place to do your best work.

Use the Karbon component to manage your accounting firms.

API Documentation​

This components was built using the Karbon API Reference.

Connections​

API Key​

key: karbonApiKey

Karbon API Keys​

To obtain your Application ID and Access Key Follow these steps:

  1. Register for a Developer Account:

    • Register for a free developer account to create an application in Karbon and receive the Application ID.
    • Example: 00000000-0000-0000-0000-000000000000
  2. Find Your API Access Key:

    • Navigate to Settings -> Connected Apps -> Manage on your app in Karbon to find your Access Key.
    • Example: eyJ.....

Use these credentials in the connection.

InputNotesExample
Access Key

Get this by clicking Settings > Connected Apps > Manage on your app.

eyJ.....
Application ID

The application ID for the Karbon API. You receive this when you create an application in Karbon.

00000000-0000-0000-0000-000000000000

Triggers​

Entity Trigger​

Get notified to this flow when a Karbon entity changes | key: entityTrigger

InputNotesExample
Connection
Webhook Type

The type of the Webhook.

Contact

This trigger receives webhook notifications from Karbon when entities change. It automatically creates and manages a webhook subscription when the instance is deployed, and removes it when the instance is deleted.

How It Works​

  • On Instance Deploy: The trigger creates a webhook subscription in Karbon via POST /v3/WebhookSubscriptions, registering the instance endpoint to receive notifications for the selected entity type.
  • On Instance Deletion: The trigger removes the webhook subscription via DELETE /v3/WebhookSubscriptions/{webhookType}, ensuring no orphaned subscriptions remain.

When an entity of the configured type changes in Karbon, a notification is sent to the registered endpoint and the flow is invoked with the webhook payload.

Configuration​

  • Webhook Type (required): The type of entity to monitor for changes. Available options:
    • Contact
    • Work
    • Note
    • User
    • Invoice

Event Types​

The trigger fires when an entity of the selected type is created, updated, or otherwise modified in Karbon. The specific change details are included in the webhook payload delivered to the flow.

Returned Data​

The trigger passes the incoming webhook payload directly to the flow without transformation. The payload structure varies by webhook type and is determined by the Karbon API.

Notes​

  • Only one webhook type can be monitored per trigger instance. To monitor multiple entity types, configure separate flows with individual trigger instances.
  • For more information on the Karbon API, see the Karbon Developer Center and the Karbon API Reference.

Updated Records​

Retrieves existing and ongoing updated records from Karbon. Load history once, check for changes on a schedule, or both. | key: pollChangesTrigger

InputNotesExample
Connection
Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record modified on or after this date once.

2026-01-01
Resource Type

The type of Karbon resource to poll for updated records.

Contacts

This trigger retrieves existing and ongoing updated records from Karbon. Load history once, check for changes on a schedule, or both.

How It Works​

On each scheduled recurrence, the trigger fetches all records of the selected resource type from the Karbon API and filters them client-side for records whose modification timestamp is after the last poll time. All matching records land in the updated array — the Karbon API does not expose a creation timestamp, so no created/updated split is performed.

The Karbon REST API does not expose a server-side modification-date filter on list endpoints, so all records are fetched and timestamps are compared in the trigger after retrieval.

Initial sync

An initial sync seeds a complete starting state rather than a change feed. It begins on the first recurrence when the trigger has no stored position and a Look-back Date (YYYY-MM-DD) is set, and seeds every record modified on or after that date exactly once. Left empty, there is no sync and the trigger starts from its first recurrence.

The window has no fixed upper bound, so a record modified mid-drain is swept into the sync. The trigger fetches the full window in a single recurrence regardless of whether batching is enabled. Once all matching records have been emitted, the trigger stores the current time as its position and the first incremental recurrence resumes from exactly there. Without batching, all changes are returned in one payload. With batching, the resolver dispatches each record (or batch of records) as a separate execution within the same recurrence. Nothing in the payload marks the handoff.

Resource Type still applies throughout. The trigger has no input that narrows the change feed, so the sync ignores no inputs.

Batching

Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Karbon.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off, downstream steps read results.body.data.updated. With batching on, that field does not exist. Each execution receives a single { changeType, record } object. Any step reading the older shape must be updated before batching is enabled. Because batching is enabled per flow, the change is scoped to that flow.

Returned Data​

The trigger returns an object with an updated array containing records modified since the last poll. Fields shown are representative. The full response object includes additional properties.

Example Response
{
"updated": [
{
"@odata.type": "#KarbonService.ContactSummaryDTO",
"ContactKey": "29YXnqWcqCf3",
"FullName": "William John Connor",
"PreferredName": "Bill",
"Salutation": "Mr",
"ClientOwner": "rodney.muller@example.com",
"ClientManager": "jessica.tse@example.com",
"Address": "42 Galaxy Way, London",
"EmailAddress": "william.connor@example.com",
"PhoneNumber": "0987888686",
"RoleOrTitle": "COO",
"UserDefinedIdentifier": "73YEnqFcqCf3",
"LastModifiedDateTime": "2021-12-29T07:01:53Z"
}
]
}
Batched Item Shape

When batching is enabled, each execution receives a single item:

{
"changeType": "updated",
"record": {
"@odata.type": "#KarbonService.ContactSummaryDTO",
"ContactKey": "29YXnqWcqCf3",
"FullName": "William John Connor",
"LastModifiedDateTime": "2021-12-29T07:01:53Z"
}
}

Data Sources​

Select Contact​

Select a Contact from a dropdown menu | key: selectContact | type: picklist

InputNotesExample
Connection

Select Invoice​

Select an Invoice from a dropdown menu | key: selectInvoice | type: picklist

InputNotesExample
Connection

Select Organization​

Select an Organization from a dropdown menu | key: selectOrganization | type: picklist

InputNotesExample
Connection

Select User​

Select a User from a dropdown menu | key: selectUser | type: picklist

InputNotesExample
Connection

Select Work Item​

Select a Work Item from a dropdown menu | key: selectWorkItem | type: picklist

InputNotesExample
Connection

Actions​

Create a Contact​

Create a new contact | key: createContact

InputNotesExample
Additional Fields

Additional fields that are not covered by the standard inputs. See Karbon API documentation for more information.

{
  "Salutation": "Mr",
  "Suffix": "Jr.",
  "RestrictionLevel": "Public",
  "UserDefinedIdentifier": "BILLJR-001",
  "BusinessCards": [
    {
      "IsPrimaryCard": true,
      "OrganizationKey": "7NN1ySxv89B",
      "WebSites": [
        "www.website.one",
        "www.website.two"
      ],
      "EmailAddresses": [
        "sample@example.com",
        "sample.two@example.com"
      ],
      "RoleOrTitle": "COO",
      "FacebookLink": "facebook.com/sampleName",
      "LinkedInLink": "linkedin.com/sampleName",
      "TwitterLink": "twitter.com/sampleName",
      "SkypeLink": "skype.com/sampleName",
      "Addresses": [
        {
          "AddressLines": "45 Sample Street",
          "City": "Alexandria",
          "StateProvinceCounty": "NSW",
          "ZipCode": 2015,
          "CountryCode": "AU",
          "Label": "Physical"
        }
      ],
      "PhoneNumbers": [
        {
          "Number": 1234567890,
          "CountryCode": 61,
          "Label": "Work"
        }
      ]
    }
  ]
}
Connection
Contact's First Name

The first name of the Contact.

John
Contact's Last Name

The last name of the Contact.

Doe
Example Payload for Create a Contact⤓
Loading…

Create a Work Item​

Create a new Work Item | key: createWorkItem

InputNotesExample
Additional Fields

Additional fields that are not covered by the standard inputs. See Karbon API documentation for more information.

{
  "DueDate": "2022-01-30",
  "DeadlineDate": "2022-01-31",
  "WorkType": "Payroll",
  "WorkStatus": "Ready To Start - Send client requests",
  "WorkTemplateKey": "p56mtcBhwb9",
  "WorkScheduleKey": "4f3gHnLC323",
  "Description": "Send to Jo for review",
  "UserRoleAssignments": [
    {
      "RoleKey": "2mYzTtly89Lq",
      "UserProfileKey": "2Qy48WVCRBcP"
    }
  ],
  "ClientTaskRecipient": {
    "RecipientKey": "4ncPZ7q96SGc",
    "LinkType": "Organization",
    "EmailAddress": "acme@corp.com"
  },
  "FeeSettings": {
    "FeeType": "FixedFee",
    "FeeValue": 5150.2
  }
}
Assignee Email Address

The email address of the user to whom the Work Item is going to be assigned.

example@email.com
Client Key

A Karbon-generated value used to identify the existing Client (Contact, Organization or ClientGroup) for whom the Work Item is prepared.

p56mtcBhwb9
Client Type

The type of the Client.

Organization
Connection
Related Client Group Key

A Karbon-generated value used to identify the Client Group of the Client.

4f3gHnLC323
Start Date

The date and time at which the Work Item should start.

2022-01-30
Title

The title of the Work Item.

Work Item Title
Example Payload for Create a Work Item⤓
Loading…

Create User​

Create a new user | key: createUser

InputNotesExample
Connection
User's Email

The email of the User.

example@email.com
User's Name

The name of the User.

John Doe
Example Payload for Create User⤓
Loading…

Delete All Webhook Subscriptions​

Deletes all Webhook Subscriptions associated with Contact, Work, and Note | key: deleteAllWebhookSubscriptions

InputNotesExample
Connection
Example Payload for Delete All Webhook Subscriptions⤓
Loading…

Get Contact​

Get a single Contact by Contact key | key: getContact

InputNotesExample
Connection
Contactkey

The Contact key. to get the Contact for.

4jgPTtcXxwC2
Expand Business Cards

Whether to return the Business Card associated with the Contact.

false
Example Payload for Get Contact⤓
Loading…

Get Invoice​

Get an invoice by key | key: getInvoice

InputNotesExample
Connection
Include Line Items

Include additional lineitems invoice properties.

false
Invoice Key

The Invoice key to get the Invoice for.

M2dVbCt4RHk
Example Payload for Get Invoice⤓
Loading…

Get User​

Gets the details of a single User | key: getUser

InputNotesExample
Connection
User ID

The unique ID of the User to get.

2bYxtn94ZSdY
Example Payload for Get User⤓
Loading…

Get Webhook​

Get a webhook subscription associated with the Karbon entity specified | key: getWebhook

InputNotesExample
Connection
Webhook Type

The type of the Webhook.

Contact
Example Payload for Get Webhook⤓
Loading…

Get Work Item​

Gets a Work Item by Work Item key | key: getWorkItem

InputNotesExample
Connection
Work Item Key

The Work Item key to get the Work Item for.

2LPSrkzbYrn4
Example Payload for Get Work Item⤓
Loading…

List Contacts​

List all Contacts | key: listContacts

InputNotesExample
Filter

A filter expression to apply to the results. See Karbon API documentation for more information.

FullName eq 'Sample Management Team'
Order By

The property to order the results by.

FullName
Skip

The number of records to skip when looping over pages of results. If you fetch 100 results, you should skip 0 the first iteration, then 100, 200, 300, etc. until no more records are available.

100
Top

The number of records to return at once.

50
Connection
Get All Data

Turn this on to retrieve all pages of data. $top and $skip will be ignored.

false
Example Payload for List Contacts⤓
Loading…

List Invoices​

List invoices | key: listInvoices

InputNotesExample
Order By

The property to order the results by.

FullName
Connection
Include Line Items

Include additional lineitems invoice properties.

false
Example Payload for List Invoices⤓
Loading…

List Users​

Get a list of Users | key: listUsers

InputNotesExample
Filter

A filter expression to apply to the results. See Karbon API documentation for more information.

FullName eq 'Sample Management Team'
Skip

The number of records to skip when looping over pages of results. If you fetch 100 results, you should skip 0 the first iteration, then 100, 200, 300, etc. until no more records are available.

100
Top

The number of records to return at once.

50
Connection
Get All Data

Turn this on to retrieve all pages of data. $top and $skip will be ignored.

false
Example Payload for List Users⤓
Loading…

List Work Items​

Receive a list of work items from your tenant | key: listWorkItems

InputNotesExample
Filter

A filter expression to apply to the results. See Karbon API documentation for more information.

FullName eq 'Sample Management Team'
Order By

The property to order the results by.

FullName
Skip

The number of records to skip when looping over pages of results. If you fetch 100 results, you should skip 0 the first iteration, then 100, 200, 300, etc. until no more records are available.

100
Top

The number of records to return at once.

50
Connection
Get All Data

Turn this on to retrieve all pages of data. $top and $skip will be ignored.

false
Example Payload for List Work Items⤓
Loading…

Raw Request​

Send raw HTTP request to Karbon | key: rawRequest

InputNotesExample
Connection
Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/v3/ClientGroups), The base URL is already included (https://api.karbonhq.com). For example, to connect to https://api.karbonhq.com/v3/ClientGroups, only /v3/ClientGroups is entered in this field.

/v3/ClientGroups
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

Update a Contact​

Partially update a contact by Contact key | key: updateContact

InputNotesExample
Connection
Contactkey

The Contact key. to update the Contact for.

4jgPTtcXxwC2
Contact's First Name

The first name of the Contact.

John
Contact's Last Name

The last name of the Contact.

Doe
Contact's Middle Name

The middle name of the Contact.

John
Contact's Preferred Name

The preferred name of the Contact.

John
Contact's Salutation

The title to address the Contact.

Mr
Contact's Suffix

The suffix of the Contact.

Jr.
Example Payload for Update a Contact⤓
Loading…

Update Work Item​

Partially update a Work Item by Work Item key | key: updateWorkItem

InputNotesExample
Connection
Deadline Date

The deadline of the workitem as ISO8601 formated datestamp or timestamp

2022-01-30
Description

A free form text field to add more information about the Work Item

This is a description.
Work Item Key

The Work Item key to update a Work Item by.

2LPSrkzbYrn4
Example Payload for Update Work Item⤓
Loading…

Changelog​

2026-10-20​

Updated the Updated Records polling trigger with batching and initial sync support:

  • Added opt-in batching to the Updated Records trigger, dispatching each changed record individually or in configured batches; enabling it changes the shape a downstream step receives
  • Added an optional Look-back Date input for performing an initial sync of records. The initial sync begins on the first recurrence and backfills every record modified on or after the specified date, seeding each once; later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill

2026-06-11​

Added the Updated Records polling trigger for Contacts and Invoices, which checks for contacts or invoices modified since the last run

2026-04-30​

Updated spectral version

2026-04-07​

Added trigger documentation

2026-03-31​

Various modernizations and documentation updates

2026-03-16​

Improved input field documentation with formatted URL links for better readability

2025-10-17​

Enhanced webhook lifecycle management with improved entity trigger handling and subscription management

2025-09-18​

Added inline data sources for contacts, invoices, organizations, users, and work items to improve data selection and workflow integration