Създайте автоматизирано табло за персонализиране на Hubspot с Google Spreadsheet и Data Studio

Краен резултат от автоматизирано табло с помощта на Hubspot, Google Spreadsheet и Google Datastudio

Въведение

Тази статия е предназначена за мениджъри, които искат да автоматизират нещата по MVP вид, без да се нуждаят от техния технически екип. В този случай ще създадем автоматизирано табло за персонализиране на Hubspot от нулата с помощта на Google Spreadsheet и Google Data Studio.

Аз съм Алекс, един от основателите на Make it Group. Ние изграждаме стартъпи в IoT. Вижте ни тук: makeit-group.com

Моят ангажимент:

  • Безплатно е
  • Това е пряко
  • Тя свършва работата

Познаването на Javascript не е необходимо, ако просто копирате и поставите кода ми, но може да е плюс да персонализирате допълнително таблото си.

Ако просто търсите прост пример за това как да вземете контактите си от Hubspot и да ги запишете в електронна таблица на Google, препоръчвам да прочетете тази друга статия, която написах: Как да извлечете контактите си от Hubspot в Google Spreadsheet с помощта на App Script

Ако не използвате Hubspot, а просто искате да създадете персонализирано табло за управление, може да искате да проверите предишната ми статия: Как да създадете персонализирано табло за управление на KPI на стартиращия ви с Google Spreadsheet и Raspberry Pi?

контекст

Нашата компания инвестира много пари в пускането на нашата марка, продукти или услуги. Но какво генерира най-квалифицираните клиенти? В кой момент нашите преобразуватели преобразуват или заминават? В края на деня искаме да инвестираме в каналите, които работят най-добре, но имаме нужда от тези данни, за да вземем интелигентни решения.

В миналото не използвахме никакви показатели и решенията се основаваха на интуицията ни, което е добре до известна степен. Човек обаче може да бъде изненадан от това, което числата могат да ни кажат за нашия бизнес и често интуицията ни дава фалшиви сигнали.

Нека копаем

За да постигнем мисията си, трябва да направим следното:

  1. Създайте акаунт за разработка в Hubspot
  2. Използвайте електронна таблица на Google за удостоверяване на Hubspot, използвайки нейните API
  3. Изтеглете сделките от Hubspot, използвайки неговите API
  4. Използвайте електронната таблица на Google, за да подготвите данните според нашите нужди
  5. Свържете нашата електронна електронна таблица с Google Data Studio и създайте отчет

Да тръгваме.

Създайте акаунт за разработка в Hubspot

Това е доста ясно, като се създаде акаунт за разработчици в Hubspot.

След като акаунтът ни е готов, ще трябва да създадем приложение за извличане на нашия клиентски идентификационен номер и клиентска тайна. Те ще бъдат използвани за свързване на нашата електронна таблица в Google и нашия CRM акаунт на Hubspot.

Не забравяйте да посочите правилните обхвати в настройките на приложението си Hubspot, както е показано по-долу:

Посочете правилните обхвати в приложението си Hubspot

Използвайте електронна таблица на Google за удостоверяване на Hubspot, използвайки нейните API

Използвал съм този урок, ако имате нужда от повече информация, но ще преминем през всяка стъпка.

Първо трябва да създадем нова електронна таблица в Google в нашия Диск. След като електронната таблица се отвори, отидете на Инструменти> Редактор на скриптове, който ще отвори нов раздел в браузъра.

Ще трябва да добавим библиотека за удостоверяване чрез OAuth2:

  1. Кликнете върху елемента от менюто Ресурси> Библиотеки ...
  2. В текстовото поле Намерете библиотека въведете идентификатора на скрипт 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF и щракнете върху бутона Избор. Това е най-лесният начин да добавите библиотеката към нашия проект, но вижте тази статия, ако искате да добавите кода ръчно в проекта.
  3. Изберете версия в падащото поле (обикновено най-добре е да изберете най-новата версия).
  4. Кликнете върху бутона Запиши.

Сега, нека пишем някакъв код стъпка по стъпка. Ако сте техник с известен опит в JS, може да искате да прочетете пълния код тук. За останалите просто следвайте стъпките.

Първо ще трябва да определим някои променливи за частта за удостоверяване:

var CLIENT_ID = '…'; // Въведете своя идентификационен номер на клиента
var CLIENT_SECRET = '…'; // Въведете своята тайна на клиента
var SCOPE = 'контакти';
var AUTH_URL = 'https://app.hubspot.com/oauth/authorize';
var TOKEN_URL = 'https://api.hubapi.com/oauth/v1/token';
var API_URL = 'https://api.hubapi.com';

Нека добавим следните функции, които ще обработват частта за удостоверяване:

функция getService () {
   върнете OAuth2.createService ('hubspot')
      .setTokenUrl (TOKEN_URL)
      .setAuthorizationBaseUrl (AUTH_URL)
      .setClientId (CLIENT_ID)
      .setClientSecret (CLIENT_SECRET)
      .setCallbackFunction ( "authCallback)
      .setPropertyStore (PropertiesService.getUserProperties ())
      .setScope (обхват);
}
функция authCallback (заявка) {
   var service = getService ();
   var разрешен = service.handleCallback (заявка);
   ако (разрешен) {
      върнете HtmlService.createHtmlOutput ('Успех!');
   } else {
      върнете HtmlService.createHtmlOutput ('Denied.');
   }
}

Сега имаме нужда от функцията за стартиране на удостоверяването:

функция автентифициране () {
   var service = getService ();
   ако (service.hasAccess ()) {
      // ... каквото трябва да се направи тук ...
   } else {
      varizationUrl = service.getAuthorizationUrl ();
      Logger.log ('Отваряне на следния URL адрес и стартирайте отново скрипта:% s', AuthorityUrl);
   }
}

Нека да тестваме частта за удостоверяване Ако сте попълнили идентификационния номер на клиента и секрета на клиента и изпълните функцията за удостоверяване, ще трябва:

  1. Изтеглете URL адреса за оторизация, който ще бъде показан в дневниците (Изглед> Дневници).
  2. Отворете този URL адрес в браузъра си и ще се покажат вашите акаунти в Hubspot.
  3. Изберете акаунта на Hubspot, който искате да свържете с електронната си таблица

Браво, ти си вътре!

Изтеглете сделките от Hubspot, използвайки неговите API

Нека бъдем прости, нека просто направим минималния минимум, за да извлечем тези данни, за да попълним нашата електронна таблица. След това ще използваме инструментите на Google Spreadsheet, за да подготвим данните според нашите нужди.

(Ако сте разработчик, ще се изкушите да се побъркате и да работите върху данните в JavaScript, но бих препоръчал да не преоткривате колелото и да използвате вградените функции на Google Spreadsheet.)

Нека започнем с подготовката на етапите на тръбопровода. Можете да копирате и поставите следната функция в редактора на скриптове под съществуващия код:

функция getStages () {
  // Подгответе удостоверяване на Hubspot
  var service = getService ();
  var headers = {headers: {'Authorization': 'Bearer' + service.getAccessToken ()}};
  
  // Заявка за API
  var pipeline_id = "по подразбиране"; // Въведете идентификатора на тръбопровода тук.
  var url = API_URL + "/ crm-pipelines / v1 / pipelines / сделки";
  var response = UrlFetchApp.fetch (URL, заглавки);
  вар резултат = JSON.parse (response.getContentText ());
  var stage = Array ();
  
  // Превързване през различните тръбопроводи, които може да имате в Hubspot
  result.results.forEach (функция (елемент) {
    ако (item.pipelineId == pipeline_id) {
      var резултат_stages = item.stages;
      // Нека сортираме етапите по displayOrder
      result_stages.sort (функция (a, b) {
        върнете a.displayOrder-b.displayOrder;
      });
  
      // Нека поставим всички използвани етапи (id & label) в масив
      result_stages.forEach (функция (етап) {
        stages.push ([stage.stageId, stage.label]);
      });
    }
  });
  
  етапи на връщане;
}

Този код ще:

  1. Свържете се с Hubspot.
  2. Вземете пълната конфигурация * тръбопровод по подразбиране, включително нейните етапи.
  3. Той ще сортира съответно етапите.
  4. Поставете резултатите в масив, който можем да използваме по-късно.

* CRM Hubspot ви позволява да конфигурирате няколко тръбопровода. Трябва да промените по подразбиране всеки друг тръбопровод идентификатор, който може да имате за настройка. Вижте тази страница, ако искате повече информация за CRM тръбопроводния API от Hubspot.

Сега можем да извлечем и всички сделки, преминаващи през нашия тръбопровод. Този къс код ще се погрижи за това:

NB: Добавих персонализирано поле „източник“ към нашите сделки в нашата конфигурация Hubspot. Това не е поле по подразбиране от Hubspot. Затова предлагам да добавите това към вашите сделки или да промените „източник“ от всяко друго персонализирано поле, което може да искате от вашите сделки.

функция getDeals () {
   // Подгответе удостоверяване на Hubspot
   var service = getService ();
   var headers = {headers: {'Authorization': 'Bearer' + service.getAccessToken ()}};
   // Подгответе страницата
   // Hubspot ви позволява да вземате максимум 250 сделки на заявка.
   // Трябва да направим многократна заявка, докато не получим всички сделки.
   var hold_going = true;
   var offset = 0;
   var сделки = Array ();
   докато (Keep_going) {
      // Ще вземем три свойства от сделките: източник, етап и размер на сделката
      var url = API_URL + "/ сделки / v1 / сделка / paged? свойства = dealstage & properties = source & properties = количество и ограничение = 250 & offset =" + компенсиране;
      var response = UrlFetchApp.fetch (URL, заглавки);
      вар резултат = JSON.parse (response.getContentText ());
      // Има ли още резултати, трябва ли да спрем страницата
      Keep_going = result.hasMore;
      офсет = резултат.отместване;
      // За всяка сделка вземаме етапId, източник и сума
      result.deals.forEach (функция (сделка) {
         var stageId = (deal.properties.hasOwnProperty ("dealstage"))? deal.properties.dealstage.value: „неизвестен“;
         var source = (deal.properties.hasOwnProperty ("source"))? deal.properties.source.value: "неизвестно";
         var количество = (deal.properties.hasOwnProperty ("сума"))? deal.properties.amount.value: 0;
         deals.push ([stageId, източник, сумата]);
      });
   }
   сделки за връщане;
}

Този код ще:

  1. Свържете се с Hubspot.
  2. Вземете всички сделки и добавете следните свойства: етап, източник и сума на сделката.
  3. Поставете резултатите в масив, който можем да използваме по-късно.

Повече информация за извличането на сделките можете да намерите тук.

Добре, ние имаме данни в масиви, но сега, ако искаме да можем да играем с тях с помощта на Google Spreadsheet, трябва да отпечатаме данните на листове. Нека първо създадем два листа в нашата електронна таблица, нека ги наречем „Етапи и сделки“.

var sheetNameStages = "Етапи";
var sheetNameDeals = "Сделки";
функция writeStages (етапи) {
   var ss = SpreadsheetApp.getActiveSpreadsheet ();
   var sheet = ss.getSheetByName (sheetNameStages);
   // Нека сложим някои заглавия и да добавим етапите към нашата таблица
   var matrix = Array (["StageID", "Label"]);
   matrix = matrix.concat (етапи);
   // Записване на таблицата в електронната таблица
   var range = sheet.getRange (1,1, matrix.length, matrix [0] .length);
   range.setValues ​​(матрица);
}
функция writeDeals (сделки) {
   var ss = SpreadsheetApp.getActiveSpreadsheet ();
   var sheet = ss.getSheetByName (sheetNameDeals);
   // Нека да сложим някои заглавия и да добавим сделки към нашата маса
   var matrix = Array (["StageID", "Source", "Сума"]);
   matrix = matrix.concat (сделки);
   // Записване на таблицата в електронната таблица
   var range = sheet.getRange (1,1, matrix.length, matrix [0] .length);
   range.setValues ​​(матрица);
}

Това парче код съответно ще запише етапите и ще се справи в правилните листове чрез следните стъпки:

  1. Свържете се с десния лист.
  2. Подгответе таблица с правилните колони.
  3. Добавяне на данните в таблицата.
  4. Записване на данните в листа.

Това е! По-голямата част от кода е направена, просто трябва да създадем обикновена рутина, която можем да извикваме периодично с помощта на тригери на Project:

функция опресняване () {
   var service = getService ();
   ако (service.hasAccess ()) {
      var stage = getStages ();
      writeStages (етапи);
      var сделки = getDeals ();
      writeDeals (сделки);
   } else {
      varizationUrl = service.getAuthorizationUrl ();
      Logger.log ('Отваряне на следния URL адрес и стартирайте отново скрипта:% s', AuthorityUrl);
   }
}

Тази рутина ще:

  1. Опитайте да се свържете с Hubspot
  2. Ако успее, ще получи данните и ще ги отпечата на съответните листове
  3. Ако не успее (вероятно първия път, когато стартирате скрипта), той ще отпечата URL адреса на разрешение в дневниците (View> Logs), който ще трябва да копирате и поставите в браузъра си.

Сега можем да кажем на нашия скрипт да изпълнява функцията refresh () на всеки час, за да продължи да извлича най-актуалните данни. Можете да отидете на Редактиране> Задействания на текущия проект.

Подготовка на задействания на проекти в Google Spreadsheet за периодично обновяване на данните

Можете да намерите целия код тук за ваше удобство, както и електронната електронна таблица на Google.

Време е да тестваме нашия скрипт и да видим какво ще се случи. Не забравяйте, че при първото пускане на скрипта ще трябва да се удостоверите в Hubspot, както е обяснено по-горе. След това, ако кодът работи без грешки (което би трябвало, ако си свърших работата правилно ;-)), можете да отидете в електронната си таблица на Google и да видите напълнените данни в подходящите листове.

Използвайте електронната таблица на Google, за да подготвите данните според нашите нужди

С горния скрипт успяхме да извлечем данните от Hubspot. Сега можем да използваме Google Spreadsheet, за да подготвим данните, както ни се иска, преди да ги изпратим в Google Data Studio. И така, какво искам да знам?

  • Има ли задръствания в тръбопровода ми? С други думи: какъв е настоящият брой сделки на етап в тръбопровода.
  • Моят тръбопровод достатъчно ли е осигурен с пари, за да мога да прогнозирам паричния си поток? С други думи: Каква е настоящата сума пари на всеки етап.
  • Кои канали работят най-добре и в кой трябва да инвестирам повече? С други думи: Какви са процентите на конверсия и количествата пари, генерирани за източник.

За всички тези номера и с данните, получени от Hubspot, просто трябва да създам няколко Pivot таблици. За да го създадем, отиваме в нашата електронна таблица на Google и кликваме върху Data> Pivot table.

Преди да създадем първата си основна таблица, ще трябва да свържем нашия лист с етапите с нашия лист с оферти. Всъщност листът ни за оферти съдържа нашите StageIDs, но по-скоро имаме пълна таблица, съдържаща и етикета на нашите Етапи, в противен случай докладът ни ще показва само идентификационните номера, които всъщност не са удобни за потребителите.

В листата Deals отидете на колоната D и добавете този ред в първата клетка на колоната:

= ARRAYFORMULA (IFERROR (VLOOKUP (А: А, Етапи А: В, 2, невярно), "Unknown"))

Нека разложим този ред:

  1. VLOOKUP (A: A, Stages! A: B, 2, FALSE): Моля, съпоставете колоната A с таблицата в Етапи и получете стойността ми във втората колона.
  2. IFERROR: Ако не намерите никакво съвпадение, просто ме уведомете като „Unknown“
  3. ARRAYFORMULA: Приложи това правило към цялата ми колона.
Свързване на етапи с StageIDs с VLOOKUP за извличане на правилните етикети

Добре, готови сме, нека създадем първата си Pivot таблица, за да получим текущия брой сделки на етап.

Създайте нова Pivot таблица, тя ще генерира нов лист, който можете да преименувате по Stages: Count. Следвайте следните стъпки в редактора на Pivot таблицата:

  1. Изберете диапазон от данни. Обхватът на данните трябва да бъде целият диапазон от данни във вашия лист за сделки.
  2. Добавете ред и изберете StageName
  3. Добавете стойност и изберете StageID и задайте Обобщение по: COUNTA

Вече имате таблица, съдържаща сумите на сделките на етап. Ще използваме тази таблица в отчета на Google Data Studio.

Създаване на Pivot таблица с Google Spreadsheet, за да получите броя сделки на етап в тръбопровода

Можем да направим същото, за да извлечем сумата пари на всеки етап. Нека създадем нова Pivot таблица, но вместо да избираме StageID като стойност, нека вземем Сумата и зададем Summarize by: SUM.

Създаване на оборотна таблица с Google Spreadsheet, за да получите количеството сделки на етап в тръбопровода

За да получите процента на конверсия за източник, можем да създадем следваща Pivot таблица със следните параметри:

  • Ред: Източник
  • Колона: StageName
  • Стойност: StageID Обобщение по COUNTA

След това можем да добавим колона в края на въртящата се таблица, където изчисляваме процента на конверсия. Това ще зависи от етапите ви, но в моя случай етапът, в който се случват преобразуванията, се нарича Затворен спечелен. Следователно изчислявам своя коефициент на конверсия, като разделям колоната Затворена спечелена с Гранд Total.

Създаване на оборотна таблица с Google Spreadsheet за изчисляване на процентите на конверсия

И накрая, за да получа количеството пари, генерирано от източника, създавам последна Pivot таблица със следните параметри:

  • Ред: Източник
  • Колона: StageName
  • Стойност: Сума, обобщена по SUM

Графата „Затворена печелене“ показва количеството пари, генерирано от всеки източник.

Готови сме с всички необходими набори от данни досега, да отидем сега в Google Data Studio за последното парче ;-)

Свържете нашата електронна електронна таблица с Google Data Studio и създайте отчет

В горните стъпки извадихме данните от Hubspot с неговия API с помощта на OAuth2. След това подготвихме данните с Google Spreadsheet. Вече сме готови да покажем тези данни в хубаво персонализирано табло с помощта на Google Data Studio.

Това е доста просто, така че няма да навлизам в подробности, просто ще ви кажа основите, за да започнете. Първо, ще трябва да създадем нов отчет. Тогава ще трябва да свържем източник на данни. Data Studio ви позволява да избирате между различни източници на данни и по-специално електронна електронна таблица на Google, която очевидно е тази, от която очевидно ще се нуждаем.

Разбира се, може да искате да проверите и всички останали, особено Google Analytics, Adwords или всякакви други инструменти, които вече може да използвате за вашия бизнес. Има дори и конектори на общността (за съжаление, към този момент не съществува конектор Hubspot).

Нека създадем първата ни лентова диаграма, показваща процента на реализация за източник.

Когато добавяте сюжет, в дясно се появява меню, където можем да редактираме източника на данни. Понастоящем трябва да добавим източника на данни от листа Sources: Count & Conversion Rates, в който създадохме въртящата се таблица, съдържаща процентите на конверсия.

Когато добавите източник на данни за Google Spreadsheet, той ще ви позволи да конфигурирате различните полета, които се откриват от избрания лист. Обикновено автоматично запълва колоната за агрегиране със SUM, когато открие числа. В повечето случаи просто превключвам всички тези полета като None.

Свързване на източник на данни с Google Data StudioСъздаване на бар парцел с Google Data Studio

След като връзката е направена, трябва да добавим правилното измерение и показатели. Например, можем да настроим Източник за измерението и процента на реализация като показатели, за да получим горната графика.

Ще трябва да добавим източник на данни в Data Studio за всеки лист или въртяща се таблица, които създадохме в Google Spreadsheet. След като всички източници на данни са добавени, можем просто да възпроизведем горните стъпки, за да създадем всички графики, показатели или всеки друг фантастичен инструмент, който искате да добавите към персонализираното си табло.

Бонус: Какво ще кажете да разполагаме с данните във времето, за да видим развитието на нашата ефективност ден за ден?

Например, искам да знам как се развиват потенциалните клиенти с времето, къде екипът ни се подобрява или липсва, какви канали трябва да прегледам, тъй като те не са изпращали никакви потенциални клиенти от няколко дни или накрая какво е въздействието му върху тръбопровода за продажби, когато един човек по продажбите на нашия екип беше болен миналата седмица.

Има лесен начин да регистрирате данните във времето. Ето парче код, който можете да добавите към скрипта, за да постигнете това:

функция logSources () {
   var ss = SpreadsheetApp.getActiveSpreadsheet ();
   var sheet = ss.getSheetByName ("Източници: Брой и коефициенти на преобразуване");
   var getRange = sheet.getRange ("M3: M13");
   var row = getRange.getValues ​​();
   row.unshift (нова дата);
   var matrix = [ред];
   var ss = SpreadsheetApp.getActiveSpreadsheet ();
   var sheet = ss.getSheetByName ("Дневник: Източници");
   var lastRow = sheet.getLastRow ();
   var lastCol = sheet.getLastColumn ();
   // Писане в края на електронната таблица
   var setRange = sheet.getRange (lastRow + 1,1,1, row.length);
   setRange.setValues ​​(матрица);
}

Ето какво прави:

  1. Той копира дясната колона в десния лист и я съхранява в масив.
  2. Той добавя датата в началото на масива.
  3. Той избира и поставя данните в последния ред на листа: Дневник: Източници.

Можем да направим същото и за Етапите.

И накрая, можем да добавим задействания на проекти, така че данните да се записват веднъж на ден.

След това новите данни могат да бъдат включени в нашето Google Data Studio по същия начин, както е обяснено по-горе.

Краен резултат

Тук ще намерите екранна снимка на последното ни персонализирано табло, след като следвате горните стъпки. Това е доста просто и вече можем да имаме доста страхотен преглед на това, което се случва в нашия тръбопровод за продажби. Просто трябва да изчакаме няколко дни, за да видим развитието във времето и да видим как се представя нашия търговски екип.

За ваше удобство, моля, намерете следните използвани документи:

  • Попълнете сценария на Google App: щракнете тук
  • Примерна електронна таблица на Google: щракнете тук
  • Примерно табло за управление на Google Data Studio: щракнете тук

Следващи стъпки ?

По времето, когато пиша този урок, не съществува конектор за общност, който да свързва CRM на Hubspot към Datastudio. Може би е добре да го изградите в действителност, така че другите да могат да се възползват от него. Използването на електронната електронна таблица на Google като междинна стъпка ви дава повече гъвкавост и сила да правите всичко, което отговаря на вашите нужди. Ако Hubspot е вашият източник на данни, Data Studio е вашето табло за управление, може да помислите да съхранявате електронната си таблица като „мозък“, за да интерпретирате вашите данни, преди да ги изпратите и покажете с Data Studio.

Моля, коментирайте, за да получите прозрения.

Въпроси или предложения? Свържете се с мен на LinkedIn или ни разгледайте тук.