Skip to main content
CV CRM is a CRM for real estate developers in Brazil, covering lead management (Prospectar), sales and reservations (Vender), and after-sales service (Relacionar). This connector reads CV CRM through the APIs of these modules, which are included in every CV CRM plan.
Use this connector when your CV CRM account does not have CVDW, the data warehouse add-on that CV CRM sells separately. If your account has CVDW, use the CV CRM connector instead: it brings more history (status history and time spent in each workflow status). The two connectors create different tables and columns.

Before you start

  • A CV CRM administrative user for the integration. Each API needs the matching permission in the user’s access profile (Painel do Gestor > Perfis de acesso) and the module active in your CV CRM plan. See CV CRM’s list of permissions per endpoint.
  • The API token of that user, generated in CV CRM under Usuários administrativos > Token (how to generate it).
  • Optionally, the password of the same user. CV CRM’s newer APIs (v3/v4) do not accept the API token: they log in with the e-mail and password. Without the password, the People, Pre-registrations, and Custom fields streams are not offered; everything else works.

Configuring CV CRM (without CVDW) as a Source

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

1. Add account access

The following configurations are available:
  • Company subdomain: The part before .cvcrm.com.br in the address you use to open CV CRM. For https://mycompany.cvcrm.com.br, type mycompany (the full address https://mycompany.cvcrm.com.br is also accepted).
  • E-mail: E-mail of the CV CRM administrative user that owns the API token.
  • API token: The API token of that user.
  • Password (optional): Password of the same user. Only needed for the People, Pre-registrations, and Custom fields streams.
  • Start date: First day read by the incremental streams (Lead interactions and Lead conversions). The other streams always bring the full history.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. Select only the streams your CV CRM user has permission to read: before extracting anything, Nekt checks every selected stream, and if CV CRM refuses any of them, the run stops and lists each refused stream with the permission to fix. This avoids replacing a table with an empty one. 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: Most streams are FULL_TABLE, because CV CRM’s module APIs do not filter by update date: each run brings the complete, current list. Lead interactions and Lead conversions are INCREMENTAL. Read more about Sync Types here.
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. CV CRM allows 200 requests per minute per account, shared with your other integrations; Nekt stays below that, and pauses when the limit is reached. Optionally, you can define some additional settings:
  • Delta Log Retention: Determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Additional Full Sync: Determine when to execute an additional full sync. A weekly full sync is recommended for Lead interactions and Lead conversions, to bring changes made to older records.
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.

Good to know

  • Dates and times are in your CV CRM account’s local time (Brasília), as CV CRM returns them.
  • Nested data (for example, the payment conditions and contracts of a reservation, or the answers of a ticket) is stored as JSON text in a single column.
  • Lead interactions and Lead conversions are read by registration date, one day back from the last run. A change made later to an older interaction or conversion (an edited text, a deactivated conversion) comes back only on a full sync. Set a weekly Additional Full Sync on these two streams to keep them aligned with CV CRM.
  • Inactive developments are not extracted. CV CRM’s developments API lists only active developments, so inactive developments, and their units and price tables, do not appear in the Developments, Units, and Price tables streams.
  • Lead conversions include inactive conversions. According to CV CRM’s documentation, the API returns no field that tells active conversions from inactive ones, so the table does not distinguish them.
  • Numbers are read as CV CRM documents them (dot as decimal separator). A value in an unexpected format is stored empty and the run log tells you which column was affected; it is never stored with a guessed value.
  • Visits of leads are in the Lead tasks and visits stream.
  • Not available without CVDW: status history and time spent in each workflow status (leads, reservations, transfers, pre-registrations, tickets, assistance), consolidated sales, surveys, administrative users, and campaigns.

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.

Fields by stream

Stream name: leads.Endpoint: /v1/comercial/leadsSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idlead
Stream name: leads_interacoes.Endpoint: /v1/comercial/leads/interacoesSync Strategy:
  • Incremental replication key: data_cad
  • Primary key(s): idinteracao
Stream name: leads_tarefas.Endpoint: /v1/comercial/leads/tarefasSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idtarefa
Stream name: leads_conversoes.Endpoint: /v1/comercial/leads-conversaoSync Strategy:
  • Incremental replication key: data_conversao
  • Primary key(s): idlead, data_conversao, nome
Stream name: reservas.Endpoint: /v1/comercial/reservasSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idreserva
Stream name: distratos.Endpoint: /v1/comercial/reservas/distratosSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): id_reserva
Stream name: solicitacoes_distrato.Endpoint: /v2/comercial/reservas/solicitacoes-distratoSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idreserva, data_solicitacao
Stream name: cessoes.Endpoint: /v1/comercial/reservas/cessaoSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idcessao
Stream name: gestoes_contrato.Endpoint: /v1/juridico/gestoes-contratoSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idgestaocontrato
Stream name: gestoes_distrato.Endpoint: /v1/comercial/gestoes-distratoSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): iddistrato
Stream name: gestoes_cessao.Endpoint: /v1/comercial/gestoes-cessaoSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idgestaocessao
Stream name: repasses.Endpoint: /v1/financeiro/repassesSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): id
Stream name: comissoes.Endpoint: /v1/financeiro/comissoesSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idcomissao_cv
Stream name: empreendimentos.Endpoint: /v1/cadastros/empreendimentosSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idempreendimento
Stream name: unidades.Endpoint: /v1/cadastros/empreendimentos/{idempreendimento}Sync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idunidade
Stream name: tabelas_preco.Endpoint: /v1/cadastros/empreendimentos/{idempreendimento}Sync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idempreendimento, idtabela
Stream name: tipologias.Endpoint: /v2/configuracoes/tipologias-unidadesSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idtipologia
Stream name: corretores.Endpoint: /v1/cadastros/corretoresSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idcorretor
Stream name: imobiliarias.Endpoint: /v1/cadastros/imobiliariasSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idimobiliaria
Stream name: atendimentos.Endpoint: /v1/relacionamento/atendimentos/listarSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idatendimento
Stream name: assistencias.Endpoint: /v1/relacionamento/assistenciasSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idassistencia
Stream name: workflow_situacoes.Endpoint: /v1/configuracoes/workflows/{funcionalidade}Sync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): funcionalidade, idsituacao
Stream name: pessoas.Endpoint: /v3/cadastros/pessoasSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idpessoa
Stream name: pre_cadastros.Endpoint: /v3/comercial/precadastro/listarSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idprecadastro
Stream name: campos_adicionais.Endpoint: /v4/configuracoes/campos-adicionaisSync Strategy:
  • Full table (the whole list is read on every run)
  • Primary key(s): idcampo