KeyCRM
Renta загружает аккаунт KeyCRM в ваше хранилище данных восемью типами отчётов: заказы, покупатели, компании, товары, товарные предложения, воронки продаж, пользователи аккаунта и описания кастомных полей.
В заказе деньги разложены по колонкам: сумма товаров, стоимость доставки и упаковки, скидки, налоги, расходы, маржа, платежи и итоговая сумма. У товаров и предложений к ценам, штрихкодам и габаритам добавляются остатки и резервы.
Аутентификация
Renta подключается к KeyCRM по ключу Open API аккаунта. KeyCRM выдаёт один ключ на весь аккаунт CRM, а не отдельный ключ каждому пользователю, поэтому пайплайн видит всё, что есть в аккаунте.
Чтобы получить ключ, откройте в KeyCRM Settings > General, найдите строку API key и нажмите Generate API key.
Перевыпустить ключ может только владелец аккаунта. Новое значение сразу заменяет прежнее, и каждая интеграция со старым значением перестаёт работать, пока вы не вставите в её подключение новое.
Подключение источника KeyCRM
- Откройте раздел Connections > Catalog в левой панели.
- Откройте категорию CRM и нажмите на карточку KeyCRM.

В поле API key вставьте ключ Open API вашего аккаунта KeyCRM.
Чтобы найти его, откройте в KeyCRM Settings > General и скопируйте значение из строки API key.

- В поле Source name укажите название источника данных. Оно используется только в интерфейсе Renta.
- Нажмите Save.
Перед сохранением подключения Renta проверяет ключ в KeyCRM, поэтому ключ с опечаткой или уже заменённый не пройдёт этот шаг.

Новый источник появляется в списке Sources со статусом Active. Теперь его можно использовать в пайплайнах.

Создание пайплайна KeyCRM
Когда источник подключён, создайте пайплайн, чтобы синхронизировать данные KeyCRM с вашим назначением.
В левой панели нажмите New pipeline. На шаге Source выберите KeyCRM в разделе Already connected и нажмите Next step.

Выберите созданное ранее подключение KeyCRM и нажмите Next step. На карточке видно название подключения и дату, когда оно было добавлено.

На шаге Destination выберите ваше назначение (например, Google BigQuery) и нажмите Next step.

Выберите подключение назначения, куда нужно загрузить данные, и нажмите Next step. На карточке видно датасет и проект, в которые попадут данные.

Настройка пайплайна
На последнем шаге выберите отчёт, его поля и расписание.
Тип отчёта
Выберите, какой объект KeyCRM выгружает пайплайн. Один пайплайн загружает один тип отчёта.

| Тип отчёта | Описание |
|---|---|
| Buyers (покупатели) | Покупатели с полным именем, датой рождения, адресами почты и номерами телефонов, назначенными менеджером и компанией, валютой и персональной скидкой, количеством и общей суммой заказов, а также признаком дубля. |
| Companies (компании) | Компании, привязанные к покупателям: название, наименование, адрес, реквизиты, назначенный менеджер и заметки. |
| Custom Fields (кастомные поля) | Описания кастомных полей, заведённых в аккаунте: название, тип, модель, к которой поле относится, позиция, а также признаки обязательности и нескольких значений. |
| Offers (товарные предложения) | Отдельные варианты, на которые делится товар: цена и закупочная цена, остаток и резерв, штрихкод и артикул, вес и габариты, свойства, которыми варианты отличаются друг от друга, а также признаки архива и варианта по умолчанию. |
| Orders (заказы) | Заказы с покупателем, статусом и группой статусов, источником, промокодом, статусом оплаты и фискальным статусом, суммой товаров, стоимостью доставки и упаковки, скидками, налогами, расходами, маржой, платежами и итоговой суммой, комментариями покупателя, клиента и менеджера, признаками подарка, а также временем оформления, закрытия и последней смены статуса. |
| Pipelines (воронки) | Воронки продаж: название, тип заявки, позиция в списке, а также признаки того, что воронка использует платежи и товары. |
| Products (товары) | Каталог товаров: название, категория, описание, диапазон цен и закупочная цена, валюта, остаток и резерв, штрихкод и артикул, единица измерения, вес и габариты, ссылки на изображения, каналы продаж, в которых размещён товар, и признак архива. |
| Users (пользователи) | Пользователи аккаунта с почтой, логином, именем, фамилией и полным именем, телефоном, ролью, статусом и временем последнего входа. |
Параметры
Выберите поля KeyCRM, которые попадут в таблицу назначения.

| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the pipeline. |
Title text | title | Title of the pipeline. |
Lead Type text | lead_type | Type of the lead in the pipeline. |
Position int | position | Position of the pipeline. |
Target ID int | target_id | ID of the target associated with the pipeline. Can be null. |
Target Type text | target_type | Type of the target associated with the pipeline. Can be null. |
Created At datetime | created_at | Date and time when the pipeline was created in ISO format. |
Updated At datetime | updated_at | Date and time when the pipeline was last updated in ISO format. |
Deleted At datetime | deleted_at | Date and time when the pipeline was deleted in ISO format. Can be null if not deleted. |
Use Payments bool | use_payments | Whether the pipeline uses payments. |
Use Products bool | use_products | Whether the pipeline uses products. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the buyer. |
Full Name text | full_name | Full name of the buyer. |
Birthday text | birthday | Birthday of the buyer in ISO format. Can be null if not specified. |
Company ID int | company_id | ID of the company associated with the buyer. Can be null. |
Manager ID int | manager_id | ID of the manager assigned to the buyer. |
Currency text | currency | Currency code used by the buyer (e.g., UAH, USD, EUR). |
Discount int | discount | Discount percentage applied to the buyer. |
Email array_string | email | Array of email addresses of the buyer. |
Phone array_string | phone | Array of phone numbers of the buyer. |
Note text | note | Note or comment about the buyer. Can be null. |
Orders Count float | orders_count | Total number of orders made by the buyer. |
Orders Sum float | orders_sum | Total sum of all orders made by the buyer. |
Has Duplicates int | has_duplicates | Indicates whether the buyer has duplicate records. |
Image text | image | URL to the buyer's image. Can be null. |
Picture text | picture | URL to the buyer's picture. |
Created At datetime | created_at | Date and time when the buyer was created in ISO format. |
Updated At datetime | updated_at | Date and time when the buyer was last updated in ISO format. |
Deleted At datetime | deleted_at | Date and time when the buyer was deleted in ISO format. Can be null if not deleted. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the company. |
Name text | name | Name of the company. |
Title text | title | Title of the company. |
Address text | address | Address of the company. |
Account text | account | Account information of the company. Can be null. |
Manager ID int | manager_id | ID of the manager assigned to the company. Can be null. |
Notes text | notes | Notes or comments about the company. Can be null. |
Created At datetime | created_at | Date and time when the company was created in ISO format. |
Updated At datetime | updated_at | Date and time when the company was last updated in ISO format. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the custom field. |
Name text | name | Name of the custom field. |
Type text | type | Type of the custom field (e.g., select, text, number, etc.). |
Model text | model | Model to which the custom field belongs (e.g., lead, buyer, order, etc.). |
Position int | position | Position/order of the custom field. |
Is Multiple bool | is_multiple | Whether the custom field allows multiple values. |
Required bool | required | Whether the custom field is required. |
UUID text | uuid | Unique identifier (UUID) of the custom field. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the offer. |
Product ID int | product_id | ID of the product associated with the offer. |
Price float | price | Price of the offer. |
Purchased Price float | purchased_price | Price at which the product was purchased. |
Quantity int | quantity | Available quantity of the offer. |
In Reserve int | in_reserve | Quantity of items in reserve. |
Barcode text | barcode | Barcode of the offer. |
SKU text | sku | Stock Keeping Unit (SKU) of the offer. Can be null. |
Weight int | weight | Weight of the offer. Can be null. |
Width int | width | Width of the offer. Can be null. |
Height int | height | Height of the offer. Can be null. |
Length int | length | Length of the offer. Can be null. |
Thumbnail URL text | thumbnail_url | URL to the thumbnail image of the offer. Can be null. |
Is Archived bool | is_archived | Whether the offer is archived. |
Is Default bool | is_default | Whether this is the default offer. |
Properties array_string | properties | Array of properties of the offer. |
Created At datetime | created_at | Date and time when the offer was created in ISO format. |
Updated At datetime | updated_at | Date and time when the offer was last updated in ISO format. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the order. |
Client ID int | client_id | ID of the client/buyer associated with the order. |
Parent ID int | parent_id | ID of the parent order. Can be null. |
Status ID int | status_id | ID of the order status. |
Status Group ID int | status_group_id | ID of the status group. |
Status On Source text | status_on_source | Status of the order on the source system. |
Source ID int | source_id | ID of the source where the order was created. |
Source UUID text | source_uuid | UUID of the order on the source system. |
Global Source UUID text | global_source_uuid | Global UUID of the order on the source system. |
Register ID int | register_id | ID of the cash register. Can be null. |
Shipping Type ID int | shipping_type_id | ID of the shipping type. Can be null. |
Promocode text | promocode | Promocode applied to the order. |
Payment Status text | payment_status | Payment status of the order (e.g., not_paid, paid, partially_paid). |
Fiscal Status text | fiscal_status | Fiscal status of the order. Can be null. |
Products Total float | products_total | Total amount of products in the order. |
Shipping Price float | shipping_price | Price of shipping. Can be null. |
Wrap Price float | wrap_price | Price of gift wrap. Can be null. |
Discount Amount int | discount_amount | Amount of discount applied. |
Discount Percent int | discount_percent | Percentage of discount applied. Can be null. |
Total Discount float | total_discount | Total discount amount. |
Taxes text | taxes | Tax amount as string. |
Expenses Sum float | expenses_sum | Total sum of expenses. |
Margin Sum float | margin_sum | Total margin amount. |
Payments Total float | payments_total | Total amount of payments. |
Grand Total float | grand_total | Grand total amount of the order. |
Discount Data text | discount_data | Additional discount data. Can be null. |
Buyer Comment text | buyer_comment | Comment from the buyer. |
Client Comment text | client_comment | Comment from the client. |
Manager Comment text | manager_comment | Comment from the manager. Can be null. |
Gift Message text | gift_message | Gift message for the order. Can be null. |
Is Gift bool | is_gift | Whether the order is a gift. |
Gift Wrap bool | gift_wrap | Whether gift wrap is applied. |
Has Reserves bool | has_reserves | Whether the order has reserves. |
Is Expired bool | is_expired | Whether the order status is expired. |
Fiscal Result array_string | fiscal_result | Array of fiscal results. |
Ordered At datetime | ordered_at | Date and time when the order was placed in ISO format. |
Closed At datetime | closed_at | Date and time when the order was closed. |
Closed From int | closed_from | Source from which the order was closed. |
Status Changed At datetime | status_changed_at | Date and time when the order status was changed in ISO format. |
Status Expired At datetime | status_expired_at | Date and time when the order status expires in ISO format. Can be null. |
Source Updated At datetime | source_updated_at | Date and time when the order was last updated on the source in ISO format. |
Last Synced At datetime | last_synced_at | Date and time when the order was last synced. |
Created At datetime | created_at | Date and time when the order was created in ISO format. |
Updated At datetime | updated_at | Date and time when the order was last updated in ISO format. |
Deleted At datetime | deleted_at | Date and time when the order was deleted in ISO format. Can be null if not deleted. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the product. |
Name text | name | Name of the product. |
Category ID int | category_id | ID of the product category. |
Description text | description | Description of the product. Can be null. |
Price float | price | Price of the product. |
Min Price float | min_price | Minimum price of the product. |
Max Price float | max_price | Maximum price of the product. |
Purchased Price float | purchased_price | Price at which the product was purchased. |
Currency Code text | currency_code | Currency code (e.g., UAH, USD, EUR). |
Quantity int | quantity | Available quantity of the product. |
In Reserve int | in_reserve | Quantity of items in reserve. |
Barcode text | barcode | Barcode of the product. |
SKU text | sku | Stock Keeping Unit (SKU) of the product. Can be null. |
Unit Type text | unit_type | Unit type of the product. Can be null. |
Weight int | weight | Weight of the product. Can be null. |
Width int | width | Width of the product. Can be null. |
Height int | height | Height of the product. Can be null. |
Length int | length | Length of the product. Can be null. |
Thumbnail URL text | thumbnail_url | URL to the thumbnail image of the product. |
Attachments Data array_string | attachments_data | Array of URLs to product attachments/images. |
Sources array_string | sources | Array of sources associated with the product. |
Has Offers bool | has_offers | Whether the product has offers. |
Is Archived bool | is_archived | Whether the product is archived. |
Created At datetime | created_at | Date and time when the product was created in ISO format. |
Updated At datetime | updated_at | Date and time when the product was last updated in ISO format. |
| Название | Имя в API | Описание |
|---|---|---|
ID int | id | ID of the user. |
Email text | email | Email address of the user. |
Username text | username | Username of the user. Can be null. |
First Name text | first_name | First name of the user. |
Last Name text | last_name | Last name of the user. |
Full Name text | full_name | Full name of the user. |
Phone text | phone | Phone number of the user. |
Role ID int | role_id | ID of the user's role. |
Status text | status | Status of the user (e.g., active, blocked, inactive). |
Created At datetime | created_at | Date and time when the user was created in ISO format. |
Updated At datetime | updated_at | Date and time when the user was last updated in ISO format. |
Last Logged At datetime | last_logged_at | Date and time when the user last logged in in ISO format. |
На вкладке KeyCRM fields под каждым полем указана его будущая колонка. Select All забирает весь список.
Набор доступных полей зависит от типа отчёта, и заранее за вас ничего не выбрано.
Связанные записи KeyCRM отдаёт идентификаторами, а не названиями. Чтобы их раскрыть, загрузите соответствующий тип отчёта.
| Идентификатор | Тип отчёта, который его раскрывает |
|---|---|
| Client ID в Orders | Buyers |
| Company ID в Buyers | Companies |
| Manager ID в Buyers и Companies | Users |
| Product ID в Offers | Products |
Поля, в которых лежит сразу несколько значений, загружаются колонками-списками, а не дополнительными строками.
| Тип отчёта | Поля, которые загружаются колонками-списками |
|---|---|
| Buyers | Email, Phone |
| Offers | Properties |
| Orders | Fiscal Result |
| Products | Attachments Data, Sources |
Тип отчёта Custom Fields описывает кастомные поля, заведённые в аккаунте: их название, тип и модель, к которой поле относится, например заказ или покупателя. Значений, записанных в конкретных записях, среди параметров объектных типов отчётов нет.
Название таблицы
Задайте название пайплайна и таблицы назначения.

