Harvest ON THIS PAGE
Harvest is a time tracking and management software with reporting and streamlined online invoicing.
Harvest integration replicates data using the Harvest REST API V2 .
See the
Schema section for a list of objects available for replication.
Feature snapshot
A high-level look at this connector, including useful links, and supported features.
Preparing for authentication To access your data, you need to authenticate the connection with your account credentials.
Information note Make sure that the account you use has read access to the tables you want to fetch.
To generate the client ID and client secret:
Log into your Harvest Developers account. Select the OAuth app you want to use, or create a new one. Make sure Authorized Redirect URIs is set to https://connector.qlik.com/auth/oauth/v3.htm . Click Save . As the client ID and client secret are displayed only once, copy and paste them to a secured file. Creating the connection For more information, see Connecting to SaaS applications .
Click Authenticate when you have filled in the required connection settings.
You may be asked to log in to the source application.
A window is displayed with an authentication code.
Copy the code to the clipboard and return to the connection dialog.
Paste the code in Complete authentication with the code provided by the source and click Verify .
Tip note You may need to scroll down to see this field.
When status is Verified , the authentication is verified.
Provide a name for the connection in Connection name .
Select Open connection metadata to define metadata for the connection when it has been created.
Connection settings Setting Description Data gateway
Select a Data Movement gateway if required by your use case.
Information note This field is not available with the Qlik Talend Cloud Starter subscription, as it does not support Data Movement gateway . If you have another subscription tier and do not want to use Data Movement gateway , select None .
For information on the benefits of Data Movement gateway and use cases that require it, see Qlik Data Gateway - Data Movement .
Start Date Enter the date, in the format MM/DD/YYYY
, from which the data must be replicated from your source to your target.
Account Name Account name. For example: the account name of qlik.harvestapp.com would be qlik . Client ID Client ID. Client Secret Client secret.
SchemaInformation note Schemas and naming conventions can change from version to version. It is recommended to verify your version before continuing.
The schema and info displayed below is for version 2.
Depending on your destination, table and column names may not appear as they are outlined below.
clients
The clients
table contains info about the clients in your Harvest account.
clients table foreign keys clients table schema
address
STRING
created_at
DATE-TIME
currency
STRING
id
INTEGER
is_active
BOOLEAN
name
STRING
updated_at
DATE-TIME
The contacts
table contains info about the client contacts in your Harvest account.
estimate_item_categories
The estimate_item_categories
table contains info about the estimate item categories in your Harvest account.
estimate_item_categories table schema
created_at
DATE-TIME
id
INTEGER
name
STRING
updated_at
DATE-TIME
estimate_line_items
The estimate_line_items
table contains info about the line items contained in estimates.
Note : This table is updated based on new and updated estimates
. This means that when an estimate is updated, this table will also be updated.
estimate_line_items table foreign keys Join estimate_line_items with on estimate_messages estimate_line_items.estimate_id = estimate_messages.estimate_id estimates estimate_line_items.estimate_id = estimates.id invoices estimate_line_items.estimate_id = invoices.estimate_id
estimate_line_items table schema
amount
NUMBER
description
STRING
estimate_id
INTEGER
id
INTEGER
kind
STRING
quantity
INTEGER
taxed
BOOLEAN
taxed2
BOOLEAN
unit_price
NUMBER
estimate_messages
The estimate_messages
table contains info about the messages associated with estimates.
estimate_messages table foreign keys Join estimate_messages with on estimate_line_items estimate_messages.estimate_id = estimate_line_items.estimate_id estimates estimate_messages.estimate_id = estimates.id invoices estimate_messages.estimate_id = invoices.estimate_id
estimate_messages table schema
body
STRING
created_at
DATE-TIME
estimate_id
INTEGER
event_type
STRING
id
INTEGER
recipients
ARRAY
This is a nested data structure:
email: STRING name: STRING
send_me_a_copy
BOOLEAN
sent_by
STRING
sent_by_email
STRING
sent_from
STRING
sent_from_email
STRING
subject
STRING
updated_at
DATE-TIME
estimates
The estimates
table contains info about the estimates in your Harvest account.
estimates table foreign keys Join estimates with on clients estimates.client_id = clients.id contacts estimates.client_id = contacts.client_id expenses estimates.client_id = expenses.client_id invoices estimates.client_id = invoices.client_id estimates.id = invoices.estimate_id estimates.creator_id = invoices.creator_id projects estimates.client_id = projects.client_id time_entries estimates.client_id = time_entries.client_id estimates.creator_id = time_entries.user_id user_projects estimates.client_id = user_projects.client_id estimates.creator_id = user_projects.user_id estimate_line_items estimates.id = estimate_line_items.estimate_id estimate_messages estimates.id = estimate_messages.estimate_id users estimates.creator_id = users.id user_project_tasks estimates.creator_id = user_project_tasks.user_id user_roles estimates.creator_id = user_roles.user_id
estimates table schema
accepted_at
DATE-TIME
amount
NUMBER
client_id
INTEGER
client_key
STRING
created_at
DATE-TIME
creator_id
INTEGER
currency
STRING
declined_at
DATE-TIME
discount
STRING, NUMBER
discount_amount
NUMBER
id
INTEGER
issue_date
DATE-TIME
notes
STRING
number
STRING
purchase_order
STRING
sent_at
DATE-TIME
state
STRING
subject
STRING
tax
STRING, NUMBER
tax2
STRING, NUMBER
tax2_amount
NUMBER
tax_amount
NUMBER
updated_at
DATE-TIME
expense_categories
The expense_categories
table contains info about the expense categories in your Harvest account.
expense_categories table foreign keys Join expense_categories with on expenses expense_categories.id = expenses.expense_category_id
expense_categories table schema
created_at
DATE-TIME
id
INTEGER
is_active
BOOLEAN
name
STRING
unit_name
STRING
unit_price
NUMBER
updated_at
DATE-TIME
expenses
The expenses
table contains info about the expenses recorded in your Harvest account.
expenses table foreign keys Join expenses with on clients expenses.client_id = clients.id contacts expenses.client_id = contacts.client_id estimates expenses.client_id = estimates.client_id invoices expenses.client_id = invoices.client_id expenses.invoice_id = invoices.id projects expenses.client_id = projects.client_id expenses.project_id = projects.id time_entries expenses.client_id = time_entries.client_id expenses.id = time_entries.external_reference_id expenses.invoice_id = time_entries.invoice_id expenses.project_id = time_entries.project_id user_projects expenses.client_id = user_projects.client_id expenses.project_id = user_projects.project_id expense_categories expenses.expense_category_id = expense_categories.id time_entry_external_reference expenses.id = time_entry_external_reference.external_reference_id invoice_line_items expenses.invoice_id = invoice_line_items.invoice_id expenses.project_id = invoice_line_items.project_id invoice_messages expenses.invoice_id = invoice_messages.invoice_id invoice_payments expenses.invoice_id = invoice_payments.invoice_id project_tasks expenses.project_id = project_tasks.project_id project_users expenses.project_id = project_users.project_id
expenses table schema
billable
BOOLEAN
client_id
INTEGER
created_at
DATE-TIME
expense_category_id
INTEGER
id
INTEGER
invoice_id
INTEGER
is_billed
BOOLEAN
is_closed
BOOLEAN
is_locked
BOOLEAN
locked_reason
STRING
notes
STRING
project_id
INTEGER
receipt_content_type
STRING
receipt_file_name
STRING
receipt_file_size
INTEGER
receipt_url
STRING
spent_date
DATE-TIME
total_cost
NUMBER
units
NUMBER
updated_at
DATE-TIME
user_assignment_id
INTEGER
user_id
INTEGER
invoice_item_categories
The invoice_item_categories
table contains info about the various categories that can be applied to invoice line items.
Note : Harvest includes two non-removable categories by default for the hours and expenses you bill.
invoice_item_categories table schema
created_at
DATE-TIME
id
INTEGER
name
STRING
updated_at
DATE-TIME
use_as_expense
BOOLEAN
use_as_service
BOOLEAN
invoice_line_items
The invoice_line_items
table contains info about the line items contained in invoices.
Note : This table is updated based on new and updated invoices
. This means that when an invoice is updated, this table will also be updated.
invoice_line_items table foreign keys Join invoice_line_items with on expenses invoice_line_items.invoice_id = expenses.invoice_id invoice_line_items.project_id = expenses.project_id invoice_messages invoice_line_items.invoice_id = invoice_messages.invoice_id invoice_payments invoice_line_items.invoice_id = invoice_payments.invoice_id invoices invoice_line_items.invoice_id = invoices.id time_entries invoice_line_items.invoice_id = time_entries.invoice_id invoice_line_items.project_id = time_entries.project_id project_tasks invoice_line_items.project_id = project_tasks.project_id project_users invoice_line_items.project_id = project_users.project_id projects invoice_line_items.project_id = projects.id user_projects invoice_line_items.project_id = user_projects.project_id
invoice_line_items table schema
amount
NUMBER
description
STRING
id
INTEGER
invoice_id
INTEGER
kind
STRING
project_id
INTEGER
quantity
INTEGER
taxed
BOOLEAN
taxed2
BOOLEAN
unit_price
NUMBER
invoice_messages
The invoice_messages
table contains info about invoice messages, or emails sent to clients about invoices.
Replication Method
CDC
Primary Key
id
Replication Key
updated_at
Useful links
Harvest API method
invoice_messages table foreign keys Join invoice_messages with on expenses invoice_messages.invoice_id = expenses.invoice_id invoice_line_items invoice_messages.invoice_id = invoice_line_items.invoice_id invoice_payments invoice_messages.invoice_id = invoice_payments.invoice_id invoices invoice_messages.invoice_id = invoices.id time_entries invoice_messages.invoice_id = time_entries.invoice_id
invoice_messages table schema
attach_pdf
BOOLEAN
body
STRING
created_at
DATE-TIME
event_type
STRING
id
INTEGER
include_link_to_client_invoice
BOOLEAN
invoice_id
INTEGER
recipients
ARRAY
This is a nested data structure:
email: STRING name: STRING
reminder
BOOLEAN
send_me_a_copy
BOOLEAN
send_reminder_on
DATE-TIME
sent_by
STRING
sent_by_email
STRING
sent_from
STRING
sent_from_email
STRING
subject
STRING
thank_you
BOOLEAN
updated_at
DATE-TIME
invoice_payments
The invoice_payments
table contains info about the payments applied to invoices in your Harvest account.
invoice_payments table foreign keys Join invoice_payments with on expenses invoice_payments.invoice_id = expenses.invoice_id invoice_line_items invoice_payments.invoice_id = invoice_line_items.invoice_id invoice_messages invoice_payments.invoice_id = invoice_messages.invoice_id invoices invoice_payments.invoice_id = invoices.id time_entries invoice_payments.invoice_id = time_entries.invoice_id
invoice_payments table schema
amount
NUMBER
created_at
DATE-TIME
id
INTEGER
invoice_id
INTEGER
notes
STRING
paid_at
DATE-TIME
paid_date
DATE-TIME
payment_gateway_id
INTEGER
payment_gateway_name
INTEGER
recorded_by
STRING
recorded_by_email
STRING
transaction_id
STRING
updated_at
DATE-TIME
invoices
The invoices
table contains info about the invoices in your Harvest account.
invoices table foreign keys Join invoices with on clients invoices.client_id = clients.id contacts invoices.client_id = contacts.client_id estimates invoices.client_id = estimates.client_id invoices.estimate_id = estimates.id invoices.creator_id = estimates.creator_id expenses invoices.client_id = expenses.client_id invoices.id = expenses.invoice_id projects invoices.client_id = projects.client_id time_entries invoices.client_id = time_entries.client_id invoices.id = time_entries.invoice_id invoices.creator_id = time_entries.user_id user_projects invoices.client_id = user_projects.client_id invoices.creator_id = user_projects.user_id estimate_line_items invoices.estimate_id = estimate_line_items.estimate_id estimate_messages invoices.estimate_id = estimate_messages.estimate_id invoice_line_items invoices.id = invoice_line_items.invoice_id invoice_messages invoices.id = invoice_messages.invoice_id invoice_payments invoices.id = invoice_payments.invoice_id users invoices.creator_id = users.id user_project_tasks invoices.creator_id = user_project_tasks.user_id user_roles invoices.creator_id = user_roles.user_id
invoices table schema
amount
NUMBER
client_id
INTEGER
client_key
STRING
closed_at
DATE-TIME
created_at
DATE-TIME
creator_id
INTEGER
currency
STRING
discount
STRING, NUMBER
discount_amount
NUMBER
due_amount
NUMBER
due_date
DATE-TIME
estimate_id
INTEGER
id
INTEGER
issue_date
DATE-TIME
notes
STRING
number
STRING
paid_at
DATE-TIME
paid_date
DATE-TIME
payment_term
STRING
period_end
DATE-TIME
period_start
DATE-TIME
purchase_order
STRING
retainer_id
INTEGER
sent_at
DATE-TIME
state
STRING
subject
STRING
tax
STRING, NUMBER
tax2
STRING, NUMBER
tax2_amount
NUMBER
tax_amount
NUMBER
updated_at
DATE-TIME
project_tasks
The project_tasks
table contains info about the tasks assigned to projects.
project_tasks table foreign keys Join project_tasks with on expenses project_tasks.project_id = expenses.project_id invoice_line_items project_tasks.project_id = invoice_line_items.project_id project_users project_tasks.project_id = project_users.project_id projects project_tasks.project_id = projects.id time_entries project_tasks.project_id = time_entries.project_id user_projects project_tasks.project_id = user_projects.project_id user_project_tasks project_tasks.id = user_project_tasks.project_task_id
project_tasks table schema
billable
BOOLEAN
budget
NUMBER
created_at
DATE-TIME
hourly_rate
NUMBER
id
INTEGER
is_active
BOOLEAN
project_id
INTEGER
task_id
INTEGER
updated_at
DATE-TIME
project_users
The project_users
table contains info about the users assigned to projects.
Replication Method
CDC
Primary Key
id
Replication Key
updated_at
Useful links
Harvest API method
project_users table foreign keys Join project_users with on expenses project_users.project_id = expenses.project_id invoice_line_items project_users.project_id = invoice_line_items.project_id project_tasks project_users.project_id = project_tasks.project_id projects project_users.project_id = projects.id time_entries project_users.project_id = time_entries.project_id user_projects project_users.project_id = user_projects.project_id
project_users table schema
budget
NUMBER
created_at
DATE-TIME
hourly_rate
NUMBER
id
INTEGER
is_active
BOOLEAN
is_project_manager
BOOLEAN
project_id
INTEGER
updated_at
DATE-TIME
user_id
INTEGER
projects
The projects
table contains info about the projects in your Harvest account.
projects table foreign keys Join projects with on clients projects.client_id = clients.id contacts projects.client_id = contacts.client_id estimates projects.client_id = estimates.client_id expenses projects.client_id = expenses.client_id projects.id = expenses.project_id invoices projects.client_id = invoices.client_id time_entries projects.client_id = time_entries.client_id projects.id = time_entries.project_id user_projects projects.client_id = user_projects.client_id projects.id = user_projects.project_id invoice_line_items projects.id = invoice_line_items.project_id project_tasks projects.id = project_tasks.project_id project_users projects.id = project_users.project_id
projects table schema
bill_by
STRING
budget
NUMBER
budget_by
STRING
budget_is_monthly
BOOLEAN
client_id
INTEGER
code
STRING
cost_budget
NUMBER
cost_budget_include_expenses
BOOLEAN
created_at
DATE-TIME
ends_on
STRING
fee
NUMBER
hourly_rate
NUMBER
id
INTEGER
is_active
BOOLEAN
is_billable
BOOLEAN
is_fixed_fee
BOOLEAN
name
STRING
notes
STRING
notify_when_over_budget
BOOLEAN
over_budget_notification_date
DATE-TIME
over_budget_notification_percentage
INTEGER
show_budget_to_all
BOOLEAN
starts_on
STRING
updated_at
DATE-TIME
roles
The roles
table contains info about the roles in your Harvest account.
roles table foreign keys Join roles with on user_roles roles.id = user_roles.role_id
roles table schema
created_at
DATE-TIME
id
INTEGER
name
STRING
updated_at
DATE-TIME
tasks
The tasks
table contains info about the tasks in your Harvest account.
tasks table foreign keys Join tasks with on time_entries tasks.id = time_entries.task_id
tasks table schema
billable_by_default
BOOLEAN
created_at
DATE-TIME
default_hourly_rate
NUMBER
id
INTEGER
is_active
BOOLEAN
is_default
BOOLEAN
name
STRING
updated_at
DATE-TIME
time_entries
The time_entries
table contains info about the time entries in your Harvest account.
time_entries table foreign keys Join time_entries with on clients time_entries.client_id = clients.id contacts time_entries.client_id = contacts.client_id estimates time_entries.client_id = estimates.client_id time_entries.user_id = estimates.creator_id expenses time_entries.client_id = expenses.client_id time_entries.external_reference_id = expenses.id time_entries.invoice_id = expenses.invoice_id time_entries.project_id = expenses.project_id invoices time_entries.client_id = invoices.client_id time_entries.invoice_id = invoices.id time_entries.user_id = invoices.creator_id projects time_entries.client_id = projects.client_id time_entries.project_id = projects.id user_projects time_entries.client_id = user_projects.client_id time_entries.project_id = user_projects.project_id time_entries.user_id = user_projects.user_id time_entry_external_reference time_entries.external_reference_id = time_entry_external_reference.external_reference_id time_entries.id = time_entry_external_reference.time_entry_id invoice_line_items time_entries.invoice_id = invoice_line_items.invoice_id time_entries.project_id = invoice_line_items.project_id invoice_messages time_entries.invoice_id = invoice_messages.invoice_id invoice_payments time_entries.invoice_id = invoice_payments.invoice_id project_tasks time_entries.project_id = project_tasks.project_id project_users time_entries.project_id = project_users.project_id tasks time_entries.task_id = tasks.id users time_entries.user_id = users.id user_project_tasks time_entries.user_id = user_project_tasks.user_id user_roles time_entries.user_id = user_roles.user_id
time_entries table schema
billable
BOOLEAN
billable_rate
NUMBER
budgeted
NUMBER
client_id
INTEGER
cost_rate
NUMBER
created_at
DATE-TIME
ended_time
TIME
external_reference_id
STRING
hours
NUMBER
id
INTEGER
invoice_id
INTEGER
is_billed
BOOLEAN
is_closed
BOOLEAN
is_locked
BOOLEAN
is_running
BOOLEAN
locked_reason
STRING
notes
STRING
project_id
INTEGER
spent_date
DATE-TIME
started_time
TIME
task_assignment_id
INTEGER
task_id
INTEGER
timer_started_at
DATE-TIME
updated_at
DATE-TIME
user_assignment_id
INTEGER
user_id
INTEGER
time_entry_external_reference
The time_entry_external_reference
table contains pairs of time entry IDs and external reference IDs. This data can be used to tie time entries tracked in external services (such as Trello) to your other Harvest data.
Note : This table is updated based on new and updated time_entries
. This means that when a time entry is updated, this table will also be updated.
time_entry_external_reference table foreign keys Join time_entry_external_reference with on expenses time_entry_external_reference.external_reference_id = expenses.id time_entries time_entry_external_reference.external_reference_id = time_entries.external_reference_id time_entry_external_reference.time_entry_id = time_entries.id
time_entry_external_reference table schema
external_reference_id
STRING
time_entry_id
INTEGER
user_project_tasks
The user_project_tasks
table contains pairs of user IDs and project task IDs.
This data can be used to see lists of all the project tasks associated with a user, and join tables together to get a comprehensive look at the user’s projects.
Note : This table is updated based on new and updated users
. This means that when a user is updated, this table will also be updated.
Replication Method
CDC
Primary Keys
user_id
project_task_id
Useful links
Harvest documentation
user_project_tasks table foreign keys Join user_project_tasks with on project_tasks user_project_tasks.project_task_id = project_tasks.id estimates user_project_tasks.user_id = estimates.creator_id invoices user_project_tasks.user_id = invoices.creator_id time_entries user_project_tasks.user_id = time_entries.user_id users user_project_tasks.user_id = users.id user_projects user_project_tasks.user_id = user_projects.user_id user_roles user_project_tasks.user_id = user_roles.user_id
user_project_tasks table schema
project_task_id
INTEGER
user_id
INTEGER
user_projects
The user_projects
table contains info about the project assignments users are assigned to.
Replication Method
CDC
Primary Key
id
Replication Key
updated_at
Useful links
Harvest API method
user_projects table foreign keys Join user_projects with on clients user_projects.client_id = clients.id contacts user_projects.client_id = contacts.client_id estimates user_projects.client_id = estimates.client_id user_projects.user_id = estimates.creator_id expenses user_projects.client_id = expenses.client_id user_projects.project_id = expenses.project_id invoices user_projects.client_id = invoices.client_id user_projects.user_id = invoices.creator_id projects user_projects.client_id = projects.client_id user_projects.project_id = projects.id time_entries user_projects.client_id = time_entries.client_id user_projects.project_id = time_entries.project_id user_projects.user_id = time_entries.user_id invoice_line_items user_projects.project_id = invoice_line_items.project_id project_tasks user_projects.project_id = project_tasks.project_id project_users user_projects.project_id = project_users.project_id users user_projects.user_id = users.id user_project_tasks user_projects.user_id = user_project_tasks.user_id user_roles user_projects.user_id = user_roles.user_id
user_projects table schema
budget
NUMBER
client_id
INTEGER
created_at
DATE-TIME
hourly_rate
NUMBER
id
INTEGER
is_active
BOOLEAN
is_project_manager
BOOLEAN
project_id
INTEGER
updated_at
DATE-TIME
user_id
INTEGER
user_roles
The user_roles
table contains a list of user ID and role ID pairs, enabling you to see the roles users are associated with.
Note : This table is updated based on new and updated users
. This means that when a user is updated, this table will also be updated.
user_roles table foreign keys Join user_roles with on roles user_roles.role_id = roles.id estimates user_roles.user_id = estimates.creator_id invoices user_roles.user_id = invoices.creator_id time_entries user_roles.user_id = time_entries.user_id users user_roles.user_id = users.id user_project_tasks user_roles.user_id = user_project_tasks.user_id user_projects user_roles.user_id = user_projects.user_id
user_roles table schema
role_id
INTEGER
user_id
INTEGER
users
The users
table contains info about the users in your Harvest account.
users table schema
avatar_url
STRING
can_create_invoices
BOOLEAN
can_create_projects
BOOLEAN
can_see_rates
BOOLEAN
cost_rate
NUMBER
created_at
DATE-TIME
default_hourly_rate
NUMBER
email
STRING
first_name
STRING
has_access_to_all_future_projects
BOOLEAN
id
INTEGER
is_active
BOOLEAN
is_admin
BOOLEAN
is_contractor
BOOLEAN
is_project_manager
BOOLEAN
last_name
STRING
telephone
STRING
timezone
STRING
updated_at
DATE-TIME
weekly_capacity
INTEGER