<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>VELMANTA blog</title>
    <link>https://www.velmanta.com/blog</link>
    <description>Odkryj, jak efektywnie wykorzystać CRM, automatyzację i AI, aby uporządkować procesy w firmie i zwiększyć jej skalowalność.</description>
    <language>pl</language>
    <pubDate>Sat, 12 Sep 2026 21:09:51 GMT</pubDate>
    <dc:date>2026-09-12T21:09:51Z</dc:date>
    <dc:language>pl</dc:language>
    <item>
      <title>HubSpot API – limity i rate limiting. Jak projektować integracje, które nie zatrzymają Twojego biznesu?</title>
      <link>https://www.velmanta.com/blog/hubspot-api-limity-rate-limiting</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://www.velmanta.com/blog/hubspot-api-limity-rate-limiting?hsLang=pl" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.velmanta.com/hubfs/ChatGPT%20Image%2012%20wrz%202026%20o%2020_21_29.png" alt="HubSpot API – limity i rate limiting. Jak projektować integracje, które nie zatrzymają Twojego biznesu?" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;div style="background: #F3F4FA; color: #1f2437; width: 100%; max-width: 100%; box-sizing: border-box; padding: 42px 36px 52px; border-radius: 20px; font-size: 17px; line-height: 1.75; font-family: inherit; box-shadow: 0 22px 60px rgba(6,1,41,0.14);"&gt; 
 &lt;p style="margin: 0 0 28px; font-size: 22px; font-family: inherit; line-height: 1.55;"&gt;&lt;strong&gt;Integracja działa świetnie. Do momentu, w którym nagle przestaje.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p style="margin: 0 0 24px; font-family: inherit;"&gt;CRM przestaje otrzymywać dane z formularza. Umowa nie trafia do klienta. Status płatności nie aktualizuje się w HubSpot. System ERP ma nowe informacje, ale CRM nadal pokazuje dane sprzed kilku godzin.&lt;/p&gt; 
 &lt;div style="margin: 34px 0; padding: 26px 30px; background: #FFFFFF; border: 1px solid #DCE2EC; border-left: 4px solid #286CFF; border-radius: 0 12px 12px 0; box-shadow: 0 10px 28px rgba(6,1,41,0.07); box-sizing: border-box;"&gt; 
  &lt;p style="margin: 0 0 8px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #667085; font-family: inherit;"&gt;W logach pojawia się&lt;/p&gt; 
  &lt;p style="margin: 0; font-size: 28px; line-height: 1.25; font-weight: bold; letter-spacing: -0.02em; color: #1f2437; font-family: inherit;"&gt;429 Too Many Requests&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;p style="margin: 0 0 20px; font-family: inherit;"&gt;I właśnie wtedy okazuje się, że samo &lt;strong&gt;„połączenie dwóch systemów przez API”&lt;/strong&gt; to za mało.&lt;/p&gt; 
 &lt;p style="margin: 0 0 28px; font-family: inherit;"&gt;Dobrze zaprojektowana integracja musi wiedzieć nie tylko &lt;strong&gt;co wysłać do HubSpot&lt;/strong&gt;, ale również &lt;strong&gt;kiedy, jak często i co zrobić, jeśli HubSpot chwilowo nie przyjmie kolejnego żądania&lt;/strong&gt;.&lt;/p&gt; 
 &lt;p style="margin: 32px 0 48px; font-size: 19px; font-family: inherit; line-height: 1.6;"&gt;I właśnie tutaj pojawia się &lt;strong&gt;rate limiting&lt;/strong&gt;.&lt;/p&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 6px; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czym jest rate limiting w HubSpot?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Każde wywołanie API to żądanie wysyłane przez zewnętrzny system do HubSpot.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Może to być na przykład:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;pobranie kontaktu,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;utworzenie firmy,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;aktualizacja deala,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;wyszukanie rekordu,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;pobranie właściciela,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;utworzenie powiązania pomiędzy obiektami,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;aktualizacja własnego obiektu CRM.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli integracja wykonuje kilka takich operacji dziennie, limity praktycznie nie są zauważalne.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Problem zaczyna się wtedy, gdy system obsługuje setki lub tysiące rekordów albo kilka aplikacji jednocześnie korzysta z tego samego konta HubSpot.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot ogranicza liczbę zapytań, które można wykonać w określonym czasie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Rate limiting&lt;/strong&gt; jest mechanizmem bezpieczeństwa, który chroni infrastrukturę przed sytuacją, w której jedna aplikacja wygenerowałaby ogromną liczbę zapytań i wpłynęła na działanie całej platformy.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Jakie są limity HubSpot API?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 24px; font-family: inherit;"&gt;W praktyce warto zwrócić uwagę przede wszystkim na dwa rodzaje limitów: krótkookresowy oraz dzienny.&lt;/p&gt; 
  &lt;div style="margin: 26px 0 28px;"&gt; 
   &lt;div style="margin: 0 0 14px; padding: 22px 24px; background: #FFFFFF; border: 1px solid #DCE2EC; border-left: 4px solid #286CFF; border-radius: 0 12px 12px 0; box-shadow: 0 8px 22px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 12px; line-height: 1.4; letter-spacing: 0.10em; text-transform: uppercase; color: #286cff; font-weight: bold; font-family: inherit;"&gt;Limit krótkookresowy&lt;/p&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 20px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Burst limit&lt;/p&gt; 
    &lt;p style="margin: 0; color: #667085; font-family: inherit;"&gt;Określa, ile zapytań aplikacja może wykonać w krótkim przedziale czasu.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div style="margin: 0; padding: 22px 24px; background: #E8EDFF; border: 1px solid #D5DEFF; border-left: 4px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 12px; line-height: 1.4; letter-spacing: 0.10em; text-transform: uppercase; color: #286cff; font-weight: bold; font-family: inherit;"&gt;Limit dzienny&lt;/p&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 20px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Dzienna liczba wywołań API&lt;/p&gt; 
    &lt;p style="margin: 0; color: #667085; font-family: inherit;"&gt;Określa, ile zapytań może zostać wykonanych w ciągu dnia w ramach dostępnego limitu konta.&lt;/p&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dla prywatnie dystrybuowanych aplikacji ogólne limity wyglądają następująco:&lt;/p&gt; 
  &lt;p style="margin: 0 0 10px; font-size: 14px; line-height: 1.5; color: #667085; font-weight: 600; font-family: inherit;"&gt;Porównanie limitów według planu HubSpot&lt;/p&gt; 
  &lt;div style="width: 100%; max-width: 100%; margin: 0 0 30px; overflow-x: auto; border: 1px solid #DCE2EC; border-radius: 12px; background: #FFFFFF; box-sizing: border-box; box-shadow: 0 8px 22px rgba(6,1,41,0.05);"&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;thead&gt; 
     &lt;tr style="background: #060129;"&gt; 
      &lt;th style="padding: 16px; text-align: center; border: none; color: #ffffff; font-weight: bold; font-family: inherit;"&gt;Plan HubSpot&lt;/th&gt; 
      &lt;th style="padding: 16px; text-align: center; border: none; color: #ffffff; font-weight: bold; font-family: inherit;"&gt;Limit na 10 sekund&lt;/th&gt; 
      &lt;th style="padding: 16px; text-align: center; border: none; color: #ffffff; font-weight: bold; font-family: inherit;"&gt;Limit dzienny&lt;/th&gt; 
     &lt;/tr&gt; 
    &lt;/thead&gt; 
    &lt;tbody&gt; 
     &lt;tr style="background: #ffffff;"&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;Free / Starter&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;100 zapytań&lt;/strong&gt;&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;250 000&lt;/strong&gt;&lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr style="background: #F7F8FC;"&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;Professional&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;190 zapytań&lt;/strong&gt;&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;625 000&lt;/strong&gt;&lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr style="background: #ffffff;"&gt; 
      &lt;td style="padding: 16px; text-align: center;"&gt;Enterprise&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center;"&gt;&lt;strong&gt;190 zapytań&lt;/strong&gt;&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center;"&gt;&lt;strong&gt;1 000 000&lt;/strong&gt;&lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;W przypadku API Limit Increase limit krótkookresowy może zostać zwiększony, podobnie jak dostępny limit dzienny.&lt;/p&gt; 
  &lt;p style="margin: 0 0 15px; font-family: inherit;"&gt;Najważniejsza różnica wygląda jednak tak:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Burst limit jest liczony per aplikacja, natomiast limit dzienny jest współdzielony pomiędzy aplikacjami działającymi na tym samym koncie HubSpot.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 28px; font-family: inherit;"&gt;I właśnie ten drugi element potrafi powodować niespodzianki.&lt;/p&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;&lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy kilka integracji współdzieli limit HubSpot API?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Wyobraźmy sobie firmę posiadającą:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;integrację ERP z HubSpot,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizację systemu fakturowego,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;automatyczne generowanie umów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizację danych z hurtownią,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;dodatkową aplikację raportową.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Każda z nich osobno może generować rozsądną liczbę zapytań.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Problem pojawia się wtedy, gdy patrzymy na cały ekosystem.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli kilka integracji intensywnie synchronizuje dane, kolejna może zacząć otrzymywać błędy mimo tego, że sama wykonuje stosunkowo niewiele operacji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dlatego projektując architekturę HubSpot, nie patrzymy na pojedynczy skrypt.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Patrzymy na &lt;strong&gt;cały ruch generowany przez systemy firmy&lt;/strong&gt;.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;&lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;429 Too Many Requests – co oznacza ten błąd w HubSpot?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Jeżeli aplikacja przekroczy dostępny limit, HubSpot może zwrócić:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 26px; padding: 24px 26px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.32); border-radius: 14px; box-shadow: 0 14px 32px rgba(6,1,41,0.14); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; color: #ffffff; font-size: 14px; line-height: 1.9; font-family: inherit;"&gt;&lt;strong&gt;HTTP 429 Too Many Requests&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Nie powinno to automatycznie oznaczać awarii integracji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 14px; font-family: inherit;"&gt;W praktyce oznacza:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 20px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;em&gt;„Zwolnij. Spróbuj ponownie później.”&lt;/em&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;I tutaj bardzo łatwo odróżnić integrację przygotowaną do pracy produkcyjnej od prostego skryptu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Najgorszy możliwy mechanizm wygląda tak:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Błędna obsługa 429&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot zwraca 429&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;aplikacja przekroczyła dostępny limit&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Aplikacja od razu ponawia żądanie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;nie daje API czasu na odzyskanie dostępnego limitu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot ponownie zwraca 429&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;problem nadal występuje&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         04 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Aplikacja ponawia żądanie kolejny raz&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;liczba requestów jeszcze bardziej rośnie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         05 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Ruch się kumuluje&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;system sam pogłębia problem, przed którym próbuje się obronić&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;System sam pogłębia problem, przed którym próbuje się obronić.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Retry i exponential backoff – jak obsłużyć błąd 429?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Integracja powinna posiadać mechanizm ponawiania nieudanych operacji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Nie oznacza to jednak próbowania ponownie co sekundę aż do skutku.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dobrym rozwiązaniem jest &lt;strong&gt;exponential backoff&lt;/strong&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Przykładowo:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Exponential backoff&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Pierwsza próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykonana od razu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Druga próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 2 sekundach, jeśli poprzednia zakończyła się błędem 429&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Trzecia próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 4 sekundach, jeśli limit nadal jest przekroczony&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         04 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Czwarta próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 8 sekundach&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Przerwa pomiędzy kolejnymi próbami stopniowo rośnie.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;W systemach działających na większą skalę warto również dodać tzw. &lt;strong&gt;jitter&lt;/strong&gt;, czyli niewielkie losowe przesunięcie czasu ponowienia.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli 20 workerów jednocześnie otrzyma 429 i wszystkie spróbują ponownie dokładnie po dwóch sekundach, HubSpot ponownie otrzyma falę requestów w tym samym momencie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Jitter pozwala rozproszyć ruch w czasie.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Kolejka zadań zamiast wyścigu requestów&lt;/h2&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;&lt;/div&gt; 
  &lt;p style="margin: 28px 0 16px; font-family: inherit;"&gt;Przy większych automatyzacjach znacznie bezpieczniejszy model wygląda tak:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Przepływ zadania&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Zdarzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;proces biznesowy uruchamia zadanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kolejka&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;zadanie czeka na bezpieczne wykonanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Worker&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;pobiera i przetwarza zadanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         04 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Rate limiter&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;kontroluje tempo wywołań API&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         05 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot API&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykonuje operację&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         06 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Sukces&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;zadanie zostaje zakończone&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Jeżeli HubSpot chwilowo nie może przyjąć kolejnego zapytania:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Obsługa błędu 429&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Błąd 429&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;HubSpot chwilowo odrzuca kolejne żądanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Retry&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;system wyznacza właściwy moment ponowienia&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kolejka&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;zadanie wraca do oczekiwania&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         04 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Ponowna próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;operacja zostaje wykonana ponownie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dzięki temu proces biznesowy nie znika tylko dlatego, że API przez kilka sekund nie przyjęło kolejnego requestu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;To szczególnie ważne przy procesach takich jak:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;generowanie dokumentów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;aktualizacja statusów umów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizacja ERP,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;obsługa płatności,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;tworzenie kontaktów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;wysyłanie komunikacji,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizacja dużych baz danych.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;System ma prowadzić proces, a nie wymagać od człowieka pilnowania, czy każdy request zakończył się kodem 200.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Batch API – czy naprawdę potrzebujesz requestu dla każdego rekordu?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Drugim częstym problemem nie jest sam limit.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jest nim sposób napisania integracji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Załóżmy, że musimy zaktualizować 1000 kontaktów.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Najprostsze rozwiązanie wygląda tak:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 26px; padding: 24px 26px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.32); border-radius: 14px; box-shadow: 0 14px 32px rgba(6,1,41,0.14); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 16px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Operacje wykonywane rekord po rekordzie&lt;/p&gt; 
   &lt;p style="margin: 0; color: #ffffff; font-size: 14px; line-height: 1.9; font-family: inherit;"&gt;&lt;strong&gt;Kontakt 1&lt;/strong&gt;: GET, a następnie PATCH&lt;br&gt;&lt;strong&gt;Kontakt 2&lt;/strong&gt;: GET, a następnie PATCH&lt;br&gt;&lt;strong&gt;Kontakt 3&lt;/strong&gt;: GET, a następnie PATCH&lt;br&gt;...&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Bardzo szybko generujemy tysiące operacji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot udostępnia jednak &lt;strong&gt;endpointy batchowe&lt;/strong&gt;, dzięki którym wiele rekordów można obsłużyć w jednym żądaniu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Dlatego przy projektowaniu większych integracji zawsze warto sprawdzić:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Czy naprawdę potrzebujemy wykonać osobny request dla każdego rekordu?&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Czasem kilkaset wywołań można zastąpić kilkoma.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Oznacza to:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mniejsze wykorzystanie limitów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;szybszą synchronizację,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mniejszą liczbę potencjalnych błędów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mniejsze obciążenie własnej infrastruktury.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Cache – najdroższy request to ten, którego nie trzeba było wykonać&lt;/h2&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Wyobraźmy sobie aplikację, która przy każdej operacji pobiera z HubSpot:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;listę właścicieli,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;definicje właściwości,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;konfigurację pipeline'u,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;informacje o obiekcie.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli dane praktycznie się nie zmieniają, nie ma sensu pobierać ich setki razy.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można wykorzystać &lt;strong&gt;cache&lt;/strong&gt;.&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Sprawdzenie cache&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Sprawdź cache&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;aplikacja najpierw szuka danych lokalnie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Dane są dostępne&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;użyj ich bez wykonywania kolejnego requestu do HubSpot&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Danych nie ma&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;pobierz je z HubSpot, a następnie zapisz w cache&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;To jedna z najprostszych metod ograniczenia liczby zapytań.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Webhook czy polling?&lt;/h2&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;&lt;/div&gt; 
  &lt;p style="margin: 28px 0 18px; font-family: inherit;"&gt;Kolejny klasyczny przykład.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Chcemy dowiedzieć się, czy kontakt został zmieniony.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Możemy sprawdzać HubSpot regularnie:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Polling&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Pierwsze sprawdzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 30 sekundach&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kolejne sprawdzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po następnych 30 sekundach&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Następne sprawdzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;i tak dalej, nawet jeśli żadne dane się nie zmieniły&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;To &lt;strong&gt;polling&lt;/strong&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;System nie wie, czy cokolwiek się wydarzyło, więc cały czas pyta.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Przy jednej integracji może nie być problemu. Przy tysiącach rekordów robi się kosztownie.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Alternatywą są &lt;strong&gt;webhooki&lt;/strong&gt;.&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Webhook&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykrywa zmianę kontaktu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Webhook&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;przekazuje informację o zdarzeniu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Nasza aplikacja&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykonuje odpowiednią operację&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 14px; font-family: inherit;"&gt;Zamiast regularnie pytać system:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;em&gt;„Czy już coś się zmieniło?”&lt;/em&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;czekamy, aż system sam poinformuje nas o zmianie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;W dobrze zaprojektowanej architekturze webhooki obsługują zdarzenia na bieżąco, a synchronizacja okresowa pełni funkcję kontrolną.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;CRM Search API ma własne limity&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Warto zwrócić szczególną uwagę na endpointy wyszukiwania CRM.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;CRM Search API posiada bardziej restrykcyjne limity niż ogólne API HubSpot.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Obecnie Search API może obsługiwać do &lt;strong&gt;5 zapytań na sekundę&lt;/strong&gt;, a pojedyncza strona odpowiedzi może zawierać maksymalnie &lt;strong&gt;200 rekordów&lt;/strong&gt;.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;To istotne, ponieważ wyszukiwanie rekordów bardzo łatwo trafia do pętli.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Przykład:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Dla każdego zamówienia&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         01 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kontakt&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wyszukaj rekord po adresie e-mail&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         02 
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
         &amp;nbsp; 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Firma&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wyszukaj rekord po NIP&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
         03 
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Deal&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wyszukaj odpowiednią transakcję&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Przy większym imporcie szybko może okazać się, że to właśnie Search API, a nie ogólny limit konta, jest pierwszym wąskim gardłem.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Dlatego architektura integracji powinna uwzględniać &lt;strong&gt;limity konkretnych endpointów&lt;/strong&gt;, a nie tylko globalny limit HubSpot.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy zwiększenie limitu HubSpot API rozwiązuje problem?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Czasami tak.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot oferuje możliwość zwiększenia dostępnych limitów API.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Ale zakup większego limitu nie powinien być pierwszą reakcją.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli aplikacja wykonuje 500 000 requestów, z których 300 000 jest niepotrzebnych, większy limit nie naprawia architektury.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Pozwala jej tylko dłużej działać w nieefektywny sposób.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Zanim zwiększymy limit, warto sprawdzić:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy można zastosować batch API,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy nie odpytujemy ciągle tych samych danych,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy możemy zastosować cache,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy polling można zastąpić webhookami,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy wszystkie requesty są naprawdę potrzebne,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy integracje nie wykonują tej samej pracy niezależnie od siebie.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;Dopiero później warto analizować zwiększenie dostępnej przepustowości.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Monitoring HubSpot API powinien być częścią integracji&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dobrze zaprojektowana integracja nie czeka na moment, w którym biznes zauważy problem.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;HubSpot zwraca między innymi nagłówki pozwalające kontrolować dostępny limit:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 26px; padding: 24px 26px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.32); border-radius: 14px; box-shadow: 0 14px 32px rgba(6,1,41,0.14); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 16px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Nagłówki limitów&lt;/p&gt; 
   &lt;p style="margin: 0; color: #ffffff; font-size: 14px; line-height: 1.9; font-family: inherit;"&gt;&lt;strong&gt;X-HubSpot-RateLimit-Max&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;X-HubSpot-RateLimit-Remaining&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;X-HubSpot-RateLimit-Interval-Milliseconds&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można dzięki nim kontrolować, ile zapytań pozostało w aktualnym oknie czasowym.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot udostępnia również monitoring wykorzystania API bezpośrednio w platformie.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dzięki temu można obserwować trendy, wykrywać nietypowe skoki wykorzystania i reagować &lt;strong&gt;zanim integracje zaczną otrzymywać błędy 429&lt;/strong&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 14px; font-family: inherit;"&gt;Bo jeżeli o przekroczeniu limitu dowiadujemy się od handlowca, który mówi:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;em&gt;„Od rana nie aktualizują mi się deale.”&lt;/em&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;to monitoring zadziałał zdecydowanie za późno.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding: 34px 30px; background: #E9EDF8; border: 1px solid #DCE2EC; border-radius: 16px; box-shadow: 0 12px 30px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Rate limiting to nie problem API, tylko architektury.&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Limitów nie da się całkowicie wyeliminować.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można natomiast zaprojektować system tak, aby użytkownik praktycznie ich nie zauważał.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Dobra integracja HubSpot powinna posiadać:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;kontrolę tempa wysyłania requestów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;obsługę błędów 429,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;retry z exponential backoff,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;kolejkę zadań,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mechanizm idempotencji,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;monitoring,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;cache,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;wykorzystanie endpointów batchowych,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;webhooki tam, gdzie jest to uzasadnione,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mechanizm odzyskiwania zadań, które nie zostały wykonane.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Wtedy chwilowe przekroczenie limitu nie zatrzymuje procesu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Zadanie trafia do kolejki, system zwalnia, wykonuje je ponownie i kontynuuje pracę.&lt;/p&gt; 
  &lt;p style="margin: 24px 0 0; font-size: 19px; font-family: inherit; padding-top: 22px; border-top: 1px solid #DCE2EC; line-height: 1.65;"&gt;&lt;strong&gt;Bez Excela. Bez ręcznego poprawiania danych. Bez osoby sprawdzającej codziennie rano, czy „integracja nadal działa”.&lt;/strong&gt;&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Integracja HubSpot powinna skalować się razem z biznesem&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Integrację można zbudować tak, aby działała dzisiaj.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można też zaprojektować ją tak, aby nadal działała wtedy, gdy liczba klientów, transakcji i automatyzacji wzrośnie pięciokrotnie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;To dwie zupełnie różne rzeczy.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;W Velmanta projektujemy integracje HubSpot jako część całej architektury procesów firmy.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Analizujemy nie tylko &lt;em&gt;jak połączyć system A z systemem B&lt;/em&gt;, ale przede wszystkim &lt;em&gt;jak dane mają przepływać przez organizację, żeby proces działał stabilnie również wtedy, gdy firma zwiększy skalę&lt;/em&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Bo dobrze zaprojektowane API powinno być niewidoczne.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Dane po prostu trafiają tam, gdzie powinny. Procesy wykonują się automatycznie. A technologia wspiera ludzi zamiast tworzyć kolejne miejsce, którego ktoś musi pilnować.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
    &amp;nbsp; 
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Najczęściej zadawane pytania o limity HubSpot API&lt;/h2&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Co oznacza błąd 429 w HubSpot?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Błąd &lt;strong&gt;429 Too Many Requests&lt;/strong&gt; oznacza, że aplikacja przekroczyła dostępny limit wywołań API. Integracja powinna wtedy ograniczyć tempo requestów i ponowić operację zgodnie z odpowiednią strategią retry.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Ile requestów można wykonać do HubSpot API?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Limit zależy od planu HubSpot, rodzaju aplikacji oraz dostępnych rozszerzeń. Dla prywatnie dystrybuowanych aplikacji limity krótkookresowe i dzienne różnią się w zależności od posiadanej wersji HubSpot.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Jak uniknąć błędu 429 w HubSpot?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Najczęściej stosuje się rate limiting po stronie aplikacji, kolejki zadań, retry z exponential backoff, batch API, cache oraz webhooki zamiast nadmiernego pollingu.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy HubSpot Search API ma osobny limit?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Tak. CRM Search API posiada własne ograniczenia i dlatego przy większych synchronizacjach powinno być traktowane osobno od ogólnych limitów API HubSpot.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy można zwiększyć limit HubSpot API?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Tak, HubSpot oferuje możliwość zwiększenia dostępnych limitów. Zanim jednak zwiększymy limit, warto najpierw sprawdzić, czy integracja nie wykonuje zbędnych lub powtarzających się requestów.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</description>
      <content:encoded>&lt;div style="background: #F3F4FA; color: #1f2437; width: 100%; max-width: 100%; box-sizing: border-box; padding: 42px 36px 52px; border-radius: 20px; font-size: 17px; line-height: 1.75; font-family: inherit; box-shadow: 0 22px 60px rgba(6,1,41,0.14);"&gt; 
 &lt;p style="margin: 0 0 28px; font-size: 22px; font-family: inherit; line-height: 1.55;"&gt;&lt;strong&gt;Integracja działa świetnie. Do momentu, w którym nagle przestaje.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p style="margin: 0 0 24px; font-family: inherit;"&gt;CRM przestaje otrzymywać dane z formularza. Umowa nie trafia do klienta. Status płatności nie aktualizuje się w HubSpot. System ERP ma nowe informacje, ale CRM nadal pokazuje dane sprzed kilku godzin.&lt;/p&gt; 
 &lt;div style="margin: 34px 0; padding: 26px 30px; background: #FFFFFF; border: 1px solid #DCE2EC; border-left: 4px solid #286CFF; border-radius: 0 12px 12px 0; box-shadow: 0 10px 28px rgba(6,1,41,0.07); box-sizing: border-box;"&gt; 
  &lt;p style="margin: 0 0 8px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #667085; font-family: inherit;"&gt;W logach pojawia się&lt;/p&gt; 
  &lt;p style="margin: 0; font-size: 28px; line-height: 1.25; font-weight: bold; letter-spacing: -0.02em; color: #1f2437; font-family: inherit;"&gt;429 Too Many Requests&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;p style="margin: 0 0 20px; font-family: inherit;"&gt;I właśnie wtedy okazuje się, że samo &lt;strong&gt;„połączenie dwóch systemów przez API”&lt;/strong&gt; to za mało.&lt;/p&gt; 
 &lt;p style="margin: 0 0 28px; font-family: inherit;"&gt;Dobrze zaprojektowana integracja musi wiedzieć nie tylko &lt;strong&gt;co wysłać do HubSpot&lt;/strong&gt;, ale również &lt;strong&gt;kiedy, jak często i co zrobić, jeśli HubSpot chwilowo nie przyjmie kolejnego żądania&lt;/strong&gt;.&lt;/p&gt; 
 &lt;p style="margin: 32px 0 48px; font-size: 19px; font-family: inherit; line-height: 1.6;"&gt;I właśnie tutaj pojawia się &lt;strong&gt;rate limiting&lt;/strong&gt;.&lt;/p&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 6px; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czym jest rate limiting w HubSpot?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Każde wywołanie API to żądanie wysyłane przez zewnętrzny system do HubSpot.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Może to być na przykład:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;pobranie kontaktu,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;utworzenie firmy,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;aktualizacja deala,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;wyszukanie rekordu,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;pobranie właściciela,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;utworzenie powiązania pomiędzy obiektami,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;aktualizacja własnego obiektu CRM.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli integracja wykonuje kilka takich operacji dziennie, limity praktycznie nie są zauważalne.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Problem zaczyna się wtedy, gdy system obsługuje setki lub tysiące rekordów albo kilka aplikacji jednocześnie korzysta z tego samego konta HubSpot.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot ogranicza liczbę zapytań, które można wykonać w określonym czasie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Rate limiting&lt;/strong&gt; jest mechanizmem bezpieczeństwa, który chroni infrastrukturę przed sytuacją, w której jedna aplikacja wygenerowałaby ogromną liczbę zapytań i wpłynęła na działanie całej platformy.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Jakie są limity HubSpot API?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 24px; font-family: inherit;"&gt;W praktyce warto zwrócić uwagę przede wszystkim na dwa rodzaje limitów: krótkookresowy oraz dzienny.&lt;/p&gt; 
  &lt;div style="margin: 26px 0 28px;"&gt; 
   &lt;div style="margin: 0 0 14px; padding: 22px 24px; background: #FFFFFF; border: 1px solid #DCE2EC; border-left: 4px solid #286CFF; border-radius: 0 12px 12px 0; box-shadow: 0 8px 22px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 12px; line-height: 1.4; letter-spacing: 0.10em; text-transform: uppercase; color: #286cff; font-weight: bold; font-family: inherit;"&gt;Limit krótkookresowy&lt;/p&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 20px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Burst limit&lt;/p&gt; 
    &lt;p style="margin: 0; color: #667085; font-family: inherit;"&gt;Określa, ile zapytań aplikacja może wykonać w krótkim przedziale czasu.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div style="margin: 0; padding: 22px 24px; background: #E8EDFF; border: 1px solid #D5DEFF; border-left: 4px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 12px; line-height: 1.4; letter-spacing: 0.10em; text-transform: uppercase; color: #286cff; font-weight: bold; font-family: inherit;"&gt;Limit dzienny&lt;/p&gt; 
    &lt;p style="margin: 0 0 6px; font-size: 20px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Dzienna liczba wywołań API&lt;/p&gt; 
    &lt;p style="margin: 0; color: #667085; font-family: inherit;"&gt;Określa, ile zapytań może zostać wykonanych w ciągu dnia w ramach dostępnego limitu konta.&lt;/p&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dla prywatnie dystrybuowanych aplikacji ogólne limity wyglądają następująco:&lt;/p&gt; 
  &lt;p style="margin: 0 0 10px; font-size: 14px; line-height: 1.5; color: #667085; font-weight: 600; font-family: inherit;"&gt;Porównanie limitów według planu HubSpot&lt;/p&gt; 
  &lt;div style="width: 100%; max-width: 100%; margin: 0 0 30px; overflow-x: auto; border: 1px solid #DCE2EC; border-radius: 12px; background: #FFFFFF; box-sizing: border-box; box-shadow: 0 8px 22px rgba(6,1,41,0.05);"&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;thead&gt; 
     &lt;tr style="background: #060129;"&gt; 
      &lt;th style="padding: 16px; text-align: center; border: none; color: #ffffff; font-weight: bold; font-family: inherit;"&gt;Plan HubSpot&lt;/th&gt; 
      &lt;th style="padding: 16px; text-align: center; border: none; color: #ffffff; font-weight: bold; font-family: inherit;"&gt;Limit na 10 sekund&lt;/th&gt; 
      &lt;th style="padding: 16px; text-align: center; border: none; color: #ffffff; font-weight: bold; font-family: inherit;"&gt;Limit dzienny&lt;/th&gt; 
     &lt;/tr&gt; 
    &lt;/thead&gt; 
    &lt;tbody&gt; 
     &lt;tr style="background: #ffffff;"&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;Free / Starter&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;100 zapytań&lt;/strong&gt;&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;250 000&lt;/strong&gt;&lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr style="background: #F7F8FC;"&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;Professional&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;190 zapytań&lt;/strong&gt;&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center; border-bottom: 1px solid #DCE2EC;"&gt;&lt;strong&gt;625 000&lt;/strong&gt;&lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr style="background: #ffffff;"&gt; 
      &lt;td style="padding: 16px; text-align: center;"&gt;Enterprise&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center;"&gt;&lt;strong&gt;190 zapytań&lt;/strong&gt;&lt;/td&gt; 
      &lt;td style="padding: 16px; text-align: center;"&gt;&lt;strong&gt;1 000 000&lt;/strong&gt;&lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;W przypadku API Limit Increase limit krótkookresowy może zostać zwiększony, podobnie jak dostępny limit dzienny.&lt;/p&gt; 
  &lt;p style="margin: 0 0 15px; font-family: inherit;"&gt;Najważniejsza różnica wygląda jednak tak:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Burst limit jest liczony per aplikacja, natomiast limit dzienny jest współdzielony pomiędzy aplikacjami działającymi na tym samym koncie HubSpot.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 28px; font-family: inherit;"&gt;I właśnie ten drugi element potrafi powodować niespodzianki.&lt;/p&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;
   &lt;img src="https://www.velmanta.com/hs-fs/hubfs/ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_22%20(2).png?width=1672&amp;amp;height=941&amp;amp;name=ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_22%20(2).png" width="1672" height="941" alt="Limity HubSpot API i rate limiting" style="display: block; width: 100%; max-width: 100%; height: auto; margin: 0; border-radius: 9px;"&gt;
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy kilka integracji współdzieli limit HubSpot API?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Wyobraźmy sobie firmę posiadającą:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;integrację ERP z HubSpot,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizację systemu fakturowego,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;automatyczne generowanie umów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizację danych z hurtownią,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;dodatkową aplikację raportową.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Każda z nich osobno może generować rozsądną liczbę zapytań.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Problem pojawia się wtedy, gdy patrzymy na cały ekosystem.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli kilka integracji intensywnie synchronizuje dane, kolejna może zacząć otrzymywać błędy mimo tego, że sama wykonuje stosunkowo niewiele operacji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dlatego projektując architekturę HubSpot, nie patrzymy na pojedynczy skrypt.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Patrzymy na &lt;strong&gt;cały ruch generowany przez systemy firmy&lt;/strong&gt;.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;
   &lt;img src="https://www.velmanta.com/hs-fs/hubfs/ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_22%20(1).png?width=1672&amp;amp;height=941&amp;amp;name=ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_22%20(1).png" width="1672" height="941" alt="Współdzielony ruch integracji HubSpot API" style="display: block; width: 100%; max-width: 100%; height: auto; margin: 0; border-radius: 9px;"&gt;
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;429 Too Many Requests – co oznacza ten błąd w HubSpot?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Jeżeli aplikacja przekroczy dostępny limit, HubSpot może zwrócić:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 26px; padding: 24px 26px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.32); border-radius: 14px; box-shadow: 0 14px 32px rgba(6,1,41,0.14); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; color: #ffffff; font-size: 14px; line-height: 1.9; font-family: inherit;"&gt;&lt;strong&gt;HTTP 429 Too Many Requests&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Nie powinno to automatycznie oznaczać awarii integracji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 14px; font-family: inherit;"&gt;W praktyce oznacza:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 20px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;em&gt;„Zwolnij. Spróbuj ponownie później.”&lt;/em&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;I tutaj bardzo łatwo odróżnić integrację przygotowaną do pracy produkcyjnej od prostego skryptu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Najgorszy możliwy mechanizm wygląda tak:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Błędna obsługa 429&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot zwraca 429&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;aplikacja przekroczyła dostępny limit&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Aplikacja od razu ponawia żądanie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;nie daje API czasu na odzyskanie dostępnego limitu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot ponownie zwraca 429&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;problem nadal występuje&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        04
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Aplikacja ponawia żądanie kolejny raz&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;liczba requestów jeszcze bardziej rośnie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        05
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Ruch się kumuluje&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;system sam pogłębia problem, przed którym próbuje się obronić&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;System sam pogłębia problem, przed którym próbuje się obronić.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Retry i exponential backoff – jak obsłużyć błąd 429?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Integracja powinna posiadać mechanizm ponawiania nieudanych operacji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Nie oznacza to jednak próbowania ponownie co sekundę aż do skutku.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dobrym rozwiązaniem jest &lt;strong&gt;exponential backoff&lt;/strong&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Przykładowo:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Exponential backoff&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Pierwsza próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykonana od razu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Druga próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 2 sekundach, jeśli poprzednia zakończyła się błędem 429&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Trzecia próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 4 sekundach, jeśli limit nadal jest przekroczony&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        04
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Czwarta próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 8 sekundach&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Przerwa pomiędzy kolejnymi próbami stopniowo rośnie.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;W systemach działających na większą skalę warto również dodać tzw. &lt;strong&gt;jitter&lt;/strong&gt;, czyli niewielkie losowe przesunięcie czasu ponowienia.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli 20 workerów jednocześnie otrzyma 429 i wszystkie spróbują ponownie dokładnie po dwóch sekundach, HubSpot ponownie otrzyma falę requestów w tym samym momencie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Jitter pozwala rozproszyć ruch w czasie.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Kolejka zadań zamiast wyścigu requestów&lt;/h2&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;
   &lt;img src="https://www.velmanta.com/hs-fs/hubfs/ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_23%20(3).png?width=1672&amp;amp;height=941&amp;amp;name=ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_23%20(3).png" width="1672" height="941" alt="Kolejka zadań i rate limiting HubSpot API" style="display: block; width: 100%; max-width: 100%; height: auto; margin: 0; border-radius: 9px;"&gt;
  &lt;/div&gt; 
  &lt;p style="margin: 28px 0 16px; font-family: inherit;"&gt;Przy większych automatyzacjach znacznie bezpieczniejszy model wygląda tak:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Przepływ zadania&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Zdarzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;proces biznesowy uruchamia zadanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kolejka&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;zadanie czeka na bezpieczne wykonanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Worker&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;pobiera i przetwarza zadanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        04
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Rate limiter&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;kontroluje tempo wywołań API&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        05
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot API&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykonuje operację&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        06
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Sukces&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;zadanie zostaje zakończone&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Jeżeli HubSpot chwilowo nie może przyjąć kolejnego zapytania:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Obsługa błędu 429&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Błąd 429&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;HubSpot chwilowo odrzuca kolejne żądanie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Retry&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;system wyznacza właściwy moment ponowienia&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kolejka&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;zadanie wraca do oczekiwania&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        04
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Ponowna próba&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;operacja zostaje wykonana ponownie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dzięki temu proces biznesowy nie znika tylko dlatego, że API przez kilka sekund nie przyjęło kolejnego requestu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;To szczególnie ważne przy procesach takich jak:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;generowanie dokumentów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;aktualizacja statusów umów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizacja ERP,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;obsługa płatności,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;tworzenie kontaktów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;wysyłanie komunikacji,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;synchronizacja dużych baz danych.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;System ma prowadzić proces, a nie wymagać od człowieka pilnowania, czy każdy request zakończył się kodem 200.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Batch API – czy naprawdę potrzebujesz requestu dla każdego rekordu?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Drugim częstym problemem nie jest sam limit.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jest nim sposób napisania integracji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Załóżmy, że musimy zaktualizować 1000 kontaktów.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Najprostsze rozwiązanie wygląda tak:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 26px; padding: 24px 26px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.32); border-radius: 14px; box-shadow: 0 14px 32px rgba(6,1,41,0.14); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 16px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Operacje wykonywane rekord po rekordzie&lt;/p&gt; 
   &lt;p style="margin: 0; color: #ffffff; font-size: 14px; line-height: 1.9; font-family: inherit;"&gt;&lt;strong&gt;Kontakt 1&lt;/strong&gt;: GET, a następnie PATCH&lt;br&gt;&lt;strong&gt;Kontakt 2&lt;/strong&gt;: GET, a następnie PATCH&lt;br&gt;&lt;strong&gt;Kontakt 3&lt;/strong&gt;: GET, a następnie PATCH&lt;br&gt;...&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Bardzo szybko generujemy tysiące operacji.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot udostępnia jednak &lt;strong&gt;endpointy batchowe&lt;/strong&gt;, dzięki którym wiele rekordów można obsłużyć w jednym żądaniu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Dlatego przy projektowaniu większych integracji zawsze warto sprawdzić:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;Czy naprawdę potrzebujemy wykonać osobny request dla każdego rekordu?&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Czasem kilkaset wywołań można zastąpić kilkoma.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Oznacza to:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mniejsze wykorzystanie limitów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;szybszą synchronizację,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mniejszą liczbę potencjalnych błędów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mniejsze obciążenie własnej infrastruktury.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Cache – najdroższy request to ten, którego nie trzeba było wykonać&lt;/h2&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Wyobraźmy sobie aplikację, która przy każdej operacji pobiera z HubSpot:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;listę właścicieli,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;definicje właściwości,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;konfigurację pipeline'u,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;informacje o obiekcie.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli dane praktycznie się nie zmieniają, nie ma sensu pobierać ich setki razy.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można wykorzystać &lt;strong&gt;cache&lt;/strong&gt;.&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Sprawdzenie cache&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Sprawdź cache&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;aplikacja najpierw szuka danych lokalnie&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Dane są dostępne&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;użyj ich bez wykonywania kolejnego requestu do HubSpot&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Danych nie ma&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;pobierz je z HubSpot, a następnie zapisz w cache&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;To jedna z najprostszych metod ograniczenia liczby zapytań.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Webhook czy polling?&lt;/h2&gt; 
  &lt;div style="margin: 30px 0 0; padding: 8px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 14px; box-shadow: 0 14px 34px rgba(6,1,41,0.10); overflow: hidden; box-sizing: border-box;"&gt;
   &lt;img src="https://www.velmanta.com/hs-fs/hubfs/ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_23%20(4).png?width=1672&amp;amp;height=941&amp;amp;name=ChatGPT%20Image%2012%20wrz%202026%20o%2020_12_23%20(4).png" width="1672" height="941" alt="Webhook i polling w integracji HubSpot API" style="display: block; width: 100%; max-width: 100%; height: auto; margin: 0; border-radius: 9px;"&gt;
  &lt;/div&gt; 
  &lt;p style="margin: 28px 0 18px; font-family: inherit;"&gt;Kolejny klasyczny przykład.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Chcemy dowiedzieć się, czy kontakt został zmieniony.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Możemy sprawdzać HubSpot regularnie:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Polling&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Pierwsze sprawdzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po 30 sekundach&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kolejne sprawdzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;po następnych 30 sekundach&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Następne sprawdzenie&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;i tak dalej, nawet jeśli żadne dane się nie zmieniły&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;To &lt;strong&gt;polling&lt;/strong&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;System nie wie, czy cokolwiek się wydarzyło, więc cały czas pyta.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Przy jednej integracji może nie być problemu. Przy tysiącach rekordów robi się kosztownie.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Alternatywą są &lt;strong&gt;webhooki&lt;/strong&gt;.&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Webhook&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;HubSpot&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykrywa zmianę kontaktu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Webhook&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;przekazuje informację o zdarzeniu&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Nasza aplikacja&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wykonuje odpowiednią operację&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 14px; font-family: inherit;"&gt;Zamiast regularnie pytać system:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;em&gt;„Czy już coś się zmieniło?”&lt;/em&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;czekamy, aż system sam poinformuje nas o zmianie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;strong&gt;W dobrze zaprojektowanej architekturze webhooki obsługują zdarzenia na bieżąco, a synchronizacja okresowa pełni funkcję kontrolną.&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;CRM Search API ma własne limity&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Warto zwrócić szczególną uwagę na endpointy wyszukiwania CRM.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;CRM Search API posiada bardziej restrykcyjne limity niż ogólne API HubSpot.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 18px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Obecnie Search API może obsługiwać do &lt;strong&gt;5 zapytań na sekundę&lt;/strong&gt;, a pojedyncza strona odpowiedzi może zawierać maksymalnie &lt;strong&gt;200 rekordów&lt;/strong&gt;.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;To istotne, ponieważ wyszukiwanie rekordów bardzo łatwo trafia do pętli.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Przykład:&lt;/p&gt; 
  &lt;div style="margin: 28px 0; padding: 28px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.34); border-radius: 16px; box-shadow: 0 16px 36px rgba(6,1,41,0.16); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 24px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Dla każdego zamówienia&lt;/p&gt; 
   &lt;table style="width: 100%; border-collapse: collapse; margin: 0; font-family: inherit;"&gt; 
    &lt;tbody&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: #286CFF; border: none; color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        01
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Kontakt&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wyszukaj rekord po adresie e-mail&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        02
       &lt;/div&gt; 
       &lt;div style="width: 2px; height: 42px; margin: 7px 0 7px 18px; background: rgba(142,164,255,0.26); border-radius: 2px;"&gt;
        &amp;nbsp;
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Firma&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wyszukaj rekord po NIP&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
     &lt;tr&gt; 
      &lt;td style="width: 56px; vertical-align: top; padding: 0;"&gt; 
       &lt;div style="width: 38px; height: 38px; line-height: 38px; text-align: center; border-radius: 50%; background: rgba(40,108,255,0.18); border: 1px solid rgba(142,164,255,0.5); color: #ffffff; font-size: 12px; font-weight: bold; box-sizing: border-box; font-family: inherit;"&gt;
        03
       &lt;/div&gt; &lt;/td&gt; 
      &lt;td style="vertical-align: top; padding: 5px 0 20px 0;"&gt; &lt;p style="margin: 0 0 4px; color: #ffffff; font-size: 16px; line-height: 1.45; font-family: inherit;"&gt;&lt;strong&gt;Deal&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0; color: #aeb7cf; font-size: 14px; line-height: 1.55; font-family: inherit;"&gt;wyszukaj odpowiednią transakcję&lt;/p&gt; &lt;/td&gt; 
     &lt;/tr&gt; 
    &lt;/tbody&gt; 
   &lt;/table&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Przy większym imporcie szybko może okazać się, że to właśnie Search API, a nie ogólny limit konta, jest pierwszym wąskim gardłem.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Dlatego architektura integracji powinna uwzględniać &lt;strong&gt;limity konkretnych endpointów&lt;/strong&gt;, a nie tylko globalny limit HubSpot.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy zwiększenie limitu HubSpot API rozwiązuje problem?&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Czasami tak.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot oferuje możliwość zwiększenia dostępnych limitów API.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Ale zakup większego limitu nie powinien być pierwszą reakcją.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Jeżeli aplikacja wykonuje 500 000 requestów, z których 300 000 jest niepotrzebnych, większy limit nie naprawia architektury.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Pozwala jej tylko dłużej działać w nieefektywny sposób.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Zanim zwiększymy limit, warto sprawdzić:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy można zastosować batch API,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy nie odpytujemy ciągle tych samych danych,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy możemy zastosować cache,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy polling można zastąpić webhookami,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy wszystkie requesty są naprawdę potrzebne,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;czy integracje nie wykonują tej samej pracy niezależnie od siebie.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;Dopiero później warto analizować zwiększenie dostępnej przepustowości.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Monitoring HubSpot API powinien być częścią integracji&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dobrze zaprojektowana integracja nie czeka na moment, w którym biznes zauważy problem.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;HubSpot zwraca między innymi nagłówki pozwalające kontrolować dostępny limit:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 26px; padding: 24px 26px; background: linear-gradient(135deg,#0B0642 0%,#060129 100%); border: 1px solid rgba(40,108,255,0.32); border-radius: 14px; box-shadow: 0 14px 32px rgba(6,1,41,0.14); box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0 0 16px; font-size: 12px; line-height: 1.4; letter-spacing: 0.12em; text-transform: uppercase; color: #8ea4ff; font-family: inherit;"&gt;Nagłówki limitów&lt;/p&gt; 
   &lt;p style="margin: 0; color: #ffffff; font-size: 14px; line-height: 1.9; font-family: inherit;"&gt;&lt;strong&gt;X-HubSpot-RateLimit-Max&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;X-HubSpot-RateLimit-Remaining&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;X-HubSpot-RateLimit-Interval-Milliseconds&lt;/strong&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można dzięki nim kontrolować, ile zapytań pozostało w aktualnym oknie czasowym.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;HubSpot udostępnia również monitoring wykorzystania API bezpośrednio w platformie.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Dzięki temu można obserwować trendy, wykrywać nietypowe skoki wykorzystania i reagować &lt;strong&gt;zanim integracje zaczną otrzymywać błędy 429&lt;/strong&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 14px; font-family: inherit;"&gt;Bo jeżeli o przekroczeniu limitu dowiadujemy się od handlowca, który mówi:&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;&lt;em&gt;„Od rana nie aktualizują mi się deale.”&lt;/em&gt;&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0; font-family: inherit;"&gt;to monitoring zadziałał zdecydowanie za późno.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding: 34px 30px; background: #E9EDF8; border: 1px solid #DCE2EC; border-radius: 16px; box-shadow: 0 12px 30px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Rate limiting to nie problem API, tylko architektury.&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Limitów nie da się całkowicie wyeliminować.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można natomiast zaprojektować system tak, aby użytkownik praktycznie ich nie zauważał.&lt;/p&gt; 
  &lt;p style="margin: 0 0 16px; font-family: inherit;"&gt;Dobra integracja HubSpot powinna posiadać:&lt;/p&gt; 
  &lt;div style="margin: 22px 0 28px; padding: 22px 26px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 8px 24px rgba(6,1,41,0.05); box-sizing: border-box;"&gt; 
   &lt;ul style="margin: 0; padding-left: 22px;"&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;kontrolę tempa wysyłania requestów,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;obsługę błędów 429,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;retry z exponential backoff,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;kolejkę zadań,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mechanizm idempotencji,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;monitoring,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;cache,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;wykorzystanie endpointów batchowych,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;webhooki tam, gdzie jest to uzasadnione,&lt;/li&gt; 
    &lt;li style="margin: 7px 0; font-family: inherit;"&gt;mechanizm odzyskiwania zadań, które nie zostały wykonane.&lt;/li&gt; 
   &lt;/ul&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Wtedy chwilowe przekroczenie limitu nie zatrzymuje procesu.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Zadanie trafia do kolejki, system zwalnia, wykonuje je ponownie i kontynuuje pracę.&lt;/p&gt; 
  &lt;p style="margin: 24px 0 0; font-size: 19px; font-family: inherit; padding-top: 22px; border-top: 1px solid #DCE2EC; line-height: 1.65;"&gt;&lt;strong&gt;Bez Excela. Bez ręcznego poprawiania danych. Bez osoby sprawdzającej codziennie rano, czy „integracja nadal działa”.&lt;/strong&gt;&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Integracja HubSpot powinna skalować się razem z biznesem&lt;/h2&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Integrację można zbudować tak, aby działała dzisiaj.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Można też zaprojektować ją tak, aby nadal działała wtedy, gdy liczba klientów, transakcji i automatyzacji wzrośnie pięciokrotnie.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 19px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;To dwie zupełnie różne rzeczy.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;W Velmanta projektujemy integracje HubSpot jako część całej architektury procesów firmy.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Analizujemy nie tylko &lt;em&gt;jak połączyć system A z systemem B&lt;/em&gt;, ale przede wszystkim &lt;em&gt;jak dane mają przepływać przez organizację, żeby proces działał stabilnie również wtedy, gdy firma zwiększy skalę&lt;/em&gt;.&lt;/p&gt; 
  &lt;p style="margin: 0 0 18px; font-family: inherit;"&gt;Bo dobrze zaprojektowane API powinno być niewidoczne.&lt;/p&gt; 
  &lt;div style="margin: 24px 0; padding: 22px 26px; background: #E8EDFF; border-left: 3px solid #286CFF; border-radius: 0 12px 12px 0; box-sizing: border-box;"&gt; 
   &lt;p style="margin: 0; font-size: 17px; line-height: 1.65; font-family: inherit; color: #1f2437;"&gt;Dane po prostu trafiają tam, gdzie powinny. Procesy wykonują się automatycznie. A technologia wspiera ludzi zamiast tworzyć kolejne miejsce, którego ktoś musi pilnować.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
 &lt;div style="margin: 0 0 60px; padding-top: 44px; border-top: 1px solid #DCE2EC; box-sizing: border-box;"&gt; 
  &lt;div style="width: 46px; height: 3px; background: #286CFF; border-radius: 10px; margin: 0 0 18px;"&gt;
   &amp;nbsp;
  &lt;/div&gt; 
  &lt;h2 style="margin: 0 0 26px; font-size: 30px; line-height: 1.25; letter-spacing: -0.025em; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Najczęściej zadawane pytania o limity HubSpot API&lt;/h2&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Co oznacza błąd 429 w HubSpot?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Błąd &lt;strong&gt;429 Too Many Requests&lt;/strong&gt; oznacza, że aplikacja przekroczyła dostępny limit wywołań API. Integracja powinna wtedy ograniczyć tempo requestów i ponowić operację zgodnie z odpowiednią strategią retry.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Ile requestów można wykonać do HubSpot API?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Limit zależy od planu HubSpot, rodzaju aplikacji oraz dostępnych rozszerzeń. Dla prywatnie dystrybuowanych aplikacji limity krótkookresowe i dzienne różnią się w zależności od posiadanej wersji HubSpot.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Jak uniknąć błędu 429 w HubSpot?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Najczęściej stosuje się rate limiting po stronie aplikacji, kolejki zadań, retry z exponential backoff, batch API, cache oraz webhooki zamiast nadmiernego pollingu.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy HubSpot Search API ma osobny limit?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Tak. CRM Search API posiada własne ograniczenia i dlatego przy większych synchronizacjach powinno być traktowane osobno od ogólnych limitów API HubSpot.&lt;/p&gt; 
  &lt;/div&gt; 
  &lt;div style="margin: 0 0 14px; padding: 23px 25px; background: #FFFFFF; border: 1px solid #DCE2EC; border-radius: 12px; box-shadow: 0 6px 18px rgba(6,1,41,0.04); box-sizing: border-box;"&gt; 
   &lt;h3 style="margin: 0 0 10px; font-size: 19px; line-height: 1.4; color: #1f2437; font-weight: bold; font-family: inherit;"&gt;Czy można zwiększyć limit HubSpot API?&lt;/h3&gt; 
   &lt;p style="margin: 0; font-family: inherit;"&gt;Tak, HubSpot oferuje możliwość zwiększenia dostępnych limitów. Zanim jednak zwiększymy limit, warto najpierw sprawdzić, czy integracja nie wykonuje zbędnych lub powtarzających się requestów.&lt;/p&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt;  
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=146469830&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.velmanta.com%2Fblog%2Fhubspot-api-limity-rate-limiting&amp;amp;bu=https%253A%252F%252Fwww.velmanta.com%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>CRM</category>
      <category>HubSpot</category>
      <category>Technologia</category>
      <pubDate>Sat, 12 Sep 2026 21:06:47 GMT</pubDate>
      <guid>https://www.velmanta.com/blog/hubspot-api-limity-rate-limiting</guid>
      <dc:date>2026-09-12T21:06:47Z</dc:date>
      <dc:creator>Zespół Velmanta</dc:creator>
    </item>
    <item>
      <title>Co to jest CRM i dlaczego jest on potrzebny w firmach?</title>
      <link>https://www.velmanta.com/blog/co-to-jest-crm-i-dlaczego-jest-on-potrzebny-w-firmach</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://www.velmanta.com/blog/co-to-jest-crm-i-dlaczego-jest-on-potrzebny-w-firmach?hsLang=pl" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.velmanta.com/hubfs/pexels-negativespace-34069.jpg" alt="Co to jest CRM i dlaczego jest on potrzebny w firmach?" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;span&gt;Jeszcze dekadę temu system CRM (Customer Relationship Management) kojarzył się głównie z tabelą pełną kontaktów i notatek ze spotkań handlowców. Służył do tego, by pamiętać, kto, kiedy i o czym rozmawiał z potencjalnym klientem. Był przydatny, ale mocno ograniczony - jego rola kończyła się tam, gdzie zaczynał się marketing, sprzedaż czy obsługa posprzedażowa. Z tego powodu do dziś wiele firm postrzega CRMy jako “droższego Excela” i lekceważy ich zalety.&lt;/span&gt;&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;span&gt;Jeszcze dekadę temu system CRM (Customer Relationship Management) kojarzył się głównie z tabelą pełną kontaktów i notatek ze spotkań handlowców. Służył do tego, by pamiętać, kto, kiedy i o czym rozmawiał z potencjalnym klientem. Był przydatny, ale mocno ograniczony - jego rola kończyła się tam, gdzie zaczynał się marketing, sprzedaż czy obsługa posprzedażowa. Z tego powodu do dziś wiele firm postrzega CRMy jako “droższego Excela” i lekceważy ich zalety.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;Tymczasem dziś CRM wygląda zupełnie inaczej. Dobrze skonfigurowany system może z powodzeniem służyć jako centrum dowodzenia całego biznesu. Nowoczesne platformy CRM integrują się z dziesiątkami zewnętrznych systemów: pocztą, kalendarzem, e‑commerce, mediami społecznościowymi, marketing automation, systemami księgowymi i oczywiście modelami LLM. Dzięki temu systemy takie jak HubSpot czy Salesforce są miejscem, w którym zbiegają się najważniejsze procesy firmy.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span&gt;Od prostego narzędzia do zintegrowanego ekosystemu&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span&gt;Dzisiejszy CRM jest kombajnem analityczno-operacyjnym. Zbiera dane z wielu kanałów, łączy je w jednym profilu klienta i pozwala przekształcić surowe informacje w realne decyzje.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;Handlowiec widzi historię kontaktu, ale też to, które mailingi klient otworzył, jakie produkty przeglądał w sklepie i czy kliknął w najnowszą ofertę z reklamy. Marketer może mierzyć skuteczność kampanii w czasie rzeczywistym i natychmiast reagować na spadki zaangażowania. Specjalista z działu obsługi klienta widzi historię zgłoszeń klienta na support i jest w stanie już przed pierwszym kontaktem lepiej przygotować się do rozmowy z klientem.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;Wszystko to dzieje się w jednym miejscu. W efekcie CRM nie jest już wsparciem działu sprzedaży, lecz systemem nerwowym całej organizacji. Łączy marketing, sprzedaż, obsługę klienta, a przy wsparciu odpowiedniego partnera technologicznego także logistykę czy finanse.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span&gt;Dlaczego firmy nie powinny dziś obyć się bez CRMa?&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span&gt;Biznesy, które nie korzystają z CRM‑u, działają po omacku: dane o klientach są porozrzucane po różnych systemach i arkuszach, przez co komunikacja jest niespójna, a działania trudne do zmierzenia. Nowoczesny CRM eliminuje te bariery, tworząc jedno źródło prawdy o kliencie i jego ścieżce zakupowej.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;Dzięki automatyzacji przypomnień, raportów czy segmentacji, organizacja staje się znacznie bardziej efektywna. Osoby decyzyjne lepiej rozumieją, które kampanie i które działania przynoszą największy zwrot, gdzie uciekają leady i jakie procesy prowadzą do konwersji. CRM służy więc nie jako proste archiwum relacji firma-klient czy firma-prospekt, lecz system strategicznego zarządzania wzrostem.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span&gt;Raportowanie w CRM, czyli menedżer trzymający rekę na pulsie&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span&gt;Jedną z najmocniejszych stron nowoczesnych systemów CRM jest rozbudowany moduł raportowania. Jako że CRM gromadzi dane z wielu źródeł – kampanii reklamowych, e‑maili, rozmów handlowych czy formularzy kontaktowych – i przekształca je w czytelne dashboardy, które pokazują, jak naprawdę działa firma. Widać więc, które leady generują największy przychód, jakie etapy lejka sprzedażowego są wąskim gardłem procesu, a nawet jak efektywnie pracują poszczególni handlowcy.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;Raportowanie w CRM nie ogranicza się jednak do sprzedaży. Oprzyjmy się na przykładzie HubSpota: system pozwala analizować skuteczność kampanii marketingowych, porównywać źródła ruchu czy dzięki ankietom NPS badać poziom satysfakcji klientów.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;W efekcie HubSpot i inne systemy to narzędzie strategicznego raportowania, które pozwala patrzeć na organizację nie tylko z perspektywy liczb, ale przede wszystkim procesów. Każdy raport to realna wskazówka: co działa, a co wymaga poprawy. To jednocześnie doskonałe narzędzie dla osób na menedżerskich stanowiskach, by dzięki technologii zachować kontrolę w czasie rzeczywistym nad pracą swoich zespołów - a to wszystko nieinwazyjnie dzieje się w tle.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span&gt;Mądre użycie AI w CRM to przewaga konkurencyjna&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span&gt;Właściwie wybrany i skonfigurowany CRM jest gotowy na kolejny krok w rozwoju organizacji, czyli skorzystanie z potencjału sztucznej inteligencji. Jednym z najpopularniejszych use case’ów jest zaprzęgnięcie AI do analizy rozmów handlowców czy opiekunów z klientami – zarówno tych prowadzonych przez czat czy e‑mail, jak i (przy integracji z centralkami) tych telefonicznych. System automatycznie rozpoznaje strukturę rozmowy, porównuje ją ze wzorcem skryptu sprzedażowego i wskazuje, gdzie handlowiec zszedł z właściwego toru lub ominął kluczowy element komunikacji.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;Dla szefów sprzedaży to ogromna przewaga, realnie oszczędzająca dziesiątki godzin. Zamiast ręcznego odsłuchiwania rozmów, otrzymują oni konkretne dane - procent zrealizowania skryptu, zgodność tonu wypowiedzi z rekomendowanym stylem oraz wskazówki, jak poprawić skuteczność kontaktu. AI działa jak trener, który nie tylko ocenia, ale też uczy, jak rozmawiać lepiej i skuteczniej.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span&gt;Porządek, dane, rozwój – trzy powody, dla których organizacja potrzebuje CRM&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span&gt;CRM jest dziś uznawany za biznesową konieczność, niezależnie od tego, czy firma chce w pełni skorzystać z mocy sztucznej inteligencji, czy po prostu powoli uporządkować i zcyfryzować swoje procesy.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span&gt;CRM, taki jak HubSpot, daje realną, a nie tylko deklaratywną kontrolę nad działaniami firmy. Dlatego niezależnie od rozmiaru biznesu i ambicji technologicznych, CRM to fundament, na którym warto budować współczesną organizację.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span&gt;Konsultuj CRM z najlepszymi&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span&gt;Umów się z naszym ekspertem na bezpłatną konsultację i w pełni wykorzystaj technologiczne możliwości w Twoim biznesie.&lt;/span&gt;&lt;/p&gt;  
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=146469830&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.velmanta.com%2Fblog%2Fco-to-jest-crm-i-dlaczego-jest-on-potrzebny-w-firmach&amp;amp;bu=https%253A%252F%252Fwww.velmanta.com%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>CRM</category>
      <category>Raporty w HubSpot</category>
      <pubDate>Thu, 20 Aug 2026 13:43:56 GMT</pubDate>
      <guid>https://www.velmanta.com/blog/co-to-jest-crm-i-dlaczego-jest-on-potrzebny-w-firmach</guid>
      <dc:date>2026-08-20T13:43:56Z</dc:date>
      <dc:creator>Zespół Velmanta</dc:creator>
    </item>
    <item>
      <title>Zastosowania CRM w różnych działach firmy – przykłady i korzyści</title>
      <link>https://www.velmanta.com/blog/zastosowania-crm-w-r%C3%B3%C5%BCnych-dzia%C5%82ach-firmy-przyk%C5%82ady-i-korzy%C5%9Bci</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://www.velmanta.com/blog/zastosowania-crm-w-r%C3%B3%C5%BCnych-dzia%C5%82ach-firmy-przyk%C5%82ady-i-korzy%C5%9Bci?hsLang=pl" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.velmanta.com/hubfs/konkapo-crm-10207454_1920.jpg" alt="Zastosowania CRM w różnych działach firmy – przykłady i korzyści" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;W nowoczesnych organizacjach, niezależnie od ich skali, system CRM stanowi centralny punkt wymiany danych pomiędzy działami. Dzięki temu osobne części firmy, które wcześniej funkcjonowały w oderwaniu od siebie, pracują na wspólny cel dzięki spójnym danym. Narzędzia takie jak HubSpot pokazują, że CRM to nie tylko baza kontaktów, lecz cała zautomatyzowana infrastruktura współpracy.&lt;/span&gt;&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;span style="color: #ffffff;"&gt;W nowoczesnych organizacjach, niezależnie od ich skali, system CRM stanowi centralny punkt wymiany danych pomiędzy działami. Dzięki temu osobne części firmy, które wcześniej funkcjonowały w oderwaniu od siebie, pracują na wspólny cel dzięki spójnym danym. Narzędzia takie jak HubSpot pokazują, że CRM to nie tylko baza kontaktów, lecz cała zautomatyzowana infrastruktura współpracy.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span style="color: #ffffff;"&gt;Dział sprzedaży – kontrola procesu i priorytetyzacja leadów&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;W praktyce sprzedażowej CRM jest narzędziem do realizacji procesów krok po kroku. Handlowiec nie działa już w oparciu o porozrzucane w różnych miejscach notatki i arkusze, lecz o jasny przepływ etapów. Ten może wyglądać różnie w zależności od konkretnej organizacji, jednak najczęściej jest to wersja oparta o poniższy schemat: &lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;pozyskanie leada → kwalifikacja → prezentacja → oferta → negocjacje → zamknięcie.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;We właściwie skonfigurowanym module sprzedażowym HubSpota każdy lead trafia do systemu z pełnym kontekstem źródła. Wiadomo więc, czy kontakt pojawił się w bazie jako formularz z kampanii, rozmowa telefoniczna czy zapytanie z chatbota na stronie. CRM może automatycznie przypisywać go do odpowiedniego handlowca, ustawiać status i uruchamiać całą serię działań - np. przypomnienieć handlowcowi w formie zadania o follow-upie po 48 godzinach lub na podstawie przekazanych danych wysłać spersonalizowanego maila z ofertą PDF.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Dzięki temu dział sprzedaży nie tylko reaguje szybciej i w bardziej skoordynowany sposób, ale też potrafi analizować, który etap lejka generuje najwięcej strat. Gdy w raportach systemu widać, że 40% szans ginie między „prezentacją” a „ofertą”, może to oznaczać, że czas na szkolenia dla handlowców lub zmiany w sposobie przedstawiania produktów.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span style="color: #ffffff;"&gt;Marketing - integracja danych i inteligentne kampanie&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Dla zespołów marketingowych CRM to źródło prawdziwych insightów. System synchronizuje dane o klientach z kampanii mailingowych, PPC oraz wejść organicznych, dając pełny obraz skuteczności działań. Dzięki temu marketerzy budują segmentację opartą na rzeczywistym zachowaniu użytkownika, a nie tylko na deklaratywnych danych i swojej intuicji.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;HubSpot, łącząc CRM z narzędziami marketing automation, umożliwia automatyczne tagowanie kontaktów, dynamiczne personalizowanie komunikacji oraz raportowanie zwrotu z kampanii na poziomie konkretnego kontaktu. A to umożliwia przełamanie jednego z fundamentalnych wyzwań współczesnego biznesu, czyli sprawienie, że strategia marketingowa staje się mierzalna.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span style="color: #ffffff;"&gt;Obsługa klienta - ciągłość relacji i szybkie rozwiązywanie problemów&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;CRM w dziale obsługi klienta nie tylko rejestruje zgłoszenia i wiadomości i reaguje na nie w czasie rzeczywistym, ale tworzy spójne doświadczenie klienta. Dzięki rozbudowanej historii kontaktu każdy konsultant widzi pełny kontekst - czyli co klient kupił, jakie problemy zgłaszał wcześniej i jakie inne tickety są obecnie w trakcie rozwiązywania.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Wdrożenie HubSpot Service Hub pozwala tworzyć bazy wiedzy, kolejki ticketów i automatyczne powiadomienia. Usprawnia to przepływ informacji między działami - gdy support skutecznie rozwiązuje problem klienta, marketing może natychmiast zaplanować zaplanować działania podtrzymujące zaangażowanie klienta, takie jak follow-up z podziękowaniem i oferta dodatkowej usługi, a sprzedaż widzi, że klient jest aktywny i pozytywnie reaguje.&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span style="color: #ffffff;"&gt;Zarząd i management – realna analiza efektywności w czasie rzeczywistym&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Z perspektywy zarządu organizacji CRM służy jako narzędziem weryfikujące, czy firma realizuje procesy zgodnie z ustalonymi KPI. W HubSpot można tworzyć dashboardy raportujące każdą wartość agregowaną przez system - a więc &lt;a href="http://m.in" style="color: #ffffff;"&gt;&lt;u&gt;m.in&lt;/u&gt;&lt;/a&gt;. wskaźniki sprzedaży, konwersji czy satysfakcji klientów.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Ale to dopiero początek - po zastosowaniu integracji CRM z zewnętrznymi systemami, takimi jak centralka telefoniczna i modele AI, można zbadać na przykład liczbę i jakość rozmów odbywanych przez handlowców - a to wszystko w formie czytelnych raportów. Integracje mogą obejmować także kampanie PPC, dzięki czemu nie trzeba logować się do osobnego panelu, by widzieć wyniki osiągane przez agencję obsługującą kampanie Google Ads - wszystkie dane są “na żywo” kopiowane do CRMa.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Dzięki temu organizacja działa na danych bieżących, a nie na raportach z poprzedniego kwartału, Co więcej, automatyzacje w CRM sprawiają, że ten staje się działającym systemem wczesnego ostrzegania. Przykładowo jeśli wskaźnik zamknięcia transakcji spadnie poniżej określonego progu lub wzrośnie liczba zgłoszeń serwisowych w danym segmencie, CRM natychmiast poinformuje managera o potrzebie reakcji.&lt;/span&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;span style="color: #ffffff;"&gt;Przykłady raportów sprzedażowych w HubSpot&lt;/span&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Liczba nowych transakcji w danym okresie, średnia wartość deala, tempo zamykania transakcji, konwersja z leada do klienta, rankingi najlepszych handlowców, prognoza przychodów, zgodność rozmów handlowców ze skryptem.&lt;/span&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;span style="color: #ffffff;"&gt;Przykłady raportów marketingowych w HubSpot&lt;/span&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Koszt pozyskania leada (CAC), współczynnik konwersji kampanii e-mailowych i PPC, źródła ruchu generujące najwięcej klientów, ROI działań marketingowych.&lt;/span&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;span style="color: #ffffff;"&gt;Przykłady raportów serwisowych w HubSpot&lt;/span&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Średni czas odpowiedzi na zgłoszenie, liczba otwartych ticketów, poziom satysfakcji (CSAT), wynik Net Promoter Score (NPS).&lt;/span&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;span style="color: #ffffff;"&gt;Wdrożenie CRM z ekspertami&lt;/span&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="color: #ffffff;"&gt;Potrzebujesz konsultacji? Sprawdzimy, w jaki sposób HubSpot może realnie wesprzeć rozwój twojego biznesu. Przeanalizujemy obecne procesy, zmapujemy obszary wymagające optymalizacji i pokażemy, jak CRM może stać się narzędziem wzrostu całej organizacji.&lt;/span&gt;&lt;/p&gt;  
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=146469830&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.velmanta.com%2Fblog%2Fzastosowania-crm-w-r%C3%B3%C5%BCnych-dzia%C5%82ach-firmy-przyk%C5%82ady-i-korzy%C5%9Bci&amp;amp;bu=https%253A%252F%252Fwww.velmanta.com%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>CRM</category>
      <category>HubSpot</category>
      <category>Raporty w HubSpot</category>
      <pubDate>Thu, 20 Aug 2026 13:34:55 GMT</pubDate>
      <guid>https://www.velmanta.com/blog/zastosowania-crm-w-r%C3%B3%C5%BCnych-dzia%C5%82ach-firmy-przyk%C5%82ady-i-korzy%C5%9Bci</guid>
      <dc:date>2026-08-20T13:34:55Z</dc:date>
      <dc:creator>Zespół Velmanta</dc:creator>
    </item>
  </channel>
</rss>
