Skip to main content
Cubo CRM (Cubo Suite) is a Brazilian sales CRM. This connector reads your Cubo CRM account through the Cubo CRM API and brings your deals, contacts (people), organizations, activities, annotations and custom field values, together with the funnels and stages, products and categories, lost reasons, users and the account’s settings tables (domains, landing pages, message templates, saved filters and WhatsApp queues).
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:
  1. Log in to Cubo CRM, preferably with an administrator user.
  2. Click your user name in the top right corner and open Meu Perfil.
  3. Open the Chaves API section and click to create a new API key.
  4. Copy the key right away: Cubo CRM shows it only once.
  • API Key: the key you just created.
The connector sees what the user who created the key can see. Cubo CRM shows a regular user only their own deals, so create the key with an administrator user to bring the whole account. When the key belongs to a regular user, the sync log warns about it.
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: 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.
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). 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.
For you to be able to see it on your Catalog, you need at least one successful source run.

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

Every deal (negociação) of the account, in every funnel and status.Table: deals · Primary key: id · Sync: Full table
Contacts (pessoas) of the account.Table: people · Primary key: id · Sync: Full table
Organizations (companies your contacts belong to).Table: organizations · Primary key: id · Sync: Full table
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 table
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 table
Activities (calls, meetings, WhatsApp messages, e-mails, contact attempts) of the account.Table: activities · Primary key: id · Sync: Full table
Sales funnels (pipes) of the account.Table: pipes · Primary key: id · Sync: Full table
Stages of every funnel. The connector reads the stages of each funnel listed in Funnels.Table: stages · Primary key: id · Sync: Full table
Products of the account.Table: products · Primary key: id · Sync: Full table
Product categories.Table: categories · Primary key: id · Sync: Full table
Definitions of the custom fields of deals, people and organizations.Table: custom_fields · Primary key: id · Sync: Full table
Reasons a deal can be marked as lost.Table: lost_reasons · Primary key: id · Sync: Full table
Users of the Cubo CRM account.Table: users · Primary key: id · Sync: Full table
The Cubo CRM account (company) itself: one row.Table: companies · Primary key: id · Sync: Full table
Domains used by the account’s landing pages.Table: domains · Primary key: id · Sync: Full table
Landing pages built in Cubo CRM.Table: landings · Primary key: id · Sync: Full table
E-mail and WhatsApp message templates.Table: templates · Primary key: id · Sync: Full table
Saved filters of the funnels.Table: filters · Primary key: id · Sync: Full table
WhatsApp message queues (bulk sends).Table: whatsapp_queues · Primary key: id · Sync: Full table

Implementation Notes

Custom fields

Custom field values come in two shapes, so you can use whichever is easier:
  • custom_field_values table: one row per value, with entity_type (deal, people or organization), entity_id, custom_field_id, custom_field_name and value. Join it to Deals, People or Organizations on entity_id, or pivot it by custom_field_name.
  • custom_fields column on Deals, People and Organizations: a JSON array with the same values for that record.
The definitions of the fields (type, options, whether they are active) are in the Custom Fields table.

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 in extra_fields (<column>_raw).
  • Values such as price are 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.