Skip to main content
Runrun.it (Runrunit) is a work-management platform for planning tasks, projects, and teams. The connector extracts clients, projects, tasks, task attachments, dashboards, and users from the Runrun.it API.

Configuring Runrunit as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Runrunit option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

Connect using credentials from your Runrun.it workspace. See the API documentation for where to obtain an application key and user token. The following configurations are available:
  • Application Key (app_key): The application key associated with your Runrun.it workspace.
  • User Token (user_token): A user token for API calls. Ensure this user has access to the data you need to extract.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from Runrunit and their corresponding fields:
Clients (customers) in the workspace, including budget, time, and cost rollups.Key fields:
FieldTypeDescription
idIntegerUnique identifier for the client
nameStringClient name
custom_fieldStringCustom field value for the client
is_visibleBooleanWhether the client is visible for use
project_idsArrayIdentifiers of projects linked to the client
budgeted_hours_month, budgeted_cost_monthNumberMonthly budgeted hours and cost
time_worked, time_pending_not_assigned, time_pending_queued, time_pending, time_totalIntegerTime tracking in seconds
time_progressNumberTime tracking progress ratio
cost_worked, cost_pending, cost_totalNumberCost rollups
activities_0_days_ago through activities_6_days_ago, activitiesIntegerWorked time today and over the prior six days
project_groupsArrayLegacy project group records
time_pending_backlogIntegerDeprecated pending backlog time in seconds
Projects with schedule, board stage, task counts, and financial rollups.Key fields:
FieldTypeDescription
idIntegerUnique identifier for the project
nameStringProject name
client_idIntegerAssociated client identifier
is_closed, is_activeBooleanLifecycle flags
start_date, close_date, desired_date, estimated_delivery_dateStringSchedule fields (string dates where applicable)
project_group_id, project_sub_group_idIntegerGroup and subgroup identifiers
project_group_name, project_sub_group_nameStringDenormalized group labels
project_group_is_default, project_sub_group_is_defaultBooleanDenormalized group default flags
client_nameStringDenormalized client name
board_stage_id, board_stage_name, board_stage_colorString/IntegerCurrent board stage
tasks_count, tasks_not_assigned_count, tasks_queued_count, tasks_working_on_count, tasks_closed_count, tasks_backlog_countIntegerTask counts
tasks_count_progressNumberRatio of completed tasks
task_points_sum, task_points_progress, task_points_not_assigned_sum, etc.NumberTask points and progress
time_worked, time_pending, time_pending_not_assigned, time_pending_queued, time_totalIntegerTime tracking in seconds
time_progressNumberTime progress ratio
cost_worked, cost_pending, extra_costs, cost_total, cost_progress, budgeted_costNumberFinancial rollups
overdue, over_budgetBooleanSchedule and budget indicators
activities_0_days_ago through activities_7_days_ago, activitiesIntegerRecent worked time in seconds
time_pending_backlogIntegerDeprecated time field
is_public, is_shared, use_new_permissionsBooleanSharing and permissions
sharing_detailsObjectSharing details
created_atStringWhen the project was created
Tasks including board placement, estimates, assignments, subtasks, and custom fields. The tap requests all statuses (including closed) via bypass_status_default.Key fields:
FieldTypeDescription
id, uidInteger/StringTask identifiers
titleStringTask title
stateStringWorkflow state (e.g., not_assigned, working_on)
is_closed, is_assigned, is_working_on, on_going, is_urgent, is_subtaskBooleanWorkflow and status flags
project_id, client_idIntegerForeign keys
user_idInteger/StringUser who created the task
responsible_id, responsible_nameString/IntegerPrimary responsible user
created_atStringCreation timestamp
board_id, board_name, board_stage_id, board_stage_name, board_stage_description, board_stage_positionString/IntegerBoard and stage properties
type_id, type_name, type_colorString/IntegerTask type details
team_id, team_nameString/IntegerTeam when unassigned to a person
queue_positionIntegerPosition on the assignee list
workflow_id, task_state_id, task_state_name, task_status_id, task_status_nameString/IntegerWorkflow identifiers
desired_date, desired_date_with_time, desired_start_date, close_date, start_dateStringDates and schedule
estimated_start_date, estimated_delivery_date, gantt_bar_start_date, gantt_bar_end_dateStringEstimate dates
current_estimate_seconds, estimated_at, last_estimated_at, estimate_updated, estimated_delivery_date_updated, reestimate_countString/IntegerTime estimate properties
scheduled_start_time, is_scheduledString/BooleanScheduled properties
stage_depart_estimated_at, board_remaining_timeString/IntegerStage timing
parents_max_desired_dateStringLatest desired date among prerequisites
time_worked, time_pending, time_total, current_worked_timeIntegerTime tracking in seconds
time_progressNumberTime tracking progress
activities_0_days_ago through activities_7_days_ago, activitiesIntegerRecent activity (seconds per day)
client_name, project_name, project_group_name, project_group_id, project_group_is_defaultString/IntegerDenormalized client & project info
project_sub_group_name, project_sub_group_id, project_sub_group_is_defaultString/IntegerDenormalized sub-group info
user_nameStringCreator display name
parent_task_id, parent_task_title, subtask_ids, subtasks_count, subtasks_closed_count, subtasks_count_progressString/IntegerHierarchy details
parent_ids, opened_parent_ids, child_idsArrayPrerequisite and dependent task identifiers
all_subtasks_time_worked, all_subtasks_time_total, all_subtasks_time_progress, all_subtasks_times_updatingInteger/NumberTime tracking for subtasks
current_levelIntegerDepth in the hierarchy
repetition_ruleObjectObject with rrule details and occurrence time
repetition_rule_idIntegerRepetition rule ID
assignmentsArrayArray of assignment objects (assignee, team, time info, priority, etc.)
evaluation_status, approved, current_evaluator_idString/BooleanEvaluation properties
evaluator_ids, pending_evaluator_ids, approved_evaluator_ids, rejected_evaluator_idsArrayEvaluator lists
tags_data, tag_list, tags, task_tagsArrayTags and tag data
custom_fieldsArrayArray of custom fields
form_idIntegerRelated form ID
is_shared, sharing_details, follower_idsArray/BooleanSharing and followers info
attachments_count, checklist_id, points, was_reopened, overdue, priorityInteger/BooleanMiscellaneous fields (priority deprecated)
Files and documents attached to tasks. This stream is loaded after tasks (one API request per task). Relate rows to tasks using replication metadata from the parent stream where present, or using attachable_id / attachable_type when the attachment targets a task.Key fields:
FieldTypeDescription
idIntegerDocument identifier
typeStringRecord type classification
attachable_id, attachable_type, attachable_nameString/IntegerResource the document is attached to
data_file_name, data_file_size, data_content_typeString/IntegerUnderlying data file metadata
file_name, file_size, file_content_type, file_extensionString/IntegerDisplay file metadata
thumbnail_file_name, preview_file_nameStringPreview assets
uploaded_at, transferedString/BooleanUpload time and transfer completion flag
uploader_id, uploader_nameString/IntegerUploader identifiers
remote_id, remote_icon_urlStringThird-party storage identifiers
is_shared, tags_data, has_approval_request, field_label, evaluationsVariousSharing and metadata fields
User-owned dashboards.Key fields:
FieldTypeDescription
idIntegerUnique identifier for the dashboard
nameStringDashboard name
user_idIntegerOwner user identifier
Workspace users, roles, schedule, and preferences.Key fields:
FieldTypeDescription
idStringUser identifier
name, emailStringDisplay name and email
avatar_url, avatar_large_urlStringProfile images
cost_hourNumberHourly cost
created_atStringAccount creation time
is_master, is_manager, is_auditorBooleanRole flags
can_create_client_project_and_task_types, can_create_boardsBooleanPermissions
budget_managerBooleanMay edit project extra costs
is_eligible_to_access_reports, is_eligible_to_whatsappBooleanEligibility flags
time_zone, position, on_vacation, birthday, phone, gender, marital_status, in_company_since, languageString/BooleanProfile & availability properties
is_certified, is_certified_expertBooleanRunrun.it certification flags
is_mensurableBooleanRR Ratings participation
team_ids, led_team_idsArrayTeam membership and leadership
demanders_count, partners_count, has_all_users_as_partners, has_all_users_as_demandersInteger/BooleanRelationship counters
is_blocked_on_mobile, bypass_block_by_time_worked, blocked_by_time_worked_atString/BooleanMobile & time tracking limits
time_tracking_modeStringDeprecated; use enterprise setting
shiftsArrayWeekly schedule shifts
preferencesObjectUser preferences
theme, task_list_background_image_url, skip_time_adjust_on_task_assignment_deliverString/BooleanDeprecated (prefer preferences object)
password_updated_at, password_expired_atStringSecurity timestamps
shift_work_time_per_weekIntegerScheduled work time
alt_id, oidStringInternal identifiers
Time worked report grouped by date, project, and user. Aggregating by user_id yields total time per user; filtering by client_id yields time per user within a specific client. Returns a fixed trailing window of approximately 7 days.Key fields:
FieldTypeDescription
dateDateDay of the time-worked aggregation.
project_idIntegerIdentifier of the project.
project_nameStringName of the project.
project_sub_group_idIntegerIdentifier of the project subgroup.
project_sub_group_nameStringName of the project subgroup.
project_group_idIntegerIdentifier of the project group.
project_group_nameStringName of the project group.
client_idIntegerIdentifier of the client.
client_nameStringName of the client.
user_idStringSlug identifier of the user.
user_nameStringDisplay name of the user.
automatic_timeIntegerAutomatically tracked time in seconds.
manual_timeIntegerManually adjusted time in seconds (may be negative).
timeIntegerTotal time worked in seconds (automatic + manual).

Data Model

The following diagram summarizes how streams relate for typical analysis. Join keys follow the field names exposed in each stream.

Use Cases for Data Analysis

This section outlines a simple pattern for analyzing Runrunit task load by project. Adjust schema and table names to match your catalog (for example tables under nekt_raw with your chosen prefix).

1. Open tasks by project

Business Value:
  • See how much work is still open per project
  • Prioritize projects with many unclosed tasks
SELECT
   p.name AS project_name,
   c.name AS client_name,
   COUNT(*) FILTER (WHERE NOT t.is_closed) AS open_tasks,
   COUNT(*) FILTER (WHERE t.is_closed) AS closed_tasks
FROM
   nekt_raw.runrunit_tasks t
   LEFT JOIN nekt_raw.runrunit_projects p ON t.project_id = p.id
   LEFT JOIN nekt_raw.runrunit_clients c ON t.client_id = c.id
GROUP BY
   p.name,
   c.name
ORDER BY
   open_tasks DESC

Implementation Notes

Sync behavior

  • Streams use full table replication in the tap (no replication_key), except report streams with sliding windows. Choosing INCREMENTAL vs FULL_TABLE in Nekt still controls how the platform merges updates into your catalog tables.
  • task_documents depends on tasks; include both streams if you need attachments.

API access

  • Ensure the User Token belongs to a user with permission to read clients, projects, tasks, users, and dashboards you expect in the extract.
  • Large workspaces can require many requests for tasks and especially task_documents; limit streams or sync frequency if needed.

Skills for agents

Download Runrunit skills file

Runrunit connector documentation as plain markdown, for use in AI agent contexts.