Configuring SprintHub as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the SprintHub option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
SprintHub authenticates with an API key generated inside the platform. Click the gear icon in the top right corner, open Documentação e chave de API, and click Gerar Nova Chave. Give the key a name, choose the user it inherits permissions from, and leave its status enabled. Then set the permissions so the integration can read Contatos, Leads and Negociações, and click Salvar.The key inherits the permissions of the user it was created for, including that user’s departments and permission groups. Two keys on the same instance can therefore return different amounts of data. Generate it from a user who can see the whole operation.
-
Instance name: the name of your SprintHub instance, which is the subdomain in your panel URL. For
https://mycompany.sprinthub.appthe instance name ismycompany. Required. - API key: the key copied from Documentação e chave de API. Required.
- Initial sync date: the earliest date from which meetings will be read, in the Calendar Meetings table. This is the only SprintHub endpoint that accepts a date filter, so it does not affect any other table. Leave it empty to start from January 2020.
- Page size: how many records are requested per page. SprintHub recommends 25 to 50 and warns that larger pages increase the risk of a timeout. Defaults to 50.
- Requests per minute: the maximum number of API calls per minute this source makes. Defaults to 120. Lower it if your runs are being rate limited, or raise it to sync faster.
-
Include archived opportunities: also reads archived opportunities into the Opportunities table, flagged with
is_archived. SprintHub has no combined view of archived and active opportunities, so enabling this doubles the number of API calls that table makes. Off by default.
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.
Lead Details is the only way to reach the custom fields your instance defines for contacts. They arrive in a single
custom_fields column as a JSON object, keyed by the field alias configured in SprintHub — custom fields differ from instance to instance, so they cannot be individual columns.Report Charts reads the computed result of each custom report. SprintHub does not recalculate these on every request and advises reading each one at most three times a day, so a frequent trigger spends your API call allowance without bringing new numbers.
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: every SprintHub stream is full table. The API exposes no “modified since” filter on contacts, opportunities or conversations, so each run re-reads the collection in full. Read more about Sync Types here.
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.
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.How the extraction behaves
Everything is full table. SprintHub exposes no date filter on contacts, opportunities, conversations or any other collection — the meetings endpoint is the only exception. Every table is re-read in full on each run, so the trigger frequency is what controls the API cost. Opportunities are read stage by stage. SprintHub loads its Kanban one column at a time, and its documentation warns that paging a whole funnel as a single list shifts under you whenever a card changes stage mid-read. The connector follows the same path, so a card moving during the extraction cannot be skipped or duplicated. Rate limits depend on your plan. SprintHub does not publish a numeric limit; your allowance is shown in Configurações > Sistemas > Limites. The connector paces itself with the Requests per minute setting and, if SprintHub throttles a run anyway, waits and retries instead of failing — you’ll see a warning in the run log and the run will simply take longer. Nested values arrive as JSON. Fields that hold an object or a list of objects — custom fields, UTM tags, attached files, permission lists — are extracted as JSON strings rather than nested columns. A few endpoints do not have their response documented by SprintHub at all; those tables carry adocument column with the whole record as JSON, next to the identifiers needed to join it.
Troubleshooting
The run fails saying the instance was not found
The run fails saying the instance was not found
The instance name is the subdomain of your SprintHub panel URL, not your company name and not the full URL. For
https://mycompany.sprinthub.app the value to enter is mycompany. Fix it in the source settings and run the extraction again.The run fails saying the API key was rejected
The run fails saying the API key was rejected
Open Documentação e chave de API in SprintHub and check that the key is still listed and enabled, and that the user it inherits permissions from still exists and can read Contatos, Leads and Negociações. If in doubt, generate a new key and update it in the source settings.
Won and lost opportunities are missing
Won and lost opportunities are missing
The key’s user needs the CRM - Oportunidades Ganhas e Perdidas permission on their permission group. Without it SprintHub returns only open cards, and the run still succeeds.
A table came back empty or with fewer rows than expected
A table came back empty or with fewer rows than expected
Results always respect the permissions of the user the API key was created for — its departments, permission groups and funnel access. A key created for a restricted user sees a subset of the operation. Compare the row count against what that same user sees when logged into SprintHub.
The run is much slower than usual
The run is much slower than usual
Check whether Lead Details, Lead Custom Objects, Attendances or Lead Files are selected: each of them makes one API call per contact. Also check the run log for rate-limit warnings — if SprintHub is throttling the source, lowering Requests per minute makes the pacing steadier, and moving the per-contact streams into their own source with a less frequent trigger keeps the main tables fast.
Streams and Fields
Below you’ll find all available data streams from SprintHub and their corresponding fields. API reference: SprintHub API documentation.Leads
Leads
Every contact in the instance with its fixed fields (
POST /leadsadvanced). This is the base table the per-contact streams below fan out from.Primary key: idLead Details
Lead Details
One row per contact with every field the instance stores, including its custom fields (
GET /leads/{id}?allFields=1). Reading it costs one API call per contact.Primary key: idLead Custom Objects
Lead Custom Objects
Custom object records attached to each contact (
GET /lead/customobjects/{id}) — support tickets, contracts, or whatever object types your instance defines. Reading it costs one API call per contact.Primary key: lead_id, idAttendances
Attendances
SAC 360 conversations, one row per conversation across every channel (
GET /sac360/lead/{id}). Reading it costs one API call per contact.Primary key: idLead Files
Lead Files
Files exchanged in a contact’s SAC 360 conversations (
GET /sac360/list_file_lead/{id}). Reading it costs one API call per contact.Primary key: lead_id, s3urlcurtFunnels
Funnels
The CRM funnels defined in the instance (
GET /crm).Primary key: idFunnel Stages
Funnel Stages
The Kanban columns of every funnel (
GET /crm), flattened out of the funnel records. Join id against an opportunity’s crm_column to get the stage a card sits in.Primary key: idOpportunities
Opportunities
CRM opportunities (
POST /crm/opportunities/{funnelId}), read stage by stage exactly as the Kanban board loads them.Primary key: idCustom Object Definitions
Custom Object Definitions
The custom object types the instance declares and the fields each one has (
GET /customobjects/def).Primary key: idCalendars
Calendars
Scheduling calendars and their public booking links (
GET /pcalendar).Primary key: idCalendar Meetings
Calendar Meetings
Meetings booked on each calendar (
GET /calendarmeeting/{calendarId}), from the initial sync date onwards.Primary key: calendar_id, idAdvanced Reports
Advanced Reports
The custom reports defined in the instance (
GET /advancedreports).Primary key: idReport Charts
Report Charts
The computed result of each custom report (
GET /reportchart/{id}). SprintHub does not recalculate these on every call and advises reading each one at most three times a day.Primary key: report_id