Productive.io

Productive.io is a tool designed to help agencies with sales, budgeting, project management, resource management, reporting and billing.

Data integration: Skyvia supports importing data to and from Productive.io, exporting Productive.io data to CSV files, replicating Productive.io data to relational databases, and synchronizing Productive.io data with other cloud apps and relational databases.

Backup: Skyvia Backup does not support Productive.io.

Query: Skyvia Query supports Productive.io.

Establishing Connection

To create a connection to Productive.io, specify the Access Token and Organization Id.

Getting Credentials

Access Token

To locate the access token, perform the following actions:

  1. Log in to Productive.io, hover over the user icon on the top right and select Settings.

    API access menu

  2. Click API Access. On the appeared page, click the Generate new token.

    Generate token

  3. Specify the new token name and select the access level.
  4. Hover over the new token name and the token value will appear.

    New token

  5. Click COPY TOKEN

    Copy token

Organization Id

You can get the Organization Id value on the API Access page.

Org Id

Creating Connection

To connect to Productive.io, paste the obtained Access Token and Organization Id to the corresponding boxes in the Connection Editor.

Productive.io connection editor

Additional Connection Parameters

Use Custom Fields

Enables working with custom fields of the Bookings, Budgets, Companies, Deals, Expenses, Invoices, People, Projects, Tasks objects.

Connector Specifics

Import Specifics

When you import data to the object contatinng the fields *Type and *Id together, you must map either both these fields or none of them for successful import. For example, the Bookings object contains the EventType and EventId. You must map either both EventType and EventId fields or none of them.

Object Peculiarities

Comments

When you insert a record to the Comments object, it is present in the Comments object, but it doesn’t contain the link to the parent object, which the comment is created for. Thus, this record is not available when you select all the records. You can get the Comment record only by specifying its Id.

Reports_FinancialItem

By default, data is grouped by the financial_item metric. You can change this behaviour by changing the Group field to one of the following values: person, service, service_type, budget, project, company, pricing_type, project_type, future, organization, financial_item. To group data by multiple metrics, specify the metrics separated by commas. Available date periods for grouping are year, quarter, month, week and day.

You can filter these reports by using Date field. For example, you can get data for the period from 02.09.2024 to 30.10.2024 with grouping by each month separately by using filters like this:

1
2
3
4
SELECT t.*
FROM Reports_FinancialItem AS t
WHERE ((t."Date" < '2024-10-31' AND t."Date" > '2024-09-01')
AND t."Group" = 'service_type,date:month')

Reports_Time

By default, data is grouped by the person metric. You can change this behaviour by changing the Group field to one of the following values: service, service_type, budget, project, company, event, future, organization, subsidiary, manager, person. To group data by multiple metrics, specify the metrics separated by commas. Available date periods for grouping are year, quarter, month, week and day. You can filter these reports by using Date field.

Custom Fields

The following objects can have custom fields: Bookings, Budgets, Companies, Deals, Expenses, Invoices, People, Projects, Tasks.

Productive.io supports the custom fields of the following types:

Productive.io type DbType
Text String
Multiselect String
Dropdown String
Person String
Date Date
Number Decimal
Person Field which stores the ID referring to the People object

Filtering Specifics

Productive.io supports the following native filters:

Object Operator Field
Activities = TaskId, DealId, InvoiceId, CompanyId, PersonId
Comments = DiscussionId
Companies = Status
Bookings = EventId, PersonId
Deals = SalesStatusId, ProjectId, CompanyId, ResponsibleId, SubsidiaryId
Payments = ExternalId, InvoiceId
Projects = ProjectTypeId
TaskLists = ProjectId, BoardId
Workflows = Name
WorkflowStatuses = Name, CategoryId, WorkflowId
Boards = ProjectId
TimeEntries = ServiceId, PersonId
  >=, <= Date
TaxRates = SubsidiaryId, Status

Use these filters to improve performance and save API calls. You can use filters with other fields or operators, but it may increase API call usage.

Custom fields support the following filters:

Field Operator
Number, Date =, >, <, >=, <=
Other fields =
Multiselect Not supported

Incremental Replication and Synchronization

Skyvia supports Replication with Incremental Updates for the Activities, Bookings, Budgets, Comments, Companies, Deals, Expenses, Invoices, People, Projects, Tasks objects. Skyvia tracks only the new records for the Activities, Companies, Deals, Expenses, People, Projects objects.

Skyvia supports Synchronization for the objects Invoices, Bookings, and Tasks objects.

DML Operations Support

Operation Object
INSERT, UPDATE, DELETE Bookings, Budgets, Comments, Deals, DealStatuses, Expenses, Invoices, LineItems, Projects, Services, ServiceTypes, Tasks, TimeEntries, Workflows, Payments
INSERT, UPDATE Boards, Companies, CustomFieldOptions, CustomFields, Events, LostReasons, People, Subsidiaries, TaskLists, TaxRates, WorkflowStatuses
UPDATE, DELETE Organizations
UPDATE Users

Stored Procedures

Skyvia represents part of the supported Productive.io features as stored procedures. You can call a stored procedure, for example, as a text of the command in the ExecuteCommand action in a Target component of a Data Flow or in Query.

ArchiveBoards

To archive a board, use the following command:

call ArchiveBoards(:boardId)

RestoreBoards

To restore a board, use the following command:

call RestoreBoards(:boardId)

ApproveBooking

To approve a booking, use the following command:

call ApproveBooking(:bookingId)

UnapproveBooking

To unapprove a booking, use the following command:

call UnapproveBooking(:bookingId)

ArchiveCompany

To archive a company, use the following command:

call ArchiveCompany(:companyId)

RestoreCompany

To restore a company, use the following command:

call RestoreCompany(:companyId)

ArchiveDealStatus

To archive a deal status, use the following command:

call ArchiveDealStatus(:dealStatusId)

ArchiveEvent

To archive an event, use the following command:

call ArchiveEvent(:eventId)

ApproveExpense

To approve an expense, use the following command:

call ApproveExpense(:expenseId)

UnapproveExpense

To unapprove an expense, use the following command:

call UnapproveExpense(:expenseId)

ArchiveLostReason

To archive a lost reason, use the following command:

call ArchiveLostReason(:lostId)

ArchiveProject

To archive a project, use the following command:

call ArchiveProject(:projectId)

RestoreProject

To restore a project, use the following command:

call RestoreProject(:projectId)

ArchiveServiceType

To archive a service type, use the following command:

call ArchiveServiceType(:serviceTypeId)

ArchiveSubsidiary

To archive a subsidiary, use the following command:

call ArchiveSubsidiary(:subsidiaryId)

ArchiveTaskList

To archive a task list, use the following command:

call ArchiveTaskList(:taskListId)

RestoreTaskList

To restore a task list, use the following command:

call RestoreTaskList(:taskListId)

ArchiveTaxRate

To archive a tax rate, use the following command:

call ArchiveTaxRate(:Id)

RestoreTaxRate

To restore a tax rate, use the following command:

call RestoreTaxRate(:Id)

ApproveTimeEntry

To approve a time entry, use the following command:

call ApproveTimeEntry(:timeEntryId)

UnapproveTimeEntry

To unapprove a time entry, use the following command:

call UnapproveTimeEntry(:timeEntryId)

StartTimeEntry

To start a time entry, use the following command:

call StartTimeEntry(:timeEntryId)

StopTimeEntry

To stop a time entry, use the following command:

call StopTimeEntry(:timeEntryId)

ArchiveWorkflow

To archive a workflow, use the following command:

call ArchiveWorkflow(:workflowId)

RestoreWorkflow

To restore a workflow, use the following command:

call RestoreWorkflow(:workflowId)

DeleteWorkflowStatus

Use the following command, to delete the record from the WorkflowStatuses:

call DeleteWorkflowStatus(:id,:type,:targetid)

PARAMETER NAME DESCRIPTION
Id The identifier of the deleted record
Type Required constant workflow_statuses
TargetId The Id of the workflow status where the tasks from the deleted workflow status will be moved

Supported Actions

Skyvia supports all the common actions for Productive.io