Инструкция по загрузке сделок из CRM
Intro
| Наименование | Описание | 
|---|---|
| Сделка | Карточка продажи, которая идет по этапам воронки продаж. | 
| Контакт | Карточка клиента из вашей CRM системы. | 
| Воронка продаж | Состоит из этапов, которые проходит сделка от создания до успешного завершения (например, оплаты). | 
| Этап | Часть пути воронки продаж, который проходит сделка по процессу продажи в компании. | 
| Ответственный сотрудник | Сотрудник в CRM, ответственный за конкретную сделку. | 
Для настройки интеграции через API необходимо:
-  Создать структуру CRM в CoMagic
  
- Передать структуру каждой воронки продаж
 - Передать список сотрудников и ответственных по каждой сделке
 - Передать список контактов
 
 - Загрузить историю сделок
 - Произвести настройку сквозной аналитики
 - Настроить необходимые данные для анализа в аналитических отчетах
 
 Разберем на примере тестового клиента, как передать сделки и другие необходимые данные из вашей CRM. 
| Пример | Передача сделок и других данных из CRM | 
|---|---|
| Описание |  Название воронки: "Основная воронка".
     Структура воронки продаж: 
 2 ответственных сотрудника 
3 контакта
       
3 сделки:
       
  У каждой сделки есть контакт и ответственный сотрудник.  
      | 
  
1. Перенос структуры вашей CRM в CoMagic
1.1 Создание структуры воронки продаж:
| Метод | create.sales_funnel | 
|---|---|
| Описание | Создание воронки продаж и ее этапов | 
| Кому доступен | Агент, Клиент | 
В запросе "Порядковый номер этапа" указан как 10, 20, 30, 40.
Это сделано, для того чтобы в будущем вы смогли добавить промежуточные этапы
без редактирования всей воронки.
Допустим, в CRM поменялась структура воронки, и добавился этап
"Подписание документов" между этапами "Подготовка Документов"
и "Счет на предоплату". Вы легко можете добавить этап "Подписание документов"
с порядковым номером от 21 до 29. Но лучше 25.
Максимальный номер этапа = 10000
JSON структура запроса
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create.sales_funnel",
  "params": {
    "access_token": "${#Project#auth_prod_4735}",
    "ext_id": "1",
    "name": "Основная воронка",
    "stages": {
      "success": {
        "ext_id": "1000",
        "name": "Успешно реализовано"
      },
      "failed": {
        "ext_id": "10001",
        "name": "Сделка провалена"
      },
      "in_process": [
        {
          "ext_id": "1",
          "name": "Новая сделка",
          "order": 10
        },
        {
          "ext_id": "2",
          "name": "Подготовка Документов",
          "order": 20
        },
        {
          "ext_id": "3",
          "name": "Счет на предоплату",
          "order": 30
        },
        {
          "ext_id": "4",
          "name": "Финальный счет",
          "order": 40
        }
      ]
    }
  }
}
В ответе вернется ID созданной воронки.
JSON структура ответа
{
  "result":  {
   "metadata": {"limits":  {
     "minute_reset": 23,
     "minute_remaining": 199,
     "minute_limit": 200,
     "day_reset": 35483,
     "day_remaining": 3319,
     "day_limit": 3500
   }},
   "data":    {
     "ext_id": "1"
   }
  },
  "id": 1,
  "jsonrpc": "2.0"
}
Проверка структуры воронки:
| Метод | get.sales_funnel | 
|---|---|
| Описание | Получение списка воронок продаж | 
| Кому доступен | Агент, Клиент | 
JSON структура запроса
{
 "jsonrpc":"2.0",
 "id":"number",
 "method":"get.sales_funnel",
 "params":{
  "access_token":"${#Project#auth_prod_4735}",
  "filter":{
   "field":"ext_id",
   "operator":"=",
   "value":"1"
  }
 }
}
JSON структура ответа
{
  "result":  {
   "metadata":    {
     "limits":     {
      "minute_reset": 39,
      "minute_remaining": 199,
      "minute_limit": 200,
      "day_reset": 35139,
      "day_remaining": 3305,
      "day_limit": 3500
     },
     "total_items": 1
   },
   "data": [   {
     "ext_id": "1",
     "name": "Основная воронка",
     "stages":     [
            {
        "stage_name": "Новая сделка",
        "stage_ext_id": "1",
        "stage_status": "in_process",
        "stage_order": 10
      },
            {
        "stage_name": "Подготовка Документов",
        "stage_ext_id": "2",
        "stage_status": "in_process",
        "stage_order": 20
      },
            {
        "stage_name": "Счет на предоплату",
        "stage_ext_id": "3",
        "stage_status": "in_process",
        "stage_order": 30
      },
            {
        "stage_name": "Финальный счет",
        "stage_ext_id": "4",
        "stage_status": "in_process",
        "stage_order": 40
      },
            {
        "stage_name": "Успешно реализовано",
        "stage_ext_id": "1000",
        "stage_status": "success",
        "stage_order": 10010
      },
            {
        "stage_name": "Сделка провалена",
        "stage_ext_id": "10001",
        "stage_status": "failed",
        "stage_order": 10020
      }
     ]
   }]
  },
  "id": "number",
  "jsonrpc": "2.0"
}
При необходимости можно переименовать воронку продаж методом update.sales_funnel и отредактировать этапы, используя метод update.sales_funnel_stages.
1.2 Создание списка сотрудников, ответственных за сделки
Если вы не хотите анализировать РК в разрезе по сотрудникам,
то можно пропустить этот пункт
Пример:
Добавления двух сотрудников
| Метод | create.deal_employees | 
|---|---|
| Описание | Создание/добавление ответственного сотрудника | 
| Кому доступен | Агент, Клиент | 
JSON структура запроса
Запрос 1
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "create.deal_employees",
  "params": {
    "access_token":"${#Project#auth_prod_4735}",
    "ext_id": "EID_0007",
    "name": "Иванов"
  }
}
Запрос 2
{
  "jsonrpc": "2.0",
  "id": "2",
  "method": "create.deal_employees",
  "params": {
    "access_token":"${#Project#auth_prod_4735}",
    "ext_id": "EBdfID_0008",
    "name": "Сидоров"
  }
}
1.3 Создание контактов
| Метод | create.deal_contacts | 
|---|---|
| Описание | Создание контакта | 
| Кому доступен | Агент, Клиент | 
Пример:
ID | 
Имя | 
телефон | 
email | 
|---|---|---|---|
| CID_0001 | Оловянный Олег | 79000000000, 79000000001 | test@example.com, test2@example.com | 
| CID_0002 | Петрович | 79000000003 | test3@example.com | 
| CID_0003 | Новый клиент | 79000000004 | 
JSON структура запроса
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create.deal_contacts",
  "params": {
    "access_token": "${#Project#auth_prod_4735}",
    "contacts": [
      {
        "ext_id": "CID_0001",
        "name": "Оловянный Олег",
        "created_date_time": "2019-08-02 21:00:01",
        "phone_numbers": [
          "79000000000",
          "79000000001"
        ],
        "emails": [
          "test@example.com",
          "test2@example.com"
        ]
      },
      {
        "ext_id": "CID_0002",
        "name": "Петрович",
        "created_date_time": "2019-08-03 12:15:00",
        "phone_numbers": [
          "79000000003"
        ],
        "emails": [
          "test3@example.com"
        ]
      },
      {
        "ext_id": "CID_0003",
        "name": "Новый клиент",
        "created_date_time": "2019-08-10 10:40:50",
        "phone_numbers": [
          "79000000004"
        ]
      }
    ]
  }
}
2. Загрузка истории сделок
Для построения корректной аналитики необходимо передавать все этапы, которые прошла сделка, а не только текущий ее этап (на момент выгрузки).
-  Передавать обновление по сделке в CRM по тригеру, т.е загружать ее в Comagic когда произошло одно из событий:
    
- Создание сделки
 - Переход сделки в другой этап
 - Обновление одного из параметров: контакта, ответственного, суммы сделки
 
 - 
    Один раз за период (час, день, неделю) загружать сразу всю историю по всем сделкам. Для каждой сделки передать все пройденные этапы и время перехода в каждый этап.
Все переданные сделки отображаются в отчете "Сквозная аналитика" кумулятивно (т.е отображаются все этапы, которые прошла сделка, а не только текущий).
Если какой-нибудь из промежуточных этапов не был передан, то система автоматически его создаст с флагом is_generated = True, это необходимо для корректного отображения в аналитических отчетах. В показателях по этапам учитываются сделки, которые прошли через данный этап. 
Отдельного метода по созданию и обновлению сделки у нас нет.
Сделка создается при передачи первой записи по ней, и обновляется
с каждым новым вызовом метода.
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "upload.deals_history",
  "params": {
    "access_token": "${#Project#auth}",
    "deals": [
      {
        "ext_id": "DID_0001",
        "name": "Продажа аннигиляторной пушки",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-15 07:07:00",
        "modified_stage_date_time": "2019-08-15 07:07:00",
        "contact_ext_ids": [
          "CID_0001"
        ],
        "main_contact_ext_id": "CID_0001",
        "employee_ext_id": "EID_0001",
        "sales_funnel_ext_id": "SFID_0001",
        "stage_ext_id": "1",
        "comments": "Супер сделка"
      },
      {
        "ext_id": "DID_0001",
        "name": "Продажа аннигиляторной пушки",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-16 07:07:00",
        "modified_stage_date_time": "2019-08-16 07:07:00",
        "contact_ext_ids": [
          "CID_0001"
        ],
        "main_contact_ext_id": "CID_0001",
        "employee_ext_id": "EID_0002",
        "sales_funnel_ext_id": "SFID_0001",
        "revenue": 5000,
        "stage_ext_id": "2",
        "comments": "Супер сделка"
      },
      {
        "ext_id": "DID_0001",
        "name": "Продажа аннигиляторной пушки",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-17 07:07:00",
        "modified_stage_date_time": "2019-08-17 07:07:00",
        "contact_ext_ids": [
          "CID_0001"
        ],
        "main_contact_ext_id": "CID_0001",
        "sales_funnel_ext_id": "SFID_0001",
        "stage_ext_id": "3",
        "comments": "Супер сделка"
      },
      {
        "ext_id": "DID_0001",
        "name": "Продажа аннигиляторной пушки",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-18 07:07:00",
        "modified_stage_date_time": "2019-08-18 07:07:00",
        "contact_ext_ids": [
          "CID_0001"
        ],
        "main_contact_ext_id": "CID_0001",
        "sales_funnel_ext_id": "SFID_0001",
        "stage_ext_id": "4",
        "comments": "Супер сделка"
      },
      {
        "ext_id": "DID_0001",
        "name": "Продажа аннигиляторной пушки",
        "created_date_time": "2019-08-15 07:07:00",
        "closed_date_time": "2019-08-19 10:07:00",
        "modified_date_time": "2019-08-19 10:07:00",
        "modified_stage_date_time": "2019-08-19 10:07:00",
        "contact_ext_ids": [
          "CID_0001"
        ],
        "main_contact_ext_id": "CID_0001",
        "sales_funnel_ext_id": "SFID_0001",
        "stage_ext_id": "10000",
        "comments": "Супер сделка"
      }
    ]
  }
}
Создание сделки, которая с первого этапа ушла в отказ:
JSON структура запроса
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "upload.deals_history",
  "params": {
    "access_token": "${#Project#auth}",
    "deals": [
      {
        "ext_id": "DID_0002",
        "name": "Беговел Puky Pukylino",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-15 07:07:00",
        "modified_stage_date_time": "2019-08-15 07:07:00",
        "contact_ext_ids": [
          "CID_0002"
        ],
        "main_contact_ext_id": "CID_0002",
        "employee_ext_id": "EID_0002",
        "revenue": 4250,
        "sales_funnel_ext_id": "SFID_0002",
        "stage_ext_id": "1",
        "comments": "Супер сделка"
      },
      {
        "ext_id": "DID_0002",
        "name": "Беговел Puky Pukylino",
        "created_date_time": "2019-08-15 07:07:00",
        "closed_date_time": "2019-08-19 10:07:00",
        "modified_date_time": "2019-08-19 10:07:00",
        "modified_stage_date_time": "2019-08-19 10:07:00",
        "contact_ext_ids": [
          "CID_0002"
        ],
        "main_contact_ext_id": "CID_0002",
        "sales_funnel_ext_id": "SFID_0002",
        "stage_ext_id": "10002",
        "comments": "Не выдерживает необходимый вес"
      }
    ]
  }
}
Создание сделки, которая дошла до этапа "Счет на предоплату":
JSON структура запроса
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "upload.deals_history",
  "params": {
    "access_token": "${#Project#auth}",
    "deals": [
      {
        "ext_id": "DID_0003",
        "name": "Sony PlayStation 4 Slim 500 ГБ",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-15 07:07:00",
        "modified_stage_date_time": "2019-08-15 07:07:00",
        "contact_ext_ids": [
          "CID_0003"
        ],
        "main_contact_ext_id": "CID_0003",
        "employee_ext_id": "EID_0003",
        "sales_funnel_ext_id": "SFID_0003",
        "stage_ext_id": "1"
      },
      {
        "ext_id": "DID_0003",
        "name": "Sony PlayStation 4 Slim 500 ГБ",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-16 07:07:00",
        "modified_stage_date_time": "2019-08-16 07:07:00",
        "contact_ext_ids": [
          "CID_0003"
        ],
        "main_contact_ext_id": "CID_0003",
        "employee_ext_id": "EID_0002",
        "sales_funnel_ext_id": "SFID_0003",
        "revenue": 17350,
        "stage_ext_id": "2"
      },
      {
        "ext_id": "DID_0003",
        "name": "Sony PlayStation 4 Slim 500 ГБ",
        "created_date_time": "2019-08-15 07:07:00",
        "modified_date_time": "2019-08-17 07:07:00",
        "modified_stage_date_time": "2019-08-17 07:07:00",
        "contact_ext_ids": [
          "CID_0003"
        ],
        "main_contact_ext_id": "CID_0003",
        "sales_funnel_ext_id": "SFID_0003",
        "stage_ext_id": "3",
        "comments": "В ожидании оплаты"
      }
    ]
  }
}