This integration is powered by Singer's Harvest Forecast tap. For support, visit the GitHub repo or join the Singer Slack.
Harvest Forecast integration summary
Stitch’s Harvest Forecast integration replicates data using the Harvest Forecast Experimental API. Refer to the Schema section for a list of objects available for replication.
Harvest Forecast feature snapshot
A high-level look at Stitch's Harvest Forecast (v1) integration, including release status, useful links, and the features supported in Stitch.
STITCH | |||
Release status |
Released on September 18, 2018 |
Supported by | |
Stitch plan |
Standard |
API availability |
Available |
Singer GitHub repository | |||
REPLICATION SETTINGS | |||
Anchor Scheduling |
Supported |
Advanced Scheduling |
Unsupported |
Table-level reset |
Unsupported |
Configurable Replication Methods |
Unsupported |
DATA SELECTION | |||
Table selection |
Unsupported |
Column selection |
Unsupported |
Select all |
Unsupported |
||
TRANSPARENCY | |||
Extraction Logs |
Supported |
Loading Reports |
Supported |
Connecting Harvest Forecast
Harvest Forecast setup requirements
To set up Harvest Forecast in Stitch, you need:
-
A Harvest account with access to Harvest Forecast. Your Harvest ID will be used to authorize the integration using OAuth.
Step 1: Add Harvest Forecast as a Stitch data source
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Harvest Forecast icon.
-
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch Harvest Forecast” would create a schema called
stitch_harvest_forecast
in the destination. Note: Schema names cannot be changed after you save the integration. - Enter your Harvest Forecast account ID in the Harvest Forecast Account ID field. For example: If your Harvest Forecast account shows the URL as
forecastapp.com/123456/schedule/projects
, you’d enter123456
in this field.
Step 2: Define the historical replication start date
The Sync Historical Data setting defines the starting date for your Harvest Forecast integration. This means that data equal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to replicate data beyond Harvest Forecast’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.
Step 3: Create a replication schedule
In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
Harvest Forecast integrations support the following replication scheduling methods:
To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.
Step 4: Authorize Stitch to Access Harvest Forecast
Lastly, you’ll be directed to Harvest’s website to complete the setup.
- If not already logged into Harvest Forecast, enter your credentials and click Sign In.
- A screen asking for authorization to Forecast will display. Note that Stitch will only ever read your data.
- Click Connect.
- After the authorization process successfully completes, you’ll be redirected back to Stitch.
- Click All Done.
Initial and historical replication jobs
After you finish setting up Harvest Forecast, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.
Free historical data loads
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Harvest Forecast table reference
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is for version 1 of this integration.
This is the latest version of the Harvest Forecast integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs
> customers
), while case is maintained in PostgreSQL destinations (CusTomERs
> CusTomERs
). Refer to the Loading Guide for your destination for more info.
assignments
The assignments
table contains info about the assignments assigned to the people in your Harvest Forecast account.
Full Table |
|
Primary Key |
id |
Useful links |
Join assignments with | on |
---|---|
clients |
assignments.person_id = clients.updated_by_id assignments.updated_by_id = clients.updated_by_id |
milestones |
assignments.person_id = milestones.updated_by_id assignments.updated_by_id = milestones.updated_by_id assignments.project_id = milestones.project_id |
people |
assignments.person_id = people.id assignments.updated_by_id = people.id assignments.person_id = people.updated_by_id assignments.updated_by_id = people.updated_by_id |
projects |
assignments.person_id = projects.updated_by_id assignments.updated_by_id = projects.updated_by_id assignments.project_id = projects.id |
placeholders |
assignments.person_id = placeholders.updated_by_id assignments.updated_by_id = placeholders.updated_by_id assignments.placeholder_id = placeholders.id |
roles |
assignments.person_id = roles.updated_by_id assignments.updated_by_id = roles.updated_by_id assignments.placeholder_id = roles.placeholder_ids |
active_on_days_off BOOLEAN |
allocation INTEGER |
end_date DATE-TIME |
id INTEGER |
notes STRING |
person_id INTEGER |
placeholder_id INTEGER |
project_id INTEGER |
repeated_assignment_set_id INTEGER |
start_date DATE-TIME |
updated_at DATE-TIME |
updated_by_id INTEGER |
clients
The clients
table contains info about the clients in your Harvest Forecast account.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join clients with | on |
---|---|
projects |
clients.id = projects.client_id clients.updated_by_id = projects.updated_by_id |
assignments |
clients.updated_by_id = assignments.person_id clients.updated_by_id = assignments.updated_by_id |
milestones |
clients.updated_by_id = milestones.updated_by_id |
people |
clients.updated_by_id = people.id clients.updated_by_id = people.updated_by_id |
placeholders |
clients.updated_by_id = placeholders.updated_by_id |
roles |
clients.updated_by_id = roles.updated_by_id |
archived BOOLEAN |
harvest_id INTEGER |
id INTEGER |
name STRING |
updated_at DATE-TIME |
updated_by_id INTEGER |
milestones
The milestones
table contains info about the project milestones in your Harvest Forecast account.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join milestones with | on |
---|---|
assignments |
milestones.updated_by_id = assignments.person_id milestones.updated_by_id = assignments.updated_by_id milestones.project_id = assignments.project_id |
clients |
milestones.updated_by_id = clients.updated_by_id |
people |
milestones.updated_by_id = people.id milestones.updated_by_id = people.updated_by_id |
projects |
milestones.updated_by_id = projects.updated_by_id milestones.project_id = projects.id |
placeholders |
milestones.updated_by_id = placeholders.updated_by_id |
roles |
milestones.updated_by_id = roles.updated_by_id |
date DATE-TIME |
id INTEGER |
name STRING |
project_id INTEGER |
updated_at DATE-TIME |
updated_by_id INTEGER |
people
The people
table contains info about the people in your Harvest Forecast account.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join people with | on |
---|---|
assignments |
people.id = assignments.person_id people.updated_by_id = assignments.person_id people.id = assignments.updated_by_id people.updated_by_id = assignments.updated_by_id |
clients |
people.id = clients.updated_by_id people.updated_by_id = clients.updated_by_id |
milestones |
people.id = milestones.updated_by_id people.updated_by_id = milestones.updated_by_id |
projects |
people.id = projects.updated_by_id people.updated_by_id = projects.updated_by_id |
placeholders |
people.id = placeholders.updated_by_id people.updated_by_id = placeholders.updated_by_id people.roles = placeholders.roles |
roles |
people.id = roles.updated_by_id people.updated_by_id = roles.updated_by_id people.roles = roles.id |
admin BOOLEAN |
|||||||
archived BOOLEAN |
|||||||
avatar_url STRING |
|||||||
color_blind STRING |
|||||||
STRING |
|||||||
first_name STRING |
|||||||
harvest_user_id INTEGER |
|||||||
id INTEGER |
|||||||
last_name STRING |
|||||||
login STRING |
|||||||
personal_feed_token_id INTEGER |
|||||||
roles ARRAY |
|||||||
subscribed BOOLEAN |
|||||||
updated_at DATE-TIME |
|||||||
updated_by_id STRING |
|||||||
weekly_capacity INTEGER |
|||||||
working_days OBJECT
|
placeholders
The placeholders
table contains info about the placeholders in your Harvest Forecast account.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join placeholders with | on |
---|---|
assignments |
placeholders.updated_by_id = assignments.person_id placeholders.updated_by_id = assignments.updated_by_id placeholders.id = assignments.placeholder_id |
clients |
placeholders.updated_by_id = clients.updated_by_id |
milestones |
placeholders.updated_by_id = milestones.updated_by_id |
people |
placeholders.updated_by_id = people.id placeholders.updated_by_id = people.updated_by_id placeholders.roles = people.roles |
projects |
placeholders.updated_by_id = projects.updated_by_id |
roles |
placeholders.updated_by_id = roles.updated_by_id placeholders.id = roles.placeholder_ids placeholders.roles = roles.id |
archived BOOLEAN |
id INTEGER |
name STRING |
roles ARRAY |
updated_at DATE-TIME |
updated_by_id INTEGER |
projects
The projects
table contains info about the projects in your Harvest Forecast account.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join projects with | on |
---|---|
clients |
projects.client_id = clients.id projects.updated_by_id = clients.updated_by_id |
assignments |
projects.updated_by_id = assignments.person_id projects.updated_by_id = assignments.updated_by_id projects.id = assignments.project_id |
milestones |
projects.updated_by_id = milestones.updated_by_id projects.id = milestones.project_id |
people |
projects.updated_by_id = people.id projects.updated_by_id = people.updated_by_id |
placeholders |
projects.updated_by_id = placeholders.updated_by_id |
roles |
projects.updated_by_id = roles.updated_by_id |
archived BOOLEAN |
client_id INTEGER |
code STRING |
color STRING |
end_date DATE-TIME |
harvest_id INTEGER |
id INTEGER |
name STRING |
notes STRING |
start_date DATE-TIME |
tags ARRAY |
updated_at DATE-TIME |
updated_by_id INTEGER |
roles
The roles
table contains info about the roles in your Harvest Forecast account.
Full Table |
|
Primary Key |
id |
Useful links |
Join roles with | on |
---|---|
assignments |
roles.updated_by_id = assignments.person_id roles.updated_by_id = assignments.updated_by_id roles.placeholder_ids = assignments.placeholder_id |
clients |
roles.updated_by_id = clients.updated_by_id |
milestones |
roles.updated_by_id = milestones.updated_by_id |
people |
roles.updated_by_id = people.id roles.updated_by_id = people.updated_by_id roles.id = people.roles |
projects |
roles.updated_by_id = projects.updated_by_id |
placeholders |
roles.updated_by_id = placeholders.updated_by_id roles.placeholder_ids = placeholders.id roles.id = placeholders.roles |
harvest_role_id INTEGER |
id INTEGER |
name STRING |
person_ids ARRAY |
placeholder_ids ARRAY |
updated_at DATE-TIME |
updated_by_id INTEGER |
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.