Skip to main content
Pipeimob is a post-sale management platform for real estate agencies and franchise networks: it follows each deal (transação) from the purchase proposal through the CCV (purchase and sale agreement), deed, registry and commission payments. The connector reads your Pipeimob data through the Pipeimob API v2: the transactions, counted by the date the CCV was signed, with their values (VGV and commission), brokers, teams, property, clients and commission charges, plus your users and the service requests (solicitações) of your agencies.

Configuring Pipeimob as a Source

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

1. Add account access

The connector uses an API Key and an API Secret of the Pipeimob API v2. Pipeimob support issues them: open a ticket with Pipeimob asking for API v2 credentials for your agency, allowed to read business data (negocios.read). To also sync users and service requests, ask for usuarios.read and solicitacoes.read too. Nekt uses the credentials only to get the temporary access token that reads your data; it never changes anything in Pipeimob.
Pipeimob limits each set of credentials to 10 listing requests and 100 single-transaction requests per day on its business routes, and may temporarily block credentials that go over it. The connector counts its own requests over the last 24 hours and stays under these limits. Notebooks, scripts or other integrations that use the same credentials spend the same allowance, and the connector cannot see them: ask Pipeimob for separate credentials for Nekt, or lower the limits below to leave room for them.
The following configurations are available:
  • API Key: the API Key of your Pipeimob API v2 credentials. Required.
  • API Secret: the API Secret of the same credentials. Required.
  • Start Date: the earliest CCV signing date of the sales to load. It is also the earliest creation date of the service requests. Required. A long history is loaded over several days (see How transactions are kept up to date).
  • Reprocess window (days): (Default: 30, at most 90) once the history is complete, sales signed in this many recent days are read again on every sync while requests are left. Corrections and cancellations of any sale, recent or old, are picked up from Pipeimob’s list of changed transactions.
  • Daily listing request limit: (Default: 8, at most 10) the most listing requests the connector makes in any 24 hours. Pipeimob allows 10.
  • Daily single-transaction request limit: (Default: 90, at most 100) the most requests for one specific transaction the connector makes in any 24 hours. Pipeimob allows 100.
  • Listing requests per sync: (Default: 5) the most listing requests a single sync uses, so syncs close together share the daily limit. With one sync a day, you can raise it up to the daily limit to load the history faster.
  • Single-transaction requests per sync: (Default: 60) the most single-transaction requests a single sync uses.
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. Users and service requests need the matching permissions on your credentials: if Pipeimob refuses one of them, that table is not changed, the transactions still sync, and the run ends with an error telling you which stream to deselect.
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: use INCREMENTAL for Transactions. It keeps the whole history, updates the transactions that changed, and never creates a second row for the same transaction. Users, Service Requests and Service Request Templates are FULL_TABLE: each sync reads their current state. 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. A daily sync is recommended: Pipeimob’s request limits are per day, so syncing more often does not bring transactions faster; syncs close together share the same allowance. 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. Do not schedule one for Transactions (see the warning in Data Quality Considerations).
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.

Fields by stream

Field names follow Pipeimob’s own names, without accents. Lists of objects (clients, commission recipients, bank charges, documents, external partners) are JSON strings. Dates of transactions are calendar days in Brasilia time; date-times are in UTC. Fields Pipeimob adds in the future land in additional_fields until they get a column of their own.
The broker and team columns of Transactions (agente_gestor, agente_gestor_email, lider_equipe, agente_gestor_grupo_filial, agente_gestor_grupos_a_que_pertence) always show the current registration in Pipeimob: when a broker moves to another team, Pipeimob returns the new team for their past sales too, and a deleted user leaves them empty. comissionados is a snapshot recorded on the transaction and does not change afterwards. For production by broker, use comissionados. To keep the team at the time of each sale, track these columns with a History on the Transactions table.
One row per transaction (negócio): every sale with a signed CCV since the Start Date, plus every transaction Pipeimob reported as changed after the source was created (for example a sale cancelled later, whose CCV date was cleared). Counting sales by data_contrato in a period gives the sales signed in that period.Table: transactions · Primary key: transacao_unique_id_pipeimob · Sync: Incremental
Every Pipeimob user your credentials can see (brokers, managers), active or not.Table: users · Primary key: uniqueid · Sync: Full table
Requests (solicitações) opened by or to your agencies since the Start Date, with status, dates, attachments and the linked transaction.Table: service_requests · Primary key: uniqueid · Sync: Full table
Templates from which requests are opened, with the target handling time in days.Table: service_request_templates · Primary key: uniqueid · Sync: Full table

How transactions are kept up to date

A sale counts by the date its CCV was signed (data_contrato), and Pipeimob is read by that date. Every sync, while Pipeimob’s request limits allow, the connector reads:
  1. the sales signed since the previous sync (the last day read is read again, since it may have been read before it ended);
  2. the list of transactions Pipeimob reports as changed since the previous complete check, and then each changed transaction, one by one. This is how a sale cancelled months later (its CCV date cleared), an archived or unarchived transaction, a corrected value or a CCV date entered late with an older date reach your table. After a pause of any length, the list is read from where the last complete check stopped (see the limits in Data Quality Considerations);
  3. older sales, until the history reaches the Start Date;
  4. once the history is complete, the sales of the Reprocess window (days) again, when requests are left.
Each transaction is stored once, by transacao_unique_id_pipeimob: when it is read again, its row is replaced by the new version, and nothing already loaded is deleted. The column synced_at tells when each row was last read. When a sync uses up its share of requests, it stops where it is (down to the page of a period) and the next sync continues from there; the sync log says what is waiting. The first syncs load the history progressively. Pipeimob returns 25 transactions per request, so with about 40 sales a month and the default limits each day loads one to two months of history; with one sync a day, raising Listing requests per sync to 8 speeds it up.

Use Cases for Data Analysis

The queries below answer common sales questions with the transactions table. Run them on Explorer, replacing the table name with the one you chose. valor_contrato is the VGV and total_comissao the VGC.
The queries count as a sale a transaction whose CCV was signed in the period (data_contrato), that is not a rental (tipo_transacao) and that is either active or archived as finished (“Transação Finalizada”). A sale undone in Pipeimob has its CCV date cleared or is archived with another reason. Confirm this definition with your team, since archiving reasons are configured by each agency, and adjust the filters if needed.

1. Sales, VGV and VGC of a month

2. Sales signed between two dates, by broker

Production by broker comes from comissionados, which records each participant as of the sale. The query below uses the managing agent and team columns, which show the current registration (see the note in Fields by stream).

3. Resale versus new developments, and category mix

tipo_transacao is terceiros for resale (shown as Venda in Pipeimob), lancamento for new developments sold for a builder, and locacao for rentals.

4. How fresh the data is

Data Quality Considerations

  • A cancelled sale stays in the table. When a sale is undone, Pipeimob either clears its CCV date (data_contrato becomes empty) or archives it with a reason other than “Transação Finalizada” (data_arquivamento and arquivamento_motivo_geral filled in). Archiving can be undone, which clears data_arquivamento again. Pipeimob returns active and archived transactions together, so filter them as in the queries above.
  • Count sales by data_contrato. Transactions read from Pipeimob’s list of changes are loaded whatever their date, including ones whose CCV was never signed; their data_contrato is empty, so filtering by period leaves them out. Every sync also checks that the transactions returned for a period have their data_contrato inside it, and the sync log warns if they do not.
  • Broker and team show the current registration. See the note in Fields by stream: use comissionados for production by broker, and a History on the table to keep the team at the time of each sale.
  • valor_vgc is the VGC as Pipeimob computes it (every commission line, including those that do not count as production of their participant). It is filled only when Pipeimob sends it; total_comissao is always present.
  • The history arrives over several days. Until the log stops mentioning older sales, the history before the oldest loaded month is incomplete. Recent sales are loaded first.
  • Changed transactions that cannot be read. A transaction that Pipeimob lists as changed but does not return (deleted, no longer visible to your credentials) or keeps failing on is asked for again on the next syncs. After 3 different days without success it is retried once a week for up to 4 weeks, and then given up; the sync log gives the count each time. Its row keeps the last version loaded, so a transaction deleted in Pipeimob stays in the table. A given-up transaction that still exists is read again by itself the next time it changes in Pipeimob, or while its CCV date is in the reprocess window; if the message keeps appearing, contact Nekt support with the date of the sync. When Pipeimob fails every such request in a sync, it is treated as a temporary outage and nothing counts against these limits.
  • Backlog limits. Up to 1,000 changed transactions can wait for their turn; beyond that the oldest move to the weekly retry (which holds up to 500). This only happens when changes come faster than Pipeimob’s daily limit of single-transaction requests allows.
  • Order of the change list. Pipeimob does not document how it orders the list of changed transactions. When a list is read over several syncs, each sync first reads the last page again, which catches a transaction that moved by up to a page; if the list got shorter, it is read again from the start. Within a single sync, a list that changes while it is being read is read again on the next sync. In the rare case where many transactions leave and enter the list between two syncs, one of them could be missed until it changes again.
  • Values keep the precision Pipeimob returns. resumo_comissao_* columns summarize the active commission charges of each transaction; cobrancas_bancarias lists every charge with its status.
  • Errors stop the sync. If Pipeimob refuses the credentials, keeps failing or returns an unexpected answer, the sync stops with a message; the next sync tries again. When a list changes while it is being read, the connector reads it again in smaller parts; if no progress is made for several syncs in a row, the log warns and then the sync stops with an error.
A full sync of Transactions must read the whole history, one request per 30 days, in a single sync. When that does not fit in the requests a sync may use (usually any Start Date more than a few months back), the sync stops before changing the table. Keep Transactions on INCREMENTAL and do not schedule an Additional Full Sync for it.

Troubleshooting