The connector only reads data. It never creates, changes or deletes anything in Cubo CRM.
Configuring Cubo CRM as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Cubo CRM option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
The Cubo CRM API uses an API Key. To create one:- Log in to Cubo CRM, preferably with an administrator user.
- Click your user name in the top right corner and open Meu Perfil.
- Open the Chaves API section and click to create a new API key.
- Copy the key right away: Cubo CRM shows it only once.
- API Key: the key you just created.
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: every Cubo CRM stream is Full table. The Cubo CRM API has no filter by update date, so each sync reads the current state of your account and replaces the table with it.
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). Since every sync reads the whole account, a few syncs a day is usually a good balance. Optionally, you can 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. Since every stream is Full table, an Additional Full Sync is not needed. 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.Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description. All streams are Full table.
Every table also has an
extra_fields column: a JSON object with any field Cubo CRM returned for the record that has no column of its own. New or undocumented fields are kept there instead of being dropped.
Fields by stream
Deals
Deals
Every deal (negociação) of the account, in every funnel and status.Table:
deals · Primary key: id · Sync: Full tablePeople
People
Contacts (pessoas) of the account.Table:
people · Primary key: id · Sync: Full tableOrganizations
Organizations
Organizations (companies your contacts belong to).Table:
organizations · Primary key: id · Sync: Full tableAnnotations
Annotations
Notes and automatic history entries (creation, stage changes, transfers) of deals, people and organizations. Cubo has no annotation list, so the connector reads them from inside each deal, person and organization; an annotation that appears in more than one of them is loaded once.Table:
annotations · Primary key: id · Sync: Full tableCustom Field Values
Custom Field Values
One row per custom field value of each deal, person and organization: the easiest way to pivot custom fields in SQL. The definitions are in Custom Fields.Table:
custom_field_values · Primary key: entity_type, id · Sync: Full tableActivities
Activities
Activities (calls, meetings, WhatsApp messages, e-mails, contact attempts) of the account.Table:
activities · Primary key: id · Sync: Full tableFunnels (Pipes)
Funnels (Pipes)
Sales funnels (pipes) of the account.Table:
pipes · Primary key: id · Sync: Full tableStages
Stages
Stages of every funnel. The connector reads the stages of each funnel listed in Funnels.Table:
stages · Primary key: id · Sync: Full tableProducts
Products
Products of the account.Table:
products · Primary key: id · Sync: Full tableCategories
Categories
Product categories.Table:
categories · Primary key: id · Sync: Full tableCustom Fields
Custom Fields
Definitions of the custom fields of deals, people and organizations.Table:
custom_fields · Primary key: id · Sync: Full tableLost Reasons
Lost Reasons
Reasons a deal can be marked as lost.Table:
lost_reasons · Primary key: id · Sync: Full tableUsers
Users
Users of the Cubo CRM account.Table:
users · Primary key: id · Sync: Full tableCompany
Company
The Cubo CRM account (company) itself: one row.Table:
companies · Primary key: id · Sync: Full tableDomains
Domains
Domains used by the account’s landing pages.Table:
domains · Primary key: id · Sync: Full tableLanding Pages
Landing Pages
Landing pages built in Cubo CRM.Table:
landings · Primary key: id · Sync: Full tableMessage Templates
Message Templates
E-mail and WhatsApp message templates.Table:
templates · Primary key: id · Sync: Full tableSaved Filters
Saved Filters
Saved filters of the funnels.Table:
filters · Primary key: id · Sync: Full tableWhatsApp Queues
WhatsApp Queues
WhatsApp message queues (bulk sends).Table:
whatsapp_queues · Primary key: id · Sync: Full tableImplementation Notes
Custom fields
Custom field values come in two shapes, so you can use whichever is easier:custom_field_valuestable: one row per value, withentity_type(deal,peopleororganization),entity_id,custom_field_id,custom_field_nameandvalue. Join it to Deals, People or Organizations onentity_id, or pivot it bycustom_field_name.custom_fieldscolumn on Deals, People and Organizations: a JSON array with the same values for that record.
Data Quality Considerations
- Every table is a snapshot. Each sync replaces the tables with what Cubo CRM returns at that moment. Records deleted in Cubo CRM disappear from the tables on the next sync.
- A table is never half updated. The connector reads all the data of a table before writing any of it. If Cubo CRM fails or refuses part of a table, that table keeps its previous content and the sync shows it as failed.
- Changes during the sync. Records created while a table is being read are simply included. Records deleted while a table is being read could make the connector skip another record, so the connector checks for deletions: it compares the number of records at the start and at the end with the records created in between (new records have higher IDs) and, when it finds a deletion, reads that table again, up to three times. When Cubo CRM does not let the connector confirm the highest ID before reading, the connector reads the table twice and only accepts it when both reads return exactly the same records. If the data keeps changing, that table is not updated in this sync and the next sync tries again.
- A large drop is reported. If Deals, People or Organizations come back with less than half of the records of the previous sync (when it had at least 100), the table is still updated, but the sync log warns with both counts. If you did not delete those records, check whether the API key was replaced by one of a regular user.
- A table that suddenly comes back empty is not emptied. If Cubo CRM returns no rows for a table that had rows in the previous sync, the sync fails for that table instead of emptying it. If the data really was removed in Cubo CRM, run a full sync of the source to accept the empty table.
- Annotations and custom field values come from inside each deal, person and organization, because Cubo CRM has no separate list for them. They contain what Cubo CRM returns with those records.
- Credentials are never loaded. Cubo CRM includes some access tokens and passwords inside its answers (for example in the users embedded in deals, and in the company settings). The connector removes every field whose name looks like a credential (password, token, API key, authorization, session, cookie, signature and similar), the same way in every table and inside JSON columns. The values of your records are never changed.
- Dates are loaded as Cubo CRM sends them (Brasília time,
-03:00). Dates written as day/month/year are read day first. A date in a format the connector does not know is left empty and kept as text inextra_fields(<column>_raw). - Values such as
priceare loaded as exact numbers.
API Limits & Performance
- Cubo CRM does not publish a request limit. The connector makes at most about 4 requests per second and, when Cubo CRM asks it to slow down, waits as long as Cubo CRM says.
- Lists are read 100 records per request. An account with 20,000 deals needs about 200 requests for the Deals table. Annotations and Custom Field Values reuse the pages of Deals, People and Organizations when those tables are selected, so selecting them together costs no extra requests.
Troubleshooting
Skills for agents
Download Cubo CRM skills file
Cubo CRM connector documentation as plain markdown, for use in AI agent contexts.