- Integration name.
Название пайплайна. Оно используется только в интерфейсе Renta. - Table name.
Название таблицы назначения. Можно оставить сгенерированное название или ввести своё.
Расписание
Выберите, как часто запускается пайплайн.

| Тип расписания | Описание |
|---|---|
| Manual | Пайплайн запускается только вручную через интерфейс или по API. |
| Daily | Пайплайн запускается раз в день в указанное время обновления. |
| Interval | Пайплайн запускается через указанные интервалы времени. |
| Cron Expression | Пайплайн запускается по расписанию, заданному cron-выражением. |
Для расписания Daily укажите Update time (точное время запуска), затем нажмите Create pipeline.

KeyCRM разрешает 60 запросов в минуту на весь аккаунт, и Renta держится в этом пределе. Из-за этого длинная история заказов или большой каталог загружаются заметно дольше, а пайплайны, назначенные на один и тот же час, берут запросы из общего лимита.
Renta также поддерживает запуск по API и интеграцию с внешними оркестраторами, такими как Apache Airflow, Dagster и Prefect. Подробности в документации по расписаниям.
Новый пайплайн появляется в разделе Pipelines на вкладке ETL, где видно его запуски, прогресс и название таблицы назначения.

Стратегия синхронизации
Все типы отчётов KeyCRM Renta синхронизирует одинаково.
| Стратегия | Поддерживаемые типы отчётов | Описание |
|---|---|---|
| Полная перезагрузка | Buyers, Companies, Custom Fields, Offers, Orders, Pipelines, Products, Users | Renta на каждом запуске читает объект целиком и заменяет содержимое таблицы назначения. Таблица повторяет состояние аккаунта KeyCRM на момент запуска, а запись, которую KeyCRM перестал отдавать, уходит из таблицы на следующем запуске. |
Поскольку каждый запуск читает объект целиком, у пайплайна нет настроек диапазона дат и периода перезаписи. В типах отчётов KeyCRM нет и параметра с датой, по которому можно партиционировать, поэтому таблицы назначения остаются без партиционирования.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.