{"id":2273,"date":"2026-08-19T19:03:00","date_gmt":"2026-08-19T12:03:00","guid":{"rendered":"https:\/\/lazarewww.ru\/cases\/touchlink-2\/"},"modified":"2026-08-19T19:03:00","modified_gmt":"2026-08-19T12:03:00","slug":"touchlink","status":"publish","type":"isotope","link":"https:\/\/lazarewww.ru\/en\/cases\/touchlink\/","title":{"rendered":"TouchLink"},"content":{"rendered":"<div class=\"wp-bootstrap-blocks-row row\">\n\t\n\n<div class=\"col-12 col-lg-3\">\n\t\t\t\n\n<h2 class=\"wp-block-heading with_decor\" id=\"vvedenie\">Introduction:<\/h2>\n\n\t<\/div>\n\n\n\n<div class=\"col-12 col-lg-5\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\">The client builds CRM software for property developers. Their customers ran a separate service on the side: it pulled leads out of Facebook ad accounts and dropped them into the CRM. It was run by an outside contractor \u2014 a studio with a name on the market.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At some point the contractor let everyone down. Fifty companies were left without a channel between their advertising and their sales teams. The ad money keeps going out, the leads keep coming in, and none of them reach the sales managers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the question came up of what to do with those customers, I took three days for a first version.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-text\">\n\t\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\"><em>What follows is the interface of that very first version, which is still taking leads today. Company names, personal names and phone numbers are hidden in the screenshots: company and lead data is not shown.<\/em><\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-media case-media--full\">\n\t\n\n<div class=\"col-12\">\n\t\t\t\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"1000\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview.png\" alt=\"Overview screen of the first TouchLink version: lead counters and a table of connected companies\" class=\"wp-image-2032\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview.png 1500w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview-300x200.png 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview-1024x683.png 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview-768x512.png 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview-1200x800.png 1200w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview-900x600.png 900w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-overview-600x400.png 600w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><figcaption class=\"wp-element-caption\">Overview: lead counters and a table of connected companies \u2014 one row each.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n\n<hr class=\"hr-dashed opacity-50 my-5\">\n\n\n<div class=\"wp-bootstrap-blocks-row row\">\n\t\n\n<div class=\"col-12 col-lg-3\">\n\t\t\t\n\n<h2 class=\"wp-block-heading with_decor\" id=\"hod-raboty\">How it went:<\/h2>\n\n\t<\/div>\n\n\n\n<div class=\"col-12 col-lg-5\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\">The first version looks nothing like what runs now. I took the simplest methods, the ones proven by time \u2014 essentially a hand-tuned algorithm. Plain PHP, no build step, a customer is created as a directory on disk. Make a folder \u2014 get a webhook address.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sounds crude. But a customer gets connected in a minute, not through a database migration.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-media\">\n\t\n\n<div class=\"col-12\">\n\t\t\t\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"1000\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config.png\" alt=\"Customer connection card in the first TouchLink version: name, slug, source, CRM installation address and action\" class=\"wp-image-2033\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config.png 1500w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config-300x200.png 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config-1024x683.png 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config-768x512.png 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config-1200x800.png 1200w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config-900x600.png 900w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-client-config-600x400.png 600w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><figcaption class=\"wp-element-caption\">The connection card: source, choice of CRM installation and action. The slug is the name of the directory on disk, and it can&#8217;t be changed once created.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-media\">\n\t\n\n<div class=\"col-12\">\n\t\t\t\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"878\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring.jpg\" alt=\"TouchLink monitoring screen: queue progress, state counters and three background jobs with logs\" class=\"wp-image-2155\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring.jpg 1500w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring-300x176.jpg 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring-1024x599.jpg 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring-768x450.jpg 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring-900x527.jpg 900w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-monitoring-600x351.jpg 600w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><figcaption class=\"wp-element-caption\">Monitoring: the queue and three background jobs with logs \u2014 queue processing, retries and form sync.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-media\">\n\t\n\n<div class=\"col-12\">\n\t\t\t\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"1000\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping.png\" alt=\"Setting up UTM parameters, tags and the feed of data into end-to-end analytics\" class=\"wp-image-2035\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping.png 1500w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping-300x200.png 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping-1024x683.png 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping-768x512.png 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping-1200x800.png 1200w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping-900x600.png 900w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-v1-utm-mapping-600x400.png 600w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><figcaption class=\"wp-element-caption\">Campaign tagging: UTM parameters, tags and the feed of data into end-to-end analytics.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-text\">\n\t\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\">For the first few months the project looked like a closed admin panel for the rollout and support team. The customer had nothing but notifications in Telegram. That was the plan: first the leads simply had to move.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Along the way we closed gaps the previous contractor hadn&#8217;t touched for years. End-to-end campaign tagging, tags, sending rejection reasons back into advertising, choosing the CRM installation by country \u2014 the company has five of them.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-text\">\n\t\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\">The fire was put out. After that the service spent several months turning into what is running in production today \u2014 a simple engine pushed to the limit.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-media case-media--full\">\n\t\n\n<div class=\"col-12\">\n\t\t\t\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"576\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-dark-en.jpg\" alt=\"TouchLink dashboard in dark theme: today's lead counters, top sources and a list of recent leads\" class=\"wp-image-1658\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-dark-en.jpg 1280w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-dark-en-300x135.jpg 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-dark-en-1024x461.jpg 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-dark-en-768x346.jpg 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-dark-en-900x405.jpg 900w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">The dashboard: leads for the period, duplicates, errors and top sources.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-split\">\n\t\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\"><strong>A lead in any shape.<\/strong> Everyone&#8217;s ad forms are different: the fields are named however the marketer decided to name them. If the name and the phone number sit in fields that make sense, the lead goes straight through. If not, a language model takes it apart.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The model runs on my own server. That is a matter of principle: a lead holds the name and phone number of a real person, and data like that must not leave the environment. There are no cloud services anywhere in this chain \u2014 from the ad account to the CRM, the lead is never shown to a third party.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the model doesn&#8217;t manage either, there is a third stage \u2014 parsing the raw payload with regular expressions.<\/p>\n\n\t<\/div>\n\n\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t\n\n<figure class=\"wp-block-image size-case-split\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"405\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-journal-dark-en-900x405.jpg\" alt=\"TouchLink lead log: a table of leads with source, form, recipient and delivery status\" class=\"wp-image-1659\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-dark-en-900x405.jpg 900w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-dark-en-300x135.jpg 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-dark-en-1024x461.jpg 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-dark-en-768x346.jpg 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-dark-en.jpg 1280w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><figcaption class=\"wp-element-caption\">The lead log: source, form, recipient and delivery status for every lead.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-split case-split--reverse\">\n\t\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t\n\n<figure class=\"wp-block-image size-case-split\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"406\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-journal-light-ru-900x406.jpg\" alt=\"TouchLink lead delivery monitor in light theme: filters by period, source, destination and status\" class=\"wp-image-1660\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-light-ru-900x406.jpg 900w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-light-ru-300x135.jpg 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-light-ru-1024x462.jpg 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-light-ru-768x346.jpg 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-journal-light-ru.jpg 1280w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><figcaption class=\"wp-element-caption\">The delivery monitor: filters by period, source, destination and status.<\/figcaption><\/figure>\n\n\t<\/div>\n\n\n\n<div class=\"col-12 col-lg-6\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\"><strong>Delivery with nothing lost.<\/strong> A webhook takes the lead and puts it in a queue, and cron processes the queue once a minute. If the CRM doesn&#8217;t answer, the lead isn&#8217;t lost: retries go at a growing interval \u2014 15 minutes, half an hour, an hour, three hours, eight. There is a separate backfill as well: if the outage happened before the fix, the missed leads arrive after the fact.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Duplicates were what I feared most. Calling a person twice is worse than not calling at all. Every lead carries a delivery mark \u2014 a retry sees it and passes by.<\/p>\n\n\t<\/div>\n\n<\/div>\n\n\n<div class=\"wp-bootstrap-blocks-row row case-media\">\n\t\n\n<div class=\"col-12\">\n\t\t\t\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"576\" src=\"\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-light-ru.jpg\" alt=\"TouchLink dashboard in light theme: today's leads, duplicates, errors and leads in processing\" class=\"wp-image-1661\" srcset=\"https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-light-ru.jpg 1280w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-light-ru-300x135.jpg 300w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-light-ru-1024x461.jpg 1024w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-light-ru-768x346.jpg 768w, https:\/\/lazarewww.ru\/wp-content\/uploads\/2026\/08\/touchlink-dashboard-light-ru-900x405.jpg 900w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">The same dashboard in light theme and in Russian.<\/figcaption><\/figure>\n\n\t<\/div>\n\n<\/div>\n\n\n\n<section class=\"case-facts-grid case-native\">\n\t<div class=\"container case-facts-grid__inner\">\n\t\t<div class=\"row row-cols-1 row-cols-sm-2 row-cols-lg-3 case-facts-grid__grid\" data-case-facts-grid>\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<article class=\"case-fact\" style=\"--i: 0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"case-fact__kicker\">data as of 2 September 2026<\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"case-fact__value case-fact__value--short\">57<\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"case-fact__title\">connected companies<\/h3>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<article class=\"case-fact\" style=\"--i: 1\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"case-fact__value case-fact__value--short\">77<\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"case-fact__title\">ad pages<\/h3>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"case-fact__text\"><p>3,423 lead forms<\/p>\n<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<article class=\"case-fact case-fact--featured\" style=\"--i: 2\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"case-fact__value\">459,000+<\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"case-fact__title\">leads processed<\/h3>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<article class=\"case-fact\" style=\"--i: 3\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"case-fact__value\">~1,950<\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"case-fact__title\">leads a day<\/h3>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"case-fact__text\"><p>around 78,000 a month<\/p>\n<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<article class=\"case-fact\" style=\"--i: 4\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"case-fact__value\">100%<\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"case-fact__title\">delivery with nothing lost<\/h3>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"case-fact__text\"><p>delivered successfully over the last week of observation<\/p>\n<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t<\/div>\n<\/section>\n\n\n\n<hr class=\"hr-dashed opacity-50 my-5\">\n\n\n<div class=\"wp-bootstrap-blocks-row row\">\n\t\n\n<div class=\"col-12 col-lg-3\">\n\t\t\t\n\n<h2 class=\"wp-block-heading with_decor\" id=\"rezultat\">Result:<\/h2>\n\n\t<\/div>\n\n\n\n<div class=\"col-12 col-lg-5\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\">The service is in its seventh month. Fifty-seven companies, seventy-seven ad pages, three and a half thousand forms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More than 459,000 leads have gone through it. Around two thousand a day. Over the last week of observation not a single one was lost.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second version is live now: automatic billing, client portals with their own settings, centralised management.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n\n\n\n<hr class=\"hr-dashed opacity-50 my-5\">\n\n\n<div class=\"wp-bootstrap-blocks-row row\">\n\t\n\n<div class=\"col-12 col-lg-3\">\n\t\t\t\n\n<h2 class=\"wp-block-heading with_decor\" id=\"stek\">Stack:<\/h2>\n\n\t<\/div>\n\n\n\n<div class=\"col-12 col-lg-5\">\n\t\t\t<div class=\"p-2\">\n\t\t\t\n\n<p class=\"wp-block-paragraph\">Backend \u2014 Laravel, PostgreSQL, queues on Redis. Frontend \u2014 Vue and TypeScript. Deployed with Docker.<\/p>\n\n\t\t<\/div>\n\t<\/div>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A hub that receives and delivers leads: it collects them from ad sources, normalises them and hands them off to CRM and analytics. More than 50 active customers.<\/p>\n","protected":false},"featured_media":2090,"template":"","isotope_tag":[93,91,92],"class_list":["post-2273","isotope","type-isotope","status-publish","has-post-thumbnail","hentry","isotope_category-web-apps-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/lazarewww.ru\/?rest_route=\/wp\/v2\/isotope\/2273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lazarewww.ru\/?rest_route=\/wp\/v2\/isotope"}],"about":[{"href":"https:\/\/lazarewww.ru\/?rest_route=\/wp\/v2\/types\/isotope"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lazarewww.ru\/?rest_route=\/wp\/v2\/media\/2090"}],"wp:attachment":[{"href":"https:\/\/lazarewww.ru\/?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2273"}],"wp:term":[{"taxonomy":"isotope_tag","embeddable":true,"href":"https:\/\/lazarewww.ru\/?rest_route=%2Fwp%2Fv2%2Fisotope_tag&post=2273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}