- Joined
- Jul 15, 2026
- Messages
- 1
- Reaction score
- 0
Hi all,
We've been running the official HubSpot CRM integration template on 3CX Versión 20.0 Update 9 (Build 995 Release - AI 1.4.48) for several months without issues. Since 29/06 we've seen a massive, daily volume of `Integration.Crm.Engine.TooManyRequestsException` errors in the Management Console logs — thousands per day (peak of 2,200+/day) — which we believe are also causing thread/connection buildup in the CRM engine that has led to full telephony outages on 09/07, 10/07 and 14/07 (calls stopped working PBX-wide, not just CRM lookups failing gracefully).
**What we've found so far:**
1. Our template sets `<Connection MaxConcurrentRequests="2" />`. Per the XML template documentation(https://www.3cx.com/docs/crm-template-xml-description/), this is defined as *"a number lookup for a single call"* — so it's unclear whether this setting has any effect at all on the `SearchContacts_*` scenarios (the manual/live search feature), as opposed to the call-identification lookup scenarios.
2. HubSpot's Search API (`/crm/v3/objects/{object}/search`) is rate limited to 5 requests/second **per account**, combined across all search endpoints (documented [here](https://developers.hubspot.com/docs/api-reference/latest/crm/search-the-crm#limits)).
3. Our template includes three `SearchContacts_*` scenarios (matching by phone/email, by name/company, and companies by phone/name) that back the client's manual "search contacts" box. These fire on every keystroke (incremental search: `6` → `64` → `645`...), with no debounce or minimum-character-count mechanism exposed anywhere in the CRM XML template schema. If all three scenarios fire per keystroke (per the doc's note that multiple scenarios of the same type are executed and concatenated), a single search action can generate 3 simultaneous HubSpot Search API calls per character typed — trivially exceeding the 5 req/s account limit with only moderate concurrent usage.
4. Failed (429) requests appear to leave threads/connections in a bad state in the 3CX CRM engine rather than failing gracefully, which is what's actually crashing our telephony — a 429 from an external API should never be able to take down the phone system.
**We've found the same underlying exception reported for other CRMs** (Zoho: [thread](https://www.3cx.com/community/threads/zoho-crm-and-3cx-v20.123988/), Freshsales), and a near-identical unresolved report for HubSpot on the [HubSpot Community forum](https://community.hubspot.com/t/3cx-integration-reponse-429/124906) — so this doesn't look like an isolated misconfiguration on our end, but rather a structural gap in the CRM Integration engine: `MaxConcurrentRequests` throttles concurrency, not request rate, and there's no way in the template schema to add real rate limiting or debounce to the live search feature.
**Our questions for 3CX support / the community:**
1. Does `MaxConcurrentRequests` apply to `SearchContacts_*` scenarios at all, or only to the call-lookup-by-number flow? The documentation's wording ("a number lookup for a single call") suggests it may not apply to search scenarios.
2. Is there a way — inside or outside the XML template (e.g. a Management Console setting) — to add a minimum character count or debounce delay to the live contact search box, so it doesn't fire a request on every keystroke?
3. Is CRM-to-phonebook contact synchronization (mentioned in [this older thread](https://www.3cx.com/community/threads/contact-search-not-available-in-latest-crm-wizard.123102/)) available for the HubSpot template as an alternative to live search queries?
4. Regardless of the rate-limit root cause: is it expected behavior that a 429 response from the CRM leaves the engine's threads/connections in a bad state, to the point of affecting telephony PBX-wide? This seems like a resilience bug independent of which CRM is on the other end.
Thanks in advance.
We've been running the official HubSpot CRM integration template on 3CX Versión 20.0 Update 9 (Build 995 Release - AI 1.4.48) for several months without issues. Since 29/06 we've seen a massive, daily volume of `Integration.Crm.Engine.TooManyRequestsException` errors in the Management Console logs — thousands per day (peak of 2,200+/day) — which we believe are also causing thread/connection buildup in the CRM engine that has led to full telephony outages on 09/07, 10/07 and 14/07 (calls stopped working PBX-wide, not just CRM lookups failing gracefully).
**What we've found so far:**
1. Our template sets `<Connection MaxConcurrentRequests="2" />`. Per the XML template documentation(https://www.3cx.com/docs/crm-template-xml-description/), this is defined as *"a number lookup for a single call"* — so it's unclear whether this setting has any effect at all on the `SearchContacts_*` scenarios (the manual/live search feature), as opposed to the call-identification lookup scenarios.
2. HubSpot's Search API (`/crm/v3/objects/{object}/search`) is rate limited to 5 requests/second **per account**, combined across all search endpoints (documented [here](https://developers.hubspot.com/docs/api-reference/latest/crm/search-the-crm#limits)).
3. Our template includes three `SearchContacts_*` scenarios (matching by phone/email, by name/company, and companies by phone/name) that back the client's manual "search contacts" box. These fire on every keystroke (incremental search: `6` → `64` → `645`...), with no debounce or minimum-character-count mechanism exposed anywhere in the CRM XML template schema. If all three scenarios fire per keystroke (per the doc's note that multiple scenarios of the same type are executed and concatenated), a single search action can generate 3 simultaneous HubSpot Search API calls per character typed — trivially exceeding the 5 req/s account limit with only moderate concurrent usage.
4. Failed (429) requests appear to leave threads/connections in a bad state in the 3CX CRM engine rather than failing gracefully, which is what's actually crashing our telephony — a 429 from an external API should never be able to take down the phone system.
**We've found the same underlying exception reported for other CRMs** (Zoho: [thread](https://www.3cx.com/community/threads/zoho-crm-and-3cx-v20.123988/), Freshsales), and a near-identical unresolved report for HubSpot on the [HubSpot Community forum](https://community.hubspot.com/t/3cx-integration-reponse-429/124906) — so this doesn't look like an isolated misconfiguration on our end, but rather a structural gap in the CRM Integration engine: `MaxConcurrentRequests` throttles concurrency, not request rate, and there's no way in the template schema to add real rate limiting or debounce to the live search feature.
**Our questions for 3CX support / the community:**
1. Does `MaxConcurrentRequests` apply to `SearchContacts_*` scenarios at all, or only to the call-lookup-by-number flow? The documentation's wording ("a number lookup for a single call") suggests it may not apply to search scenarios.
2. Is there a way — inside or outside the XML template (e.g. a Management Console setting) — to add a minimum character count or debounce delay to the live contact search box, so it doesn't fire a request on every keystroke?
3. Is CRM-to-phonebook contact synchronization (mentioned in [this older thread](https://www.3cx.com/community/threads/contact-search-not-available-in-latest-crm-wizard.123102/)) available for the HubSpot template as an alternative to live search queries?
4. Regardless of the rate-limit root cause: is it expected behavior that a 429 response from the CRM leaves the engine's threads/connections in a bad state, to the point of affecting telephony PBX-wide? This seems like a resilience bug independent of which CRM is on the other end.
Thanks in advance